软件
apache-hive-2.3.6
获取hive
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-2.3.6/apache-hive-2.3.6-bin.tar.gz
将Hive server安装在slave1
将Hive client安装在master
MySQL安装在slave2(Step4中已经完成)
在slave1上解压安装hive
mkdir -p /usr/hive
tar -xzvf ./apache-hive-2.3.5-bin.tar.gz -C /usr/hive
将解压的hive考到master
scp -r /usr/hive/apache-hive-2.3.6-bin root@master:/usr/hive/
环境变量
master和slave1都添加如下内容到/etc/profile
export HIVE_HOME=/usr/hive/apache-hive-2.3.6-bin
export PATH=$PATH:$HIVE_HOME/bin
使环境变量生效(master,slave1)
source /etc/profile
copy mysql-connector到hive
Hive需要和MySQL通讯
在Step4中安装了mysql-connector,需要将其copy到slave1的hive下。
在slave2下执行如下命令
scp /usr/share/java/mysql-connector-java.jar root@slave1:/usr/hive/apache-hive-2.3.6-bin/lib
修改hive-env.sh
在slave1下
cd /usr/hive/apache-hive-2.3.6-bin/conf
cp hive-env.sh.template hive-env.sh
vi hive-env.sh
设置Hadoop的安装目录
HADOOP_HOME=/usr/hadoop/hadoop-2.7.7
slave1下生成hive-site.xml(不要复制hive-site.xml.template,直接新生成一个文件)
vi hive-site.xml
将如下内容粘贴
<configuration>
<!-- Hive产生的元数据存放位置-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>
</property>
<!-- 数据库连接JDBC的URL地址-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://slave2:3306/hive?createDatabaseIfNotExist=true</value> #连接MySQL所在的ip(主机名)及端口
</property>
<!-- 数据库连接driver,即MySQL驱动-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
</property>
<!-- MySQL数据库用户名-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hivedb</value>
</property>
<!-- MySQL数据库密码-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>Hivedb@123</value>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<property>
<name>datanucleus.schema.autoCreateAll</name>
<value>true</value>
</property>
</configuration>
其中MySQL数据库用户名(hivedb)和MySQL数据库密码(Hivedb@123)就是Step4在user中添加的用户名和密码
master作为客户端访问slave1上的hive
所有操作都是在master上进行
更新hadoop的jline
cp /usr/hive/apache-hive-2.3.6-bin/lib/jline-2.12.jar /usr/hadoop/hadoop-2.7.7/share/hadoop/yarn/lib/
修改hive-env.sh
cd /usr/hive/apache-hive-2.3.6-bin/conf
cp hive-env.sh.template hive-env.sh
vi hive-env.sh
设置Hadoop的安装目录
HADOOP_HOME=/usr/hadoop/hadoop-2.7.7
生成hive-site.xml(不要复制hive-site.xml.template,直接新生成一个文件)
vi hive-site.xml
将如下内容粘贴(master和slave1的内容不同)
<configuration>
<!-- Hive产生的元数据存放位置-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>
</property>
<!--- 使用本地服务连接Hive,默认为true-->
<property>
<name>hive.metastore.local</name>
<value>false</value>
</property>
<!-- 连接服务器-->
<property>
<name>hive.metastore.uris</name>
<value>thrift://slave1:9083</value> #hive客户端通过thrift服务器服务连接MySQL数据库
</property>
</configuration>
初始化Hive
在slave1上执行
cd /usr/hive/apache-hive-2.3.6-bin/bin
schematool -dbType mysql -initSchema
启动Hive
slave1上启动hive server(确保slave2上MySQL已经启动)
hive --service metastore
jps查看启动结果
在master上启动hive client
hive
如果希望查看debug的信息可以使用
hive -hiveconf hive.root.logger=DEBUG,console
确认测试
查看存在的databases
生成新的database
生成table
如果一切都成功说明OK了。
我之前生成table始终出错,最后升级MySQL从5.7到8.0就正常。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。