软件
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查看启动结果
屏幕快照 2019-11-26 上午10.44.09.png

在master上启动hive client

hive

如果希望查看debug的信息可以使用

hive -hiveconf hive.root.logger=DEBUG,console

确认测试
查看存在的databases
屏幕快照 2019-11-26 上午10.46.16.png

生成新的database
屏幕快照 2019-11-26 上午10.47.03.png

生成table
屏幕快照 2019-11-26 上午11.00.05.png

如果一切都成功说明OK了。
我之前生成table始终出错,最后升级MySQL从5.7到8.0就正常。


麦穗儿
127 声望15 粉丝

程序猿以技术为本