zoukankan      html  css  js  c++  java
  • Hiveserver2高可用实现

    在生产环境中使用Hive,强烈建议使用HiveServer2来提供服务,好处有:

    • 在应用端不用部署Hadoop和Hive客户端;
    • 相比hive-cli方式,HiveServer2不用直接将HDFS和Metastore暴漏给用户;
    • 有安全认证机制,并且支持自定义权限校验;
    • 有HA机制,解决应用端的并发和负载均衡问题
    • JDBC方式,可以使用任何语言,方便与应用进行数据交互;
    • 从2.0开始,HiveServer2提供了WEB UI。

    Hive从0.14开始,使用Zookeeper实现了HiveServer2的HA功能(ZooKeeperService Discovery),Client端可以通过指定一个nameSpace来连接HiveServer2,而不是指定某一个host和port。

    1. hive-site.xml添加配置

    <property>
        <name>hive.server2.support.dynamic.service.discovery</name>
        <value>true</value>
    </property>
    <property>
        <name>hive.server2.zookeeper.namespace</name>
        <value>hiveserver2_zk</value>
    </property>
    <property>
        <name>hive.zookeeper.quorum</name>
        <value>zkNode1:2181,zkNode2:2181,zkNode3:2181</value>
    </property>
    <property>
        <name>hive.zookeeper.client.port</name>
        <value>2181</value>
    </property>
    <property>
        <name>hive.server2.thrift.bind.host</name>
        <value>0.0.0.0</value>
    </property>
    <property>
        <name>hive.server2.thrift.port</name>
        <value>10001</value> 
        <!--//两个HiveServer2实例的端口号要一致 --!>
    </property>

    2. Hiveserver2启动

    nohup hive --service hiveserver2 --hiveconf  hive.server2.thrift.port=10001  
    --hiveconf hive.metastore.uris='thrift://192.168.1.252:9083,thrift://192.168.1.253:9084' 
    --hiveconf hive.server2.zookeeper.namespace=hiveserver2/lenmom--hiveconf hive.log.dir=/hive/logs/server2_10001 
    --hiveconf hive.exec.scratchdir=/user/lenmom/tmpdata &

    参数说明:
    a) hiveserver2端口:10001 
    b) metastore的uri:thrift://192.168.10.34:9083,thrift://192.168.10.35:9084,
    c) hiveserver2的轮询分组命名空间:hiveserver2/lenmom 
    d) 日志目录:/hive/logs/server2_10001
    e) 临时文件目录:/user/lenmom/tmpdata

    3.jdbc连接hive server方式

    JDBC Url

    jdbc:hive2://<zookeeper quorum>/<dbName>;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2

    参数说明
    a) <zookeeper quorum> 为Zookeeper的集群链接串,如zkNode1:2181,zkNode2:2181,zkNode3:2181
    b) <dbName> 为Hive数据库,默认为default
    c) serviceDiscoveryMode=zooKeeper 指定模式为zooKeeper
    d) zooKeeperNamespace=hiveserver2 指定ZK中的nameSpace,即参数hive.server2.zookeeper.namespace所定义,我定义为hiveserver2_zk

    4. 客户端轮询方式连接

    beeline -u "jdbc:hive2://jfhadoop005:9501,jfhadoop006:9501,jfhadoop007:9501/ssjf;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2/lenmom;?mapreduce.job.queuename=root.ssfj" -n lenmom -plenmom -d org.apache.hive.jdbc.HiveDriver

    参数说明:
     -u   
       jfhadoop005:9501  三个zk的9501端口,轮询用
      lenmom   租户对应的hiveserver库
    serviceDiscoveryMode=zooKeeper;   zk轮询发现hs2
       zooKeeperNamespace=hiveserver2/lenmom  轮询的命名空间,指定轮询服务器的范围  和 hiveserver2的轮询分组命名空间对应。
       ?mapreduce.job.queuename=root.lenmom 对照的yarn资源分组队列
    -n   多租户用户名
    -p   多租户用户密码
    -d  org.apache.hive.jdbc.HiveDriver hive连接驱动

    5. 客户端直连方式连接

    beeline -u "jdbc:hive2://192.168.1.252:10000/lenmom" -n  lenmom -p lenmom -d org.apache.hive.jdbc.HiveDriver 

    参数说明:
    hs2地址和端口:192.168.10.32:10000
    lenmom   租户对应的hiveserver库
    -n   多租户用户名
    -p   多租户用户密码
    -d  org.apache.hive.jdbc.HiveDriver hive连接驱动

  • 相关阅读:
    用curl发起https请求
    curl: (60) SSL certificate problem: unable to get local issuer certificate 错误
    单例模式
    黑窗口命令
    推荐的php安全配置选项
    sublime配置大全
    数据库三范式最简单最易记的解释
    linux 下安装python3
    restframwork 接口及优化
    Django的orm练习---多表查询
  • 原文地址:https://www.cnblogs.com/lenmom/p/10223952.html
Copyright © 2011-2022 走看看