hive安装和高可用部署

本文详细描述了如何部署Hive3.1.2版本,包括删除旧版本、配置环境变量、修改Hive-site.xml、替换依赖包、初始化元数据库、启动服务以及异常处理。同时介绍了如何配置Hive的高可用性,涉及Metastore和HiveServer2的Zookeeper相关设置。
摘要由CSDN通过智能技术生成

hive部署

版本

组件版本
hive3.1.2
mysql5.7.41
hadoop3.1.4

部署流程

前置条件:hadoop和mysql正常运行

  1. 删除旧版本
# 删除Hive
[root@node1 ~]# cd /opt/software/
[root@node1 software]# rm -rf ./hive-x.x.x/
# 登录mysql ,删除Hive元数据库hive
[root@node2 ~]# mysql -u root -pxxxx
mysql> drop database hive;
  1. 部署hive
    2.1. hive下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-3.1.2/
    2.2. 上传解压:
    bash [root@node1 ~]# cd /opt/software/ [root@node1 software]# tar -zxvf ./apache-hive-3.1.2-bin.tar.gz [root@node1 software]# mv apache-hive-3.1.2-bin hive-3.1.2
    2.3. 配置环境变量:
    ```bash
    vim /etc/profile
    export HIVE_HOME=/opt/software/hive-3.1.2/
    export PATH= P A T H : PATH: PATH:HIVE_HOME/bin

    #source  生效
    source /etc/profile
    ```
    

    2.4. 配置hive-site.xml文件(完成配置见下文)

    ```xml
    <configuration>
     <property>
      <name>hive.metastore.warehouse.dir</name>
      <value>/user/hive/warehouse</value>
     </property>
     <property>
      <name>javax.jdo.option.ConnectionURL</name>
      <value>jdbc:mysql://xxxx/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></value>
     </property>
    </configuration>
    ```
    

    2.5. 依赖包更换
    删除Hive lib目录下“guava-19.0.jar ”包
    将Hadoop lib下的“guava”包拷贝到Hive lib目录下
    将“mysql-connector-java-5.1.47.jar”驱动包上传到hive节点的$HIVE_HOME/lib目录下
    2.6. 初始化hive的元数据库
    bash [root@node1 ~]# schematool -dbType mysql -initSchema
    2.7. 启动

    ```bash
    #启动metastore  
    nohup hive --service metastore  1>/opt/software/hive-3.1.2/logs/metastore.log 2>/opt/software/hive-3.1.2/logs/metastore.err &
    #启动 hiveserver2 
    nohup hiveserver2 1>/opt/software/hive-3.1.2/logs/hiveserver.log 2>/opt/software/hive-3.1.2/logs/hiveserver.err &
    ```
    

    2.8. 测试
    CLI连接测试,执行hive语句成功之后,连接使用HiveServer2/beeline进行连接测试

异常处理

  1. server.HiveServer2: Error starting HiveServer2 on attempt 22, will retry in 60000ms
    java.lang.RuntimeException: Error initializing notification event poll
    https://issues.apache.org/jira/browse/HIVE-19740
    修改 hive-site.xml配置

    <property>
        <name>hive.metastore.event.db.notification.api.auth</name>
        <value>false</value>
    </property>
    
  2. server.HiveServer2: Error starting HiveServer2 on attempt 1, will retry in 60000ms
    java.lang.NoClassDefFoundError: org/apache/tez/dag/api/SessionNotRunning
    增加hive-site.xml配置

      <property>
        <name>hive.server2.active.passive.ha.enable</name>
        <value>true</value>
      </property>
    

    或者
    通过配置高可用可以解决该问题(见下文)

高可用配置

前置条件:zookeeper可用
假定部署2个节点hive服务,每个节点都启动MetaStore,HiveServer2服务

  1. MetaStore高可用
    在hive-site.xml中增加:

      <property>
        <name>hive.metastore.uris</name>
        <value>thrift://node1:9083,thrift://node2:9083</value>
      </property>
    
  2. HiveServer2高可用
    在hive-site.xml中增加:

    <property>
    <name>hive.server2.log.dir</name>
    <value>/opt/software/hive-3.1.2/logs</value>
    </property>
      <property>
        <name>hive.server2.support.dynamic.service.discovery</name>
        <value>true</value>
      </property>
      <property>
        <name>hive.server2.zookeeper.namespace</name>
        <value>hiveserver2</value>
      </property>
      <property>
        <name>hive.zookeeper.quorum</name>
        <value>node3,node4,node5</value>
      </property>
      <property>
        <name>hive.zookeeper.client.port</name>
        <value>2181</value>
      </property>
      <property>
        <name>hive.server2.thrift.bind.host</name>
        <value>node2</value>
        <description>zk返回给beeline连接的HiveServer2服务器地址,每台HiveServer2 HA都需要修改</description>
      </property>
      <property>
        <name>hive.server2.thrift.port</name>
        <value>10000</value>
      </property>
    
  3. 连接测试
    重启2个节点中的MetaStore,HiveServer2服务
    查看是否注册到zookeeper

    [zk: localhost:2181(CONNECTED) 2] ls /hiveserver2
    [leader, serverUri=node2:10000;version=3.1.2;sequence=0000000034, serverUri=node1:10000;version=3.1.2;sequence=0000000036]
    

    测试HiveServer2可用性

    root@node1:~# beeline -u "jdbc:hive2://node3:2181,node4:2181,node5:2181/default;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2" -n root
    SLF4J: Class path contains multiple SLF4J bindings.
    SLF4J: Found binding in [jar:file:/opt/software/hive-3.1.2/lib/log4j-slf4j-impl-2.10.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:/opt/software/hadoop-3.1.4/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
    SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
    Connecting to jdbc:hive2://node3:2181,node4:2181,node5:2181/default;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2
    24/01/07 17:43:09 [main]: INFO jdbc.HiveConnection: Connected to node1:10000
    Connected to: Apache Hive (version 3.1.2)
    Driver: Hive JDBC (version 3.1.2)
    Transaction isolation: TRANSACTION_REPEATABLE_READ
    Beeline version 3.1.2 by Apache Hive
    0: jdbc:hive2://node3:2181,node4:2181,node5:2> 
    
    

完整配置:

<configuration>
 <property>
  <name>hive.metastore.warehouse.dir</name>
  <value>/user/hive/warehouse</value>
 </property>
 <property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://node2: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>xxxx</value>
 </property>
  <property>
  <name>hive.server2.enable.doAs</name>
  <value>false</value>
 </property>
<property>
    <name>hive.metastore.event.db.notification.api.auth</name>
    <value>false</value>
</property>
<property>
<name>hive.server2.log.dir</name>
<value>/opt/software/hive-3.1.2/logs</value>
</property>
  <property>
    <name>hive.server2.support.dynamic.service.discovery</name>
    <value>true</value>
  </property>
  <property>
    <name>hive.server2.zookeeper.namespace</name>
    <value>hiveserver2</value>
  </property>
  <property>
    <name>hive.zookeeper.quorum</name>
    <value>node3,node4,node5</value>
  </property>
  <property>
    <name>hive.zookeeper.client.port</name>
    <value>2181</value>
  </property>
  <property>
    <name>hive.server2.thrift.bind.host</name>
    <value>node2</value>
    <description>zk返回给beeline连接的HiveServer2服务器地址,每台HiveServer2 HA都需要修改</description>
  </property>
  <property>
    <name>hive.server2.thrift.port</name>
    <value>10000</value>
  </property>
  <property>
    <name>hive.metastore.uris</name>
    <value>thrift://node1:9083,thrift://node2:9083</value>
  </property>
</configuration>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值