hive-3.1.2分布式搭建文档
谷歌浏览器下载网址:Google Chrome – Download the fast, secure browser from Google
华为云镜像站:https://mirrors.huaweicloud.com/home
1、上传解压配置环境变量
# 1、解压
tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /usr/local/soft/# 2、重名名
mv apache-hive-3.1.2-bin hive-3.1.2# 3、配置环境变量
vim /etc/profile# 4、在最后增加配置
export HIVE_HOME=/usr/local/soft/hive-3.1.2
export PATH=$PATH:$HIVE_HOME/bin# 5、使环境变量剩下
source /etc/profile
2、修改配置文件
1、进入hive配置文件所在目录
cd /usr/local/soft/hive-3.1.2/conf
2、创建hive-site.xml配置文件
vim hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.cj.jdbc.Driver</value></property><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://master:3306/hive?useSSL=false&createDatabaseIfNotExist=true&characterEncoding=utf8&useUnicode=true</value></property><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value></property><property><name>javax.jdo.option.ConnectionPassword</name><value>123456</value></property><property><name>hive.metastore.uris</name><value>thrift://master:9083</value></property><property><name>hive.server2.enable.doAs</name><value>false</value></property><property>
<name>hive.querylog.location</name>
<value/>
</property>(同上)
<property>
<name>hive.exec.local.scratchdir</name>
<value/>
</property>(同上)
<property>
<name>hive.downloaded.resources.dir</name>
<value/>
</property>
</configuration>
3、创建log4j.properties配置文件
# 将日志级别改成WARN,避免执行sql出现很多日志
log4j.rootLogger=WARN,CA
log4j.appender.CA=org.apache.log4j.ConsoleAppender
log4j.appender.CA.layout=org.apache.log4j.PatternLayout
log4j.appender.CA.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n%
3、上传mysql驱动
# 将nysql驱动包上传到hive的lib目录下
mysql-connector-java-8.0.29.jar
1.3.6 将hadoop的jline-0.9.94.jar的jar替换成hive的版本。
cp /usr/local/soft/hive-3.1.2/lib/jline-2.12.jar /usr/local/soft/hadoop-3.1.1/share/hadoop/yarn/lib/
4、初始化hive元数据库
# 2、初始化hive的元数据(表结构)到mysql中
schematool -dbType mysql -initSchema
5、启动hive元数据服务
# 后台启动元数据服务
nohup hive --service metastore &
在搭建到此处时,可能会出现的问题:
1、报1130错误
可能的原因:
①mysql-connector的jar包传入到lib/目录时未解压,即导入的文件是以tar.gz结尾
解决方法:导入解压后的jar包
②在hive-site.xml的配置文件中的配置错误,如
点击查看代码
<property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://master:3306/hive?useSSL=false&createDatabaseIfNotExist=true&characterEncoding=utf8&useUnicode=true</value>
</property>
在输入时将createDatabaseIfNotExist中的If输成IF
这种错误是我在翻阅他人博客时看到的,只要按我上面的配置来,应该不会有这种问题
③这是我在配置过程中遇到的错误即mysql权限问题
关于这个错误,首先是在linux中mysql配置的问题,我在配置的过程中没有修改权限,导致我在使用主机名为master的主节点登陆不了mysql,只能用localhost登录,这里给出我的解决方案
1、在mysql中关闭密码复杂度验证
set global validate_password_policy=0;
set global validate_password_length=1;
2、修改权限
use mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; --修改权限
flush privileges; --刷新权限
select host,user,authentication_string from user;
配置好后,在用master登录
mysql -uroot -p123456 -hmaster
在登录时主机名master登录就没有问题了
6、进入hive命令行
# 进入hive
hive# 测试
# 1、创建表
CREATE TABLE IF NOT EXISTS bigdata30.student_test2(id string ,`name` string ,age string ,gender string ,clazz string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
location '/data/student'; # 2、执行sql查询数据
select clazz,count(1) as num from student group by clazz;
解决 log4j 兼容性问题
警告信息,不影响使用
LF4J: Class path contains multiple SLF4J bindings.
cd /usr/local/soft/hive-3.1.2/lib# hive 与 Hadoop 在运行时会出现 log4j 兼容性问题,这是因为 hive 的 log4j 版本与 Hadoop 的产生了冲突,我们这里将 hive 的 log4j 设置为备份。
mv log4j-slf4j-impl-2.10.0.jar log4j-slf4j-impl-2.10.0.jar.bakhadoop的etc/hadoop/core-site.xml
<property><name>hadoop.proxyuser.root.hosts</name><value>*</value>
</property>
<property><name>hadoop.proxyuser.root.groups</name><value>*</value>
</property>
hive其它一些常见问题
1、hadoop未启动,就开始执行hive命令
解决方案:启动hadoop
2、hadoop处于安全模式
解决方案:
1、等着,等hadoop日志和快照数据恢复完毕,自动离开安全模式
2、使用命令强制离开
3、元数据服务没开,操作不了sql语句
解决方案:nohup hive --service metastore &