这里我搭建的版本是 hadoop2.7.1 hive2.3.6 这两个可以兼容
首先,确保 node1 上的 mysql安装成功,且可以远程登录,并设置好密码
下载地址:https://mirror.bit.edu.cn/apache/hive/
vi /etc/profile
vi hive-site.xml
"1.0" encoding="UTF-8" standalone="no"?>
-stylesheet type="text/xsl" href="configuration.xsl"?>
hive.metastore.warehouse.dir</name>
/user/hive/warehouse</value>
</property>
hive.metastore.local</name>
false</value>
</property>
hive.metastore.uris</name>
thrift://node3:9083</value>
</property>
</configuration>
将 node2 上的 hive236目录上传到 node3, node4上:
scp -r hive236/ root@node3:/usr/local/
scp -r hive236/ root@node4:/usr/local/
我们将node4与node2 都配置成hive客户端,所有node4上不需要做任何修改,只需配置环境变量
首先配置环境变量
然后在hive的conf配置hive-site.xml
vi hive-site.xml
"1.0" encoding="UTF-8" standalone="no"?>
-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- 在hdfs上文件的位置 -->
hive.metastore.warehouse.dir</name>
/user/hive/warehouse</value>
</property>
<!-- 元数据的位置 -->
javax.jdo.option.ConnectionURL</name>
jdbc:mysql://node1:3306/hive?createDatabaseIfNotExist=true</value>
</property>
javax.jdo.option.ConnectionDriverName</name>
com.mysql.cj.jdbc.Driver</value>
</property>
javax.jdo.option.ConnectionUserName</name>
root</value>
</property>
javax.jdo.option.ConnectionPassword</name>
a</value>
</property>
hive.metastore.schema.verification</name>
false</value>
</property>
datanucleus.schema.autoCreateAll</name>
true</value>
</property>
</configuration>
在node3执行以下命令初始化库: schematool -dbType mysql -initSchema
hive
之前测试用hive命令区链接一直卡在Logging initialized using configuration in jar:file:/usr/local/apache-hive-2.3.4/lib/hive-common-2.3
在网上查了很多资料,说实话没啥用,后来检查了是我的node1的namenode掉了,而node2的namenode还是standby状态(明明配置了高可用,我也不知道咋回事),把node1的节点启动,有一个namenode为active状态即可
测试一些hive命令:
create database ryan;
use ryan;
create table produce_hive( id int, name varchar(20) );
insert into produce_hive values(1, 'apple');
select * from produce_hive;
cd /etc/rc.d/init.d/
vi metastoreServer
#!/bin/sh
#chkconfig: 345 90 90
#description: hive metastore
#processname: hive_metastore_server
source /etc/profile
# 启动服务的时间
DATE_STR=`/bin/date "+%Y%m%d%H%M%S"`
# 日志文件名称(包含路径)
HIVE_METASTORE_LOG=${
HIVE_HOME}/logs/hiveserver2-${
DATE_STR}.log
/usr/bin/nohup ${
HIVE_HOME}/bin/hive --service metastore >>${
HIVE_METASTORE_LOG} 2>&1 &
添加执行权限
chmod +x metastoreServer
加入 chkconfig
chkconfig --add metastoreServer
chkconfig --list