Hive组件部署

1.安装前提

1.已经安装好Mysql,并且设置MySQL的服务是开机自启的。
# Centos中MySQL服务的启动、关闭与重启 systemctl status mysqld.service systemctl stop mysqld.service systemctl start mysqld.service

2.MySQL连接信息:
用户名:root
密码:123456
3.Hive是依赖Hadoop平台的,所以在初始化hive的时候需要启动Hadoop平台
4.使用xftp将hive的软件包上传到/root目录下
2.解压
# 进入root目录下 cd /root # 解压 tar -zxvf apache-hive-2.3.4-bin.tar.gz # 为了方便之后的操作,进行改名 mv apache-hive-2.3.4-bin hive # 将解压之后的文件移动到/usr/local目录 mv hive /usr/local

3.配置环境变量
# 更改系统的环境变量文件 vi /etc/profile # 追加以下内容 export HIVE_HOME=/usr/local/hive export PATH=$PATH:$HIVE_HOME/bin # 修改之后一定要使配置文件生效 source /etc/profile

4.启动hdfs
start-dfs.sh

5.拷贝Mysql的连接驱动拷贝到hive安装目录的lib目录下
# 在其他的环境中需要根据自己实际上传的路径 cp mysql-connector-java-5.1.47-bin.jar /usr/local/hive/lib/

6.修改配置文件: hive-site.xml
# 进入hive的配置文件目录 cd /usr/local/hive/conf vi hive-site.xml

javax.jdo.option.ConnectionURL jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true& useSSL=false javax.jdo.option.ConnectionDriverName com.mysql.jdbc.Driver javax.jdo.option.ConnectionUserName root 【Hive组件部署】javax.jdo.option.ConnectionPassword 123456 hive.cli.print.header true hive.cli.print.current.db true hive.mapred.mode nonstrict hive.strict.checks.cartesian.product false hive.server2.thrift.bind.host master

7.修改配置文件:hive-env.sh
  • 进入到Hive的安装目录下的conf文件夹中
[root@master soft]$ cd /usr/local/hive/conf

  • 重命名hive-env.sh.template
[root@master conf]$ mv hive-env.sh.template hive-env.sh

  • 修改hive-env.sh
[root@master conf]$ vi hive-env.sh

  • 如下,修改此文件中HADOOP_HOME、HIVE_CONF_DIR的值(根据自己机器的实际情况配置)
# 直接在最后追加即可 # 配置 HADOOP_HOME 的路径 export HADOOP_HOME=/usr/local/hadoop # 配置 HIVE_CONF_DIR 的路径 export HIVE_CONF_DIR=/usr/local/hive/conf

8.修改配置文件:hive-log4j.properties
  • 创建hive日志存储目录
[root@master hive]$ mkdir -p /usr/local/hive/logs/

  • 重命名生成文件hive-log4j.properties
[root@master opt]# cd /usr/local/hive/conf/ [root@master conf]$ pwd /usr/local/hive/conf [root@master conf]$ mv hive-log4j.properties.template hive-log4j.properties[root@master conf]$ vi hive-log4j.properties # 修改文件

  • 修改此文件的hive.log.dir属性的值
#更改以下内容,设置我们的hive的日志文件存放的路径,便于排查问题 hive.log.dir=/usr/local/hive/logs/

9.初始化hive
如果一直初始化失败,可以查看你当前是否在之前的时候已经初始化了一次,在MySQL中生成了元数据信息,可以尝试先把元数据仓库删除,再去初始化。
schematool -dbType mysql -initSchema

10.启动hive
注意:启动Hive命令行之前的时候需要先启动Hadoop集群;
  • hive-cli命令行测试
    • 进入hive-cli命令行
      hive # 可选操作,因为在之前的配置文件中已经指定了 export HADOOP_HOME=/usr/local/hadoop export HIVE_CONF_DIR=/usr/local/hive/conf

    • 查看当前有那些数据库
      show databases;

    • 退出hive-cli命令行
      quit;

  • 使用beeline测试连接
    • 启动hiveserver2服务,此时又分为两种
      • 前台启动
        [hadoop@node03 ~]$ hive --service hiveserver2

      • 后台启动
        命令解析:
        0:nohub 表示程序在后台运行
        1:> 代表重定向到哪里,例如:echo "123" > /home/123.txt
        2:/dev/null 代表空设备文件(黑洞)。
        3:2> 表示stderr标准错误
        4:& 表示等同于的意思,2>&1,表示2的输出重定向等同于1
        5:1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于 "1>/dev/null"
        6:& 在最后表示指定进程一直在后台运行
        [hadoop@node03 ~]$ nohup hive --service hiveserver2 > /dev/null 2>&1 &

    • beeline连接hiveserver2服务;
      若是前台启动hiveserver2,请再开启一个新会话窗口,然后使用beeline连接hive;
      此时用户名为hadoop,密码为空即可:
      [hadoop@node03 hive]$ bin/beeline --color=true beeline> !connect jdbc:hive2://master:10000

    • 帮助信息
      0: jdbc:hive2://master:10000> help

    • 退出
      0: jdbc:hive2://master:10000> !quit

    推荐阅读