docker安装Hive
首先,Hive是基于Hadoop中HDFS和MapReduce的,所以需要先安装Hadoop,按照Hadoop的教程见:
一、下载Hive
- 访问Apache官网:https://dlcdn.apache.org/hive/hive-3.1.2/,选择对应的版本,注意,Hive版本要和Hadoop版本相对应,参考:https://hive.apache.org/downloads.html
如上图,可以看到,Hive 3.1.2版本支持 Hadoop 3.x.y版本,而我的Hadoop版本是 3.2.2的,所以选择Hive版本为 3.1.2 。
二、安装Hive
- 拷贝刚刚下载的Hive到docker容器中:
# 拷贝Hive安装包进 h01容器 docker cp /Users/luochao7/Downloads/apache-hive-3.1.2-bin.tar.gz 5fa8d538d8ae:/usr/local
# 进入容器 docker exec -it 5fa8d538d8ae bash cd /usr/local/
# 解压安装包 tar xvf apache-hive-3.1.2-bin.tar.gz
#文件夹更名 root@h01:/usr/local# mv apache-hive-3.1.2-bin hive
#拷贝Mysql jdbc驱动到hive安装包 lib目录下(我的Mysql是8.0.26的) docker cp /Users/luochao7/.m2/repository/mysql/mysql-connector-java/8.0.26/mysql-connector-java-8.0.26.jar 5fa8d538d8ae:/usr/local/hive/lib
三、配置Hive
1.修改Hadoop中的 core-site.xml,并且 Hadoop集群同步配置文件,重启生效
hadoop.proxyuser.root.hosts * hadoop.proxyuser.root.groups *
因为Hive需要把数据存储在 HDFS上,并且通过 MapReduce作为执行引擎处理数据
2.修改配置文件
#slf4j这个包hadoop及hive两边只能有一个,这里删掉hive这边 root@Master:/usr/local/apache-hive-3.1.2-bin/lib# rm log4j-slf4j-impl-2.10.0.jar #guava这个包hadoop及hive两边只删掉版本低的那个,把版本高的复制过去,这里删掉hive,复制hadoop的过去(注意看路径) root@h01:/usr/local/hadoop/share/hadoop/common/lib# cp guava-27.0-jre.jar /usr/local/hive/lib/ root@h01:/usr/local/hive/lib# rm -rf guava-19.0.jar #修改hive环境变量文件 添加Hadoop_HOME root@h01:/usr/local/hive/conf# mv hive-env.sh.template hive-env.sh root@h01:/usr/local/hive/conf# vim hive-env.sh #在最后一行添加 export HADOOP_HOME=/usr/local/hadoop export HIVE_CONF_DIR=/usr/local/hive/conf export HIVE_AUX_JARS_PATH=/usr/local/hive/lib #新增hive-site.xml 配置mysql等相关信息 root@h01:/usr/local/hive/conf# vim hive-site.xml #粘贴配置javax.jdo.option.ConnectionURL jdbc:mysql://172.17.0.2:3306/hive?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8 javax.jdo.option.ConnectionDriverName com.mysql.jdbc.Driver javax.jdo.option.ConnectionUserName root javax.jdo.option.ConnectionPassword 123456 hive.server2.thrift.bind.host h01 hive.metastore.uris thrift://h01:9083 hive.metastore.event.db.notification.api.auth false hive.metastore.schema.verification false
3. 初始化元数据(先启动 mysql)
root@h01:/usr/local/hive# bin/schematool -initSchema -dbType mysql -verbos
初始化元数据,此时会在 mysql中,创建一个 hive数据库,因为之前不存在 hive数据库,所以会新建,在 mysql中使用: show databases 查看。
常见问题:如果在执行如上语句的时候,出现如下图:
因为我的 mysql是安装在另外一个 docker 容器中的,导致两个 docker 不连通,解决办法:
解决之后,重新修改 hive/conf/hive-site.xml,将地址修改为:jdbc:mysql://172.18.0.3:3306,重新执行初始化元数据命令,即可。
四、启动Hive
- 前台启动Metastore服务(不推荐):
root@h01:/usr/local/hive# bin/hive --service metastore
启动后,窗口一直处于等待的状态:
这个时候,这个窗口就不能干别的,使用 control + c 结束,所以,不推荐这种方式。
2.后台启动Metastore服务(推荐):
#输入命令回车执行 再次回车 进程将挂起后台
root@h01:/usr/local/hive# nohup bin/hive --service metastore &
注意末尾有一个 &符号,启动后,这个进程在后台运行:
使用 jps 查看进程:
可见,有一个 RunJar 在后台运行。
3.启动 hive(先启动Hadoop集群)
root@h01:/usr/local/hive# bin/hive
启动成功后,如下图所示,输入 show databases 可以查看hive的数据库: