1、单击此处编辑母版标题样式,编辑母版文本样式,第二级,第三级,第四级,第五级,2021/8/20,#,第,2,章,Hive,环境搭建,本章,主要介绍,Hive,运行环境的完整安装过程与详细配置方法,包括,Hive,安装及配置、,MySQL,安装及配置、,Hive,元数据配置、,Hive JDBC,连接及,Hive,常见属性配置等内容。这些内容是,Hive,正常运行的基础和保证。,2.1,Hive,安装及配置,章内分节,2.1.1 Hive,的安装模式,2.1.2 Hive,安装及配置过程,2.1.3 Hive,基本操作,2.2 MySQL,安装及配置,2.2.1 MySQL,安装包准备,2.2.
2、2 MySQL,服务器端安装,2.2.3 MySQL,客户端安装,2.3 Hive,元数据配置,2.3.1,驱动,复制,2.3.2,配置元数据到,MySQL,2.3.3,多终端启动,Hive,2.4 Hive JDBC,连接,2.4.1 HiveServer2,配置,2.4.2 HiveServer2,启动,2.4.3 Beeline,启动,2.4.4 HiveServer2,连接,2.5 Hive,常见属性配置,2.5.1 Hive,位置配置,2.5.2,信息显示配置,2.5.3,运行,日志信息配置,2.5.4 Hive,参数配置方式,2.1 Hive,安装及配置,Hive,是依赖于,Had
3、oop,集群的,因此在安装,Hive,之前,需要保证已经,搭建,好,Hadoop,集群环境。在这里假设,Hadoop,集群环境已经安装成功。,2.1.1 Hive,的安装模式,Hive,有,3,种安装模式,分别对应不同的应用场景。,元数据保存在内嵌的,Derby,数据库中,只允许一个会话连接。,Hive,嵌入模式有很大的局限性,只创建一个连接意味着同一时间只能有一个用户操作,Hive,数据仓库,所以嵌入模式用于演示。当尝试多个会话连接时会报错。,嵌入模式,使用关系型数据库(如,MySQL,)来存储元数据,是一种多用户的模式,支持多个用户的客户端连接同一个数据库。这里有一个前提条件,每个用户必须
4、要有对,MySQL,数据库的访问权利,即每个客户端使用者需要具有登录,MySQL,数据库的用户名和密码。,MySQL,数据库与,Hive,运行在同一台物理机器上。一般本地模式用于开发和测试。,本地模式,与本地模式一样,远程模式也会将元数据存储在,MySQL,数据库中,区别是远程模式可以将元数据存储在另一台物理机器上,也可以将元数据存储在另一种操作系统上。这种模式需要,Hive,安装目录下提供的,Beeline,和,HiveServer2,配合使用,将元数据作为一个单独的服务进行启动。各个用户的客户端通过,Beeline,来连接,连接之前无须知道数据库的登录密码。远程模式一般用于生产环境中,允许
5、多个连接是经常使用的模式。,远程模式,2.1.2 Hive,安装及配置过程,本书,Hive,版本使用,apache-hive-2.1.0-bin.tar.gz,安装包,该安装包可以直接从,Hive,官网下载。,下面来介绍,Hive,本地模式的安装及属性配置方法。,(,1,)目录创建,在,/opt,目录下创建,datas,、,software,目录,用于存放数据文件和安装软件:,hadoopSYNU:/opt$sudo mkdir datas,hadoopSYNU:/opt$sudo mkdir software,(,2,)目录权限修改,修改,datas,、,software,目录的所有者为用户
6、hadoop,:,hadoopSYNU:/opt$sudo chown hadoop:hadoop datas/software/,Hive,安装准备,Hive,安装及配置,(,1,)安装包导入,把,apache-hive-2.1.0-bin.tar.gz,安装包导入,Linux,系统本地的,/opt/software,目录下。,(,2,)解压,将安装包,apache-hive-2.1.0-bin.tar.gz,解压到,/usr/local/,目录下:,hadoopSYNU:/opt/software$tar-zxvf,apache-hive-2.1.0-bin.tar.gz-C/usr/l
7、ocal/,(,3,)修改名称,把,apache-hive-2.1.0-bin,的名称更改为,hive,:,hadoopSYNU:/usr/local/apache-hive-2.1.0-bin$mv,apache-hive-2.1.0-bin/hive,Hive,安装及配置,(,4,)查看,Hive,目录结构,hadoopSYNU:/usr/local/hive$ll,总用量,140,drwxr-xr-x 9 hadoop hadoop 4096 1,月,19 15:38./,drwxr-xr-x 20 root root 4096 11,月,5 2020./,drwxr-xr-x 3 ha
8、doop hadoop 4096 11,月,5 2020 bin/,drwxr-xr-x 2 hadoop hadoop 4096 1,月,23 13:49 conf/,-rw-rw-r-1 hadoop hadoop 0 1,月,19 15:38 derby.log,drwxr-xr-x 4 hadoop hadoop 4096 11,月,5 2020 examples/,drwxr-xr-x 7 hadoop hadoop 4096 11,月,5 2020 hcatalog/,drwxr-xr-x 2 hadoop hadoop 4096 11,月,5 2020 jdbc/,drwxr-x
9、r-x 4 hadoop hadoop 12288 1,月,20 16:04 lib/,-rw-r-r-1 hadoop hadoop 29003 6,月,3 2020 LICENSE,-rw-r-r-1 hadoop hadoop 513 6,月,3 2020 NOTICE,-rw-r-r-1 hadoop hadoop 4122 6,月,3 2020 README.txt,-rw-r-r-1 hadoop hadoop 50294 6,月,17 2020 RELEASE_NOTES.txt,drwxr-xr-x 4 hadoop hadoop 4096 11,月,5 2020 script
10、s/,Hive,安装及配置,(,5,)重要目录,bin,目录:存放,Hive,相关服务执行操作的脚本。,conf,目录:,Hive,的配置文件目录,存放,Hive,的配置文件。,lib,目录:存放,Hive,的各种依赖,JAR,包。,example,目录:存放,Hive,的文档和官方案例。,(,6,)配置环境变量,sudo vi/etc/profile,export HIVE_HOME=/usr/local/hive,export PATH=$PATH:$,HIVE_HOME/bin,source/etc/profile,Hive,安装及配置,(,7,)修改配置文件名称,把,/usr/loca
11、l/hive/conf,目录下的,hive-env.sh.template,名称更改为,hive-env.sh,:,hadoopSYNU:/usr/local/hive/conf$mv hive-env.sh.template hive-env.sh,(,8,)配置,hive-env.sh,文件,配置,HADOOP_HOME,路径:,export HADOOP_HOME=/usr/local/hadoop,配置,HIVE_CONF_DIR,路径:,export HIVE_CONF_DIR=/usr/local/hive/conf,Hadoop,集群目录创建,(,1,)启动,HDFS,和,YAR
12、N,hadoopSYNU:/usr/local/hadoop$sbin/start-dfs.sh,hadoopSYNU:/usr/local/hadoop$sbin/start-yarn.sh,(,2,)创建目录,在,HDFS,上创建,/tmp,和,/user/hive/warehouse,两个目录:,hadoopSYNU:/usr/local/hadoop$bin/hadoop fs-mkdir/tmp,hadoopSYNU:/usr/local/hadoop$bin/hadoop fs-mkdir-p /user/hive/warehouse,(,3,)修改同组权限为可执行权限,hadoo
13、pSYNU:/usr/local/hadoop$bin/hadoop fs-chmod g+w/tmp,hadoopSYNU:/usr/local/hadoop$bin/hadoop fs-chmod g+w/user/hive/warehouse,2.1.3 Hive,基本操作,(,1,)启动,Hive,hadoopSYNU:/usr/local/hive$bin/hive,(,2,)查看数据仓库,hive show databases;,(,3,)切换到默认(,default,)数据仓库,hive use default;,(,4,)显示,default,数据仓库中的表,hive show
14、 tables;,(,5,)在,default,数据仓库中创建一个表,hive create table test(id int,name string);,Hive,基本操作,(,6,)显示数据仓库中的表,hive show tables;,(,7,)查看表的结构,hive desc test;,(,8,)向表中插入数据,hive insert into test values(100,Doug);,(,9,)查询表中的数据,hive select*from test,;,(,10,)退出,Hive,hive quit;,2.2 MySQL,安装及配置,Hive,元数据默认存储在自带的,De
15、rby,数据库中。,Derby,数据库只支持单用户模式,不能并发调用,Hive,。而,MySQL,数据库存储元数据支持多用户模式,可以并发调用,Hive,,因此还需要安装,MySQL,。,2.2.1 MySQL,安装包准备,MySQL,安装包为,mysql-libs.zip,压缩文件。,(,1,)查看,MySQL,是否安装,如果安装了,则卸载,MySQL,rootSYNU,桌面,#rpm-qa|grep i mysql,mysql-libs-5.1.73-7.el6.x86_64,(,2,)解压安装包文件到,software,目录下,rootSYNU:/opt/software#unzip m
16、ysql-libs.zip,rootSYNU:/opt/software#ls,mysql-libs.zip,mysql-libs,MySQL,安装包准备,(,3,)进入,mysql-libs,目录查看目录结构,rootSYNU:/opt/software/mysql-libs#ll,总用量,76048,-rw-r-r-.1 root root 18509960 3,月,26 2015,MySQL-client-5.6.24-1.el6.x86_64.rpm,-rw-r-r-.1 root root 3575135 12,月,1 2013,mysql-connector-java-5.1.27
17、tar.gz,-rw-r-r-.1 root root 55782196 3,月,26 2015,MySQL-server-5.6.24-1.el6.x86_64.rpm,2.2.2 MySQL,服务器端安装,(,1,)安装,MySQL,服务器端,rootSYNU:/opt/software/mysql-libs#rpm ivh,MySQL-server-5.6.24-1.el6.x86_64.rpm,(,2,)查看产生的随机密码,rootSYNU:/opt/software/mysql-libs#cat/root/.mysql_secret,OEXaQuS8IWkG19Xs,(,3,)查看
18、MySQL,状态,rootSYNU:/opt/software/mysql-libs#service mysql status,(,4,)启动,MySQL,rootSYNU:/opt/software/mysql-libs#service mysql start,2.2.3 MySQL,客户端安装,(,1,)安装,MySQL,客户端,rootSYNU:/opt/software/mysql-libs#rpm-ivh,MySQL-client-5.6.24-1.el6.x86_64.rpm,(,2,)连接登录,MySQL,rootSYNU:/opt/software/mysql-libs#my
19、sql-uroot,-pOEXaQuS8IWkG19Xs,(,3,)修改密码,mysqlSET PASSWORD=PASSWORD(000000);,(,4,)退出,MySQL,mysqlexit;,2.3.1,驱动,复制,(,1,)解压,mysql-connector-java-5.1.27.tar.gz,驱动包,rootSYNU:/opt/software/mysql-libs#tar-zxvf,mysql-connector-java-5.1.27.tar.gz,(,2,)将解压的,JAR,包复制到,/usr/local/hive/lib/,目录下,rootSYNU mysql-conn
20、ector-java-5.1.27#cp,mysql-connector-java-5.1.27-bin.jar,/usr/local/hive/lib/,2.3.2,配置元数据到,MySQL,(,1,)在,/usr/local/hive/conf,目录下创建一个,hive-site.xml,文件,hadoopSYNU:/usr/local/hive/conf$touch hive-site.xml,hadoopSYNU:/usr/local/hive/conf$vi hive-site.xml,(,2,)将官方文档配置参数复制到,hive-site.xml,文件中,javax.jdo.opt
21、ion.ConnectionURL,jdbc:mysql:/localhost:3306/metastore?createDatabaseIfNotExist=,true,JDBC connect string for a JDBC metastore,javax.jdo.option.ConnectionDriverName,com.mysql.jdbc.Driver,2.3.2,配置元数据到,MySQL,Driver class name for a JDBC metastore,javax.jdo.option.ConnectionUserName,hive,username to us
22、e against metastore database,javax.jdo.option.ConnectionPassword,hive,password to use against metastore database,在该配置文件中,创建了名字为,metastore,的数据库用于存储元数据信息,并设置了登录,MySQL,数据库的用户名和密码,分别都是,hive,。,配置完毕后,,Hive,就可以正常启动。如果启动,Hive,异常,可以重新启动虚拟机,并启动,Hadoop,集群。,2.3.3,多终端启动,Hive,(,1,)启动,MySQL,hadoopSYNU:/opt/softwar
23、e/mysql-libs$mysql-uhive-phive,查看有几个数据库:,mysql show databases;,+-+,|Database|,+-+,|information_schema|,|mysql|,|performance_schema|,|test|,+-+,(,2,)打开多个终端,分别启动,Hive,hadoopSYNU:/usr/local/hive$,bin/hive,多,终端启动,Hive,(,3,)启动,Hive,后,回到,MySQL,窗口查看数据库,显示增加了,metastore,数据库,mysql show databases;,+-+,|Databas
24、e|,+-+,|information_schema|,|metastore|,|mysql|,|performance_schema|,|test|,+-+,2.4 Hive JDBC,连接,Hive,是大数据技术中数据仓库应用的基础组件,是其他类似数据仓库应用的对比基准。基础的数据操作可以通过脚本方式由,Hive,客户端进行处理,。,若要,开发应用程序,则需要使用,Hive,的,JDBC,驱动进行连接。,Hive,内置了,HiveServer,和,HiveServer2,服务器,两者都允许客户端使用多种编程语言进行连接,但是,HiveServer,不能处理多个客户端的并发请求,所以产生了,
25、HiveServer2,。,HiveServer2,允许远程客户端使用各种编程语言向,Hive,提交请求并检索结果,支持多客户端并发访问和身份验证,。,HiveServer2,拥有自己的,CLI,(,Beeline,)。,Beeline,是一个基于,SQLLine,的,JDBC,客户端。由于,HiveServer2,是,Hive,开发维护的重点,所以推荐使用,Beeline,。,2.4.1 HiveServer2,配置,切换到,/usr/local/hive/conf,目录下,修改,hive-site.xml,文件,写入以下配置信息:,hadoopSYNU:/usr/local/hive/co
26、nf$vim,hive-site.xml,hive.server2.thrift.port,10000,hive.server2.thrift.bind.host,localhost,该配置信息配置了,HiveServer2,的端口号和主机名。,2.4.2 HiveServer2,启动,经过以上配置后,就可以在,Beeline,中连接,Hive,了。,进入,Hive,的安装目录启动,HiveServer2,,执行以下两个命令都可以启动,HiveServer2,服务:,hadoopSYNU:/usr/local/hive$bin/hive-service hiveserver2,hadoopSY
27、NU:/usr/local/hive$bin/hiveserver2,2.4.3 Beeline,启动,hadoopSYNU:/usr/local/hive$bin/beeline,Beeline version 2.1.0 by Apache Hive,beeline,2.4.4 HiveServer2,连接,在,Beeline,中连接,HiveServer2,,输入如下命令:,beeline!connect jdbc:hive2:/localhost:10000,Connecting to jdbc:hive2:/localhost:10000,Enter username for jdb
28、c:hive2:/localhost:10000:hive,Enter password for jdbc:hive2:/localhost:10000:*,Connected to:Apache Hive(version 2.1.0),Driver:Hive JDBC(version 2.1.0),Transaction isolation:TRANSACTION_REPEATABLE_READ,0:jdbc:hive2:/localhost:10000 show databases;,+-+-+,|database_name|,+-+-+,|default|,+-+-+,此处输入的用户名及
29、密码是在配置文件,hive-site.xml,中设置的用户名和密码。,2.5.1 Hive,位置配置,Hive,数据仓库的默认存储位置是在,HDFS,的,/user/hive/warehouse,目录下。,在,HDFS,的,/user/hive/warehouse,目录下,没有为默认(,default,)数据仓库创建目录。如果某个表属于,default,数据仓库,直接在该目录下新创建一个目录。,修改,default,数据仓库存储位置,将,hive-default.xml.template,中如下配置信息复制到,hive-site.xml,文件中:,hive.metastore.warehous
30、e.dir,/user/hive/warehouse,location of default database for the warehouse,2.5.2,信息显示配置,在,hive-site.xml,文件中添加如下配置信息,可以显示查询表的头部信息及当前数据仓库:,hive.cli.print.header,true,hive.cli.print.current.db,true,重新启动,Hive,,对比配置前后的差异,可以看到在查询结果中增加了表头的字段信息,在命令行中增加了当前所在的数据仓库信息。,2.5.3,运行日志信息配置,Hive,的运行日志,log,默认存放在当前用户名下,例
31、如,/tmp/hadoop/hive.log,目录下,可以更改它的存放位置。,将,Hive,的运行日志,log,存放到,/usr/local/hive/logs,目录下。,修改,/usr/local/hive/conf/hive-log4j.properties.template,文件名为,hive-log4j.properties,:,hadoopSYNU:/,usr/local/hive/conf$mvhivelog4j.properties.template,hive-log4j.properties,在,hive-log4j.properties,文件中修改,log,存放位置:,hiv
32、e.log.dir=/usr/local/hive/logs,2.5.4 Hive,参数配置方式,使用,set,命令查看当前所有的配置信息,hive(hivedwh)set;,参数配置的,3,种方式,(,1,)配置文件方式,Hive,默认配置文件为,hive-default.xml,,用户自定义配置文件为,hive-site.xml,。,当然,用户自定义配置会覆盖默认配置,并且,Hive,也会读入,Hadoop,的配置信息,因为,Hive,是作为,Hadoop,的客户端启动的,所以,Hive,的配置会覆盖,Hadoop,的配置。配置文件的设定对本机启动的所有,Hive,进程都有效。,(,2,)
33、命令行参数方式,启动,Hive,时,可以在命令行添加,-hiveconf param=value,来设定参数。例如:,hadoopSYNU:/,usr/local/hive$bin/hive-hiveconf hive.cli.print.current.db,=true;,但这里仅对本次,Hive,启动有效。,查看参数设置:,hive(default)set hive.cli.print.current.db;,参数配置的,3,种方式,(,3,)参数声明方式,可以在命令行模式下使用,set,命令设定参数。例如:,hive(default)set hive.cli.print.current.db=true;,这里也仅对本次,Hive,启动有效。,查看参数设置:,hive(default)set hive.cli.print.current.db;,上述三种设定参数配置方式的优先级依次递增,即配置文件方式,命令行参数方式,参数声明方式。,






