乐趣区

关于hive: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
<!-- 小技巧,能够复制 hive-default.xml.template 中的文件头,并且启动的配置项也能够应用含糊搜寻去匹配 -->
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</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.cli.print.header</name>
        <value>true</value>
    </property>
    <!-- 打印数据库信息 -->
    <property>
        <name>hive.cli.print.current.db</name>
        <value>true</value>
    </property>
    <!--
    解决 hive 报错 FAILED: SemanticException Cartesian products are disabled for safety 的问题
    开启 hive shell 模式
     -->
    <property> 
        <name>hive.mapred.mode</name> 
        <value>nonstrict</value> 
    </property>
    <property> 
        <name>hive.strict.checks.cartesian.product</name> 
        <value>false</value>
    </property>
    <!-- 配置 hiveserver2 的服务 -->
    <property>
        <name>hive.server2.thrift.bind.host</name>
        <value>master</value>
    </property>
</configuration>

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
退出移动版