Hive的搭建非常简单,只需要在任一节点搭建即可
如图所示,在大数据集群中搭建了hive的客户端,由于hive的数据源是hdfs分布式文件系统,所以hive必须是大数据集群中的一员。需要在hive节点中搭建hive和mysql,mysql用于存储hive的元数据
在slave3节点中操作:
一、安装mysql
这里采用yum安装,首先更新yum中的二进制安装包,因为centos7以及之后的版本中,yum工具不再提供对mysql的安装包支持,若是要用yum在线安装mysql,需先使用rpm命令更新yum安装库
1.将mysql yum库二进制文件上传到/app/
2.更新库文件:
[root@slave3 app]# cd /root/app
[root@slave3 app]# ls
hadoop-2.7.7 jdk1.8.0_202 mysql-community-release-el7-5.noarch.rpm Python-3.9.6
[root@slave3 app]# rpm -ivh mysql-community-release-el7-5.noarch.rpm
准备中... ################################# [100%]
正在升级/安装...
1:mysql-community-release-el7-5 ################################# [100%]
[root@slave3 app]#
其中参数i表示安装,v表示显示安装的过程信息,h参数表示显示安装的进度条
3.更新后采用yum list查询与mysql相关的安装包:
[root@slave3 app]# yum list | grep mysql
4.安装mysql的如下安装包:client devel server
[root@slave3 app]# yum -y install mysql-community-client.x86_64 mysql-community-devel.x86_64 mysql-community-server.x86_64
警告:/var/cache/yum/x86_64/7/mysql56-community/packages/mysql-community-common-5.6.51-2.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
mysql-community-common-5.6.51-2.el7.x86_64.rpm 的公钥尚未安装
警告:RPM 数据库已被非 yum 程序修改。
5.安装完成后重启mysql服务器:
[root@slave3 app]# systemctl restart mysqld
6.给root用户设置密码为root(设置为root是学习过程中方便记忆,生产环境绝对不能设置为root,此密码太简单,非常危险!)
[root@slave3 app]# mysqladmin -u root password 'root'
Warning: Using a password on the command line interface can be insecure. #此提示为密码不安全警告
7.登录mysql并创建数据库metadata,此数据库用于存储hive元数据,名字可以任取,但是这个数据库名称需要与hive配置文件中的名称一致。
[root@slave3 app]# mysql -uroot -proot
mysql> create database hive_metadata;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hive_metadata |
| mysql |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)
二.安装hive
将hive和mysql连接文件上传到slave3下的/root/app/
1.安装hive:
[root@slave3 app]# cd /root/app
[root@slave3 app]# ls
apache-hive-1.2.2-bin.tar.gz mysql-community-release-el7-5.noarch.rpm
hadoop-2.7.7 mysql-connector-java-5.1.46-bin.jar
jdk1.8.0_202 Python-3.9.6
[root@slave3 app]# tar -zxvf apache-hive-1.2.2-bin.tar.gz
[root@slave3 app]# rm -rf apache-hive-1.2.2-bin.tar.gz #安装完成后删除没用的hive安装包
#进入hive的安装目录,并打印安装目录的路径
[root@slave3 app]# cd apache-hive-1.2.2-bin
[root@slave3 apache-hive-1.2.2-bin]# pwd
/root/app/apache-hive-1.2.2-bin
[root@slave3 apache-hive-1.2.2-bin]#
编辑配置文件:
[root@slave3 apache-hive-1.2.2-bin]# vim /etc/profile
添加如下配置
配置代码:
#hive path
export HIVE_HOME=/root/app/apache-hive-1.2.2-bin
export PATH=$PATH:$HIVE_HOME/bin
#使配置生效:
[root@slave3 apache-hive-1.2.2-bin]# source /etc/profile
[root@slave3 apache-hive-1.2.2-bin]# hive
出现如下信息说明hive安装成功:
可能出现的错误:
1.拒绝连接
需要先启动hadoop集群,在master上执行以下命令:
[root@master ~]# start-all.sh
待集群启动后,在浏览器查看master:50070能不能成功访问,能成功访问再执行hive命令检测此时是否会出现hive登录页面
2.jline版本不一,可能会报错,需要hadoop和hive中的jline版本一致才行
[root@slave3 apache-hive-1.2.2-bin]# ls /root/app/apache-hive-1.2.2-bin/lib
Hive下的jline版本为:jline-2.12.jar
[root@slave3 apache-hive-1.2.2-bin]# cd /root/app/hadoop-2.7.7/share/hadoop/yarn/lib
Hadoop下的jline版本为:我这里没有,但是hive没报错,所以不管
如果报错,就将两个jline版本搞成一样,例如删掉hadoop的jline,用cp命令复制hive的jline到此目录中
三.配置Hive
[root@slave3 conf]# cd /root/app/apache-hive-1.2.2-bin/conf
[root@slave3 conf]# ls
beeline-log4j.properties.template hive-env.sh.template hive-log4j.properties.template
hive-default.xml.template hive-exec-log4j.properties.template ivysettings.xml
#根据hive-log4j.properties.template为模板复制一个hive-site.xml文件:
[root@slave3 conf]# cp hive-default.xml.template hive-site.xml
在编辑配置文件之前首先先在hive的安装目录下创建临时文件存储路径:/hive/tmp
[root@slave3 conf]# mkdir -p /root/app/apache-hive-1.2.2-bin/hive/tmp
编辑:hive-site.xml
由于此文件下的配置项很多,有上千行,在vim命令模式下可以加斜杠搜索
配置项:
//指定hive数据库连接:
javax.jdo.option.ConnectionURL
jdbc:mysql://localhost:3306/hive_metadata?createDatabaseIfNotExist=true
//指定mysql驱动
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
//指定连接数据库用户名
javax.jdo.option.ConnectionUserName
root
//指定连接数据库的密码
javax.jdo.option.ConnectionPassword
root
//指定hive作业的临时空间,如果没有此目录需事先创建
hive.exec.local.scratchdir
/root/app/apache-hive-1.2.2-bin/hive/tmp
//设置资源的下载路劲
hive.downloaded.resources.dir
/root/app/apache-hive-1.2.2-bin/hive/tmp/${hive.session.id}_resources
到此配置完成,wq保存退出vim
此配置文件我设置好的已经保存到当前文件夹的hive-site.xml,下次直接上传使用即可,不需再重复配置
最后将mysql连接工具的包移动到hive安装目录的lib目录下
[root@slave3 conf]# mv /root/app/mysql-connector-java-5.1.46-bin.jar /root/app/apache-hive-1.2.2-bin/lib/
[root@slave3 conf]# cd /root/app/apache-hive-1.2.2-bin/lib/
[root@slave3 lib]# ls mysql-connector*
mysql-connector-java-5.1.46-bin.jar
[root@slave3 lib]#
到此,整个hive的安装结束
再次执行hive命令,执行后,如果mysql数据库中生成了hive相关的表,说明hive安装配置成功
[root@slave3 app]# hive
Logging initialized using configuration in jar:file:/root/app/apache-hive-1.2.2-bin/lib/hive-common-1.2.2.jar!/hive-log4j.properties
hive>
[5]+ 已停止 hive
[root@slave3 app]# mysql -u root -proot
mysql> use hive_metadata;
mysql> show tables;
+---------------------------+
| Tables_in_hive_metadata |
+---------------------------+
| BUCKETING_COLS |
| CDS |
| COLUMNS_V2 |
| DATABASE_PARAMS |
| DBS |
| FUNCS |
| FUNC_RU |
| GLOBAL_PRIVS |
| PARTITIONS |
| PARTITION_KEYS |
| PARTITION_KEY_VALS |
| PARTITION_PARAMS |
| PART_COL_STATS |
| ROLES |
| SDS |
| SD_PARAMS |
| SEQUENCE_TABLE |
| SERDES |
| SERDE_PARAMS |
| SKEWED_COL_NAMES |
| SKEWED_COL_VALUE_LOC_MAP |
| SKEWED_STRING_LIST |
| SKEWED_STRING_LIST_VALUES |
| SKEWED_VALUES |
| SORT_COLS |
| TABLE_PARAMS |
| TAB_COL_STATS |
| TBLS |
| VERSION |
+---------------------------+
29 rows in set (0.00 sec)
可以看到数据库中有很多与hive相关的表,说明hive安装配置成功
本文作者为BUG之神,转载请注明。