疯狂Hive之Hivean安装部署与交互方式(一)

2020-07-01 00:00:00 路径 数据 数据库 命令 启动

Hive简介

什么是Hive

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。

本质是将SQL转换为MapReduce程序。

主要用途:用来做离线数据分析,比直接用MapReduce开发效率更高。


为什么使用Hive

当直接使用Hadoop MapReduce处理数据所面临的问题

人员学习成本高

MapReduce实现复杂查询逻辑开发难度大

使用Hive

操作接口采用类SQL语法,提供快速开发的能力

避免了去写MapReduce,减少开发人员的学习成本

功能扩展很方便


Hive组件

用户接口:包括CLI、JDBC/ODBC、WebCUI。其中,CLI(command line interface)为shell命令行;JDBC/ODBC是Hive的JAVA实现,与传统数据库JDBC类似;WebCUI是通过浏览器访问Hive

元数据存储:通常是存储在关系型数据库如mysql/derby中。Hive将元数据存储在数据库中。Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),标的数据所在目录等

解释器、编译器、优化器、执行器:完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后由MapReduce调用执行


Hive与Hadoop的关系:Hive利用HDFS存储数据,利用MapReduce查询分析数据


Hive与传统数据库对比

Hive用于海量数据的离线数据分析

Hive具有SQL数据库的外表,但是应用场景完全不同,Hive只适合用来做批量数据统计分析

更直观的对比请看下面这张图




Hive安装部署

Hive安装前需要安装好JDK和Hadoop。配置好环境变量

根据元数据存储的介质不同,分为下面两个版本,其中derby属于内嵌模式。实际生产环境中则使用mysql来进行元数据的存储


内置derby版

解压Hive安装包

bin/hive启动即可使用

缺点:不同路径启动Hive,每一个Hive拥有一套自己的元数据,无法共享

详细步骤:

1、上传Hive安装包





  1. 解压安装包

解压命令:tar -zxvf apache-hive-1.2.1-bin.tar.gz

  1. 进入解压包并启动derby版hive

进入启动命令所在目录:cd apache-hive-1.2.1-bin/bin/

启动derby版Hive命令:./hive



  1. Hive的使用

显示已存在的数据库名称

命令:show databases;




创建数据库

命令:create database gw;




在gw数据库中创建一张表t_user

使用数据库命令:use gw;

创建表命令:create table t_user(id int,username string,password string);




显示数据库中的表

命令:show tables;




注意:derby版元数据与启动路径有关系,如果启动的路径不同,那么就会创建新的元数据(元数据不共享),一般用于测试版使用


Mysql版

解压、修改配置文件

vi conf/hive-site.xml

配置Mysql元数据库信息

详细步骤:

1、上传Hive安装包





2、解压安装包

解压命令:tar -zxvf apache-hive-1.2.1-bin.tar.gz

  1. yum在线安装mysql数据库

安装命令:yum install mysql mysql-server mysql-devel

安装完成后启动mysql命令:/etc/init.d/mysqld start

进入mysql交互界面命令:mysql



设置mysql用户名与密码

use mysql;

update user set password=password('root') where user='root';

flush privileges;


设置mysql允许远程访问

grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;

flush privileges;

退出mysql命令:exit


查看mysql服务是否启动命令:service mysqld status



设置mysql服务开机启动命令:chkconfig mysqld on


  1. 修改Hive配置文件

进入配置文件所在目录:cd apache-hive-1.2.1-bin/conf/



配置hive-env.sh文件

拷贝hive-env.sh文件命令:cp hive-env.sh.template hive-env.sh

编辑文件:vi hive-env.sh

在hive-env.sh中需要配置hadoop的安装路径




配置hive-site.xml文件

因为文件不存在,所以创建一个hive-site.xml文件

创建命令:vi hive-site.xml

在该文件中编写如下内容

<configuration>

<property>

<name>javax.jdo.option.ConnectionURL</name>

<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>

</property>

<property>

<name>javax.jdo.option.ConnectionDriverName</name>

<value>com.mysql.jdbc.Driver</value>

</property>

<property>

<name>javax.jdo.option.ConnectionUserName</name>

<value>root</value>

</property>

<property>

<name>javax.jdo.option.ConnectionPassword</name>

<value>root</value>

</property>

</configuration>


添加mysql连接驱动

接下来需要将mysql连接驱动添加到hivean安装包的lib目录下

进入目录:cd apache-hive-1.2.1-bin/lib/

将以下jar包上传到该目录下





5、启动Hive

此时启动Hive,查看在不同路径下启动,元数据是否会共享

在apache-hive-1.2.1-bin路径下输入命令:bin/hive启动Hive,然后创建一个数据库hello,创建完成之后退出Hive



在apache-hive-1.2.1-bin/bin路径下输入命令:./hive启动Hive,查看是否存在hello数据库,如果存在,表示元数据已经共享




Hive的交互方式

方式一:Hive交互shell

此种交互方式就是启动Hive之后,输入一条命令,执行完成之后结果直接跟在后面打印出来。如:

在hello数据库中创建一张t_user表

使用数据库命令:use hello;

创建表命令:create table t_user(id int,username string,password string);




方式二:Hive启动一个服务器,来对外服务

此种方式适用于生产环境,Hive启动一个服务,其他机器可以通过某种方式连接到Hive上

  1. 启动Hive服务

在node01上启动Hive服务,在apache-hive-1.2.1-bin路径下启动服务命令为:bin/hiveserver2



此时Hive服务启动,并处于阻塞状态,等待其他机器连接


  1. 将Hive安装包发送到node02上

scp -r apache-hive-1.2.1-bin root@node02:/root/




  1. 客户端node02远程连接Hive服务

连接命令:bin/beeline



配置连接协议: ! connect jdbc:hive2://node01:10000

输入访问机器node01上Hive的用户名与密码,此时就能连接Hive服务



此时在node02上输入命令:show databases;



在node01上就会获取到监听内容,并输出OK(如果输入错误命令,在node01上 会打印相应的错误信息)


相关文章