环境

操作系统 主机名 地址 运行组件
Rocky9 hive-hs20 192.168.8.20/24 Hive Server
Rocky9 hive-ms21 192.168.8.21/24 Hive Metastore, MySQL8.0

服务器初始配置

  • 全部主机上执行如下操作
  • 禁用防火墙
  • 禁用 selinux
  • 配置时间同步
  • 配置主机名解析
    1
    2
    3
    4
    5
    6
    7
    
    echo "192.168.8.1  hdp-nn" >> /etc/hosts
    echo "192.168.8.2  hdp-snn" >> /etc/hosts
    echo "192.168.8.3  hdp-dn" >> /etc/hosts
    echo "192.168.8.10 hdp-slave10" >> /etc/hosts
    echo "192.168.8.11 hdp-slave11" >> /etc/hosts
    echo "192.168.8.20 hdp-hs20" >> /etc/hosts
    echo "192.168.8.21 hdp-ms21" >> /etc/hosts
    

创建 mysql 数据库

  • hive-ms21 上执行如下操作
  • 部署 mysql8.0,略过
  • 创建用户及其数据库,参考 sql 如下
    1
    2
    3
    
    create user hive@127.7.7.7 identified by 'Hive_1234';
    create database hive default charset utf8mb4;
    grant all on hive.* to hive@127.7.7.7;
    

复制 jdk 和 hadoop 环境

  • 全部主机上执行如下操作
  • 从 hdp-nn 复制 jdk 和 hadoop 环境
    1
    2
    3
    4
    
    scp -r hdp-nn:/opt/{jdk,hdp} /opt/
    scp hdp-nn:/etc/profile.d/{jdk,hdp}.sh /etc/profile.d/
    source /etc/profile.d/jdk.sh
    source /etc/profile.d/hdp.sh
    

部署 hive 环境

  • 全部主机上执行如下操作

  • 下载 hive 2.3.9 部署包,解压

    1
    2
    3
    
    curl -LO https://archive.apache.org/dist/hive/hive-2.3.9/apache-hive-2.3.9-bin.tar.gz
    tar zxf apache-hive-2.3.9.tar.gz
    mv apache-hive-2.3.9 /opt/hive
    
  • 下载 mysql 连接库,解压到 hive 库目录下

    1
    2
    3
    4
    
    curl -LO https://downloads.mysql.com/archives/get/p/3/file/mysql-connector-j-8.0.33.tar.gz
    tar zxf mysql-connector-j-8.0.33.tar.gz mysql-connector-j-8.0.33/mysql-connector-j-8.0.33.jar
    mv mysql-connector-j-8.0.33/mysql-connector-j-8.0.33.jar /opt/hive/lib/
    rm -rf mysql-connector-j-8.0.33*
    
  • 配置环境变量

    1
    2
    3
    
    echo 'export HIVE_HOME=/opt/hive' > /etc/profile.d/hive.sh
    echo 'export PATH=$HIVE_HOME/bin:$PATH' >> /etc/profile.d/hive.sh
    source /etc/profile.d/hive.sh
    

修改 hive-env.sh

  • 编辑 $HIVE_HOME/conf/hive-env.sh,指定 HADOOP_HOME 环境变量
    1
    
    export HADOOP_HOME=/opt/hdp
    

创建 hive-site.xml

  • 创建 $HIVE_HOME/conf/hive-site.xml,参考内容如下
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    
    <configuration>
      <property>
        <!-- mysql 地址 -->
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://127.7.7.7:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false</value>
      </property>
      <property>
        <!-- mysql 驱动 -->
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.cj.jdbc.Driver</value>
      </property>
      <property>
        <!-- mysql 用户 -->
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>hive</value>
      </property>
      <property>
        <!-- mysql 密码 -->
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>Hive_1234</value>
      </property>
      <property>
        <!-- 自动初始化 hive 库 -->
        <name>datanucleus.schema.autoCreateAll</name>
        <value>true</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>
      <property>
        <!-- hive server 端口 -->
        <name>hive.server2.webui.port</name>
        <value>10002</value>
      </property>
      <property>
        <!-- 数据存储位置(hdfs) -->
        <name>hive.metastore.warehouse.dir</name>
        <value>/hive/warehouse</value>
      </property>
      <property>
        <!-- hive metastore 端口-->
        <name>hive.metastore.uris</name>
        <value>thrift://hive-ms:9083</value>
      </property>
      <!-- hive 使用 tez 引擎
      <property>
        <name>hive.execution.engine</name>
        <value>tez</value>
      </property> -->
      <property>
        <name>tez.am.staging-dir</name>
        <value>/hive/tez/staging</value>
      </property>
    </configuration>
    

初始化 hive 库

  • hive-ms21 上执行如下操作
    1
    
    schematool -dbType mysql -initSchema
    

启动 hive

  • hive-ms21 上启动 hive metastore

    1
    
    hive --service metastore
    
  • hive-hs20 上启动 hive server

    1
    
    hive --service hiveserver2
    

客户端连接