【运维】hive 高可用详解: Hive MetaStore HA、hive server HA原理详解;hive高可用实现

这篇具有很好参考价值的文章主要介绍了【运维】hive 高可用详解: Hive MetaStore HA、hive server HA原理详解;hive高可用实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一. hive高可用原理说明

1. Hive MetaStore HA

Hive元数据存储在MetaStore中,包括表的定义、分区、表的属性等信息。

hive metastore 配置多台,可以避免单节点故障导致整个集群的hive client不可用。

原理如下:
配置hive metastore ha,hive,运维,hive,hadoop

Active-active mode is not supported for Hive Metastore. Hence, there is one active instance of the Hive Metastore service at any given point in time. The other instances of the Hive Metastore service are in standby state.

hive metastore不支持双活的高可用,也就说hive metastore的高可用是主备架构,其中一个节点提供服务,另外一个节点处于就绪的状态。

相关配置项:在hive-site.xml中

<property>
<name>hive.metastore.uris</name>
<value>thrift://metastore_node1:9083,thrift://metastore_node2:9083</value>
</property>

 

2. hive server HA

HiveServer2是Hive的一个查询引擎,允许用户通过多种方式(如JDBC、ODBC等)提交和执行Hive查询。它负责解析客户端的请求,生成查询计划,并将这些任务提交给底层的执行引擎(如 MapReduce 或 Tez)。HiveServer2 本身并不直接处理 Thrift 协议,而是通过 Hive Thrift Server 来实现 Thrift 服务。

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

原理图如下:

配置hive metastore ha,hive,运维,hive,hadoop

The JDBC/ODBC client connects to Zookeeper, which randomly returns a : for a registered HiveServer2 instance. The client uses the returned value to connect to a particular HiveServer2 instance directly to perform its work.
If the HiveServer2 instance fails while the client is connected, the client session is terminated and there is no automatic fail-over to a new HiveServer2 instance.

JDBC/ODBC client(比如中台的元数据发现服务通过JDBC访问)连接zookeeper,zookeeper随机返回一个server信息(<host>:<port>)用于注册hiveserver2实例。客户端使用返回的值连接指定的hiveserver实例,进行元数据查询等操作。当连接的hiveserver挂了或者无法通讯,创建的client会话将会关闭,且没有自动的故障转移操作转移到另外一个hiveserver实例。也就是说你需要重新请求HiveServer。

上面提到的随机返回一个hiveserver,说明hiveserver高可用具备一定的请求分流,减少hiveserver的请求压力。

参考:
IBM - availability-enabling-hiveserver2-high

 

相关配置:在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>zk_server1:2181,zk_server2:2181,zk_server3:2181</value>
</property>

<property>
<name>hive.zookeeper.client.port</name>
<value>2181</value>
</property>

 
 

二. hive高可用实现

1. 配置

每个hive所在节点修改配置: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>zk_node1:2181,zk_node2:2181,zk_node3:2181</value>
</property>
 
<property>
    <name>hive.zookeeper.client.port</name>
    <value>2181</value>
</property>


<property>
    <name>hive.metastore.uris</name>
    <value>thrift://metastore_node1:9083,thrift://metastore_node2:9083</value>
</property>

 

所有节点执行,启动hive Metastore和hive server

因为hive server 依赖hive metastore,所以先启动metastore

nohup hive --service metastore >> /opt/module/apache-hive-2.1.1-bin/metastore.log 2>&1 &
nohup hive --service hiveserver2 >> /opt/module/apache-hive-2.1.1-bin/hiveserver.log 2>&1 &

 

2. beeline链接测试

语法说明:

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

参数含义说明:

  • <zookeeper quorum> : 为Zookeeper的集群链接串,如node1:2181,node2:2181,node3:2181
  • <dbName> : 为Hive数据库,不填默认为default
  • serviceDiscoveryMode=zooKeeper : 指定模式为zooKeeper
  • zooKeeperNamespace=hiveserver2_zk : 指定ZK中的nameSpace,即参数hive.server2.zookeeper.namespace所定义

连接测试:

beeline -u "jdbc:hive2://zk_node1:2181,zk_node2:2181,zk_node3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2_zk" -n user1 -p passwd1

这里因为配置了用户名和密码 ,所以使用了-n、-p 去链接,密码设置见我的相关文章:
hive CUSTOM authentication mode:通过用户名密码连接hiveserver

 

3. zookeeper相关操作

见:

availability-enabling-hiveserver2-high文章来源地址https://www.toymoban.com/news/detail-782232.html

到了这里,关于【运维】hive 高可用详解: Hive MetaStore HA、hive server HA原理详解;hive高可用实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Hive的Metastore三种配置方式

    metastore 是 Hive 元数据的集中存放地。metastore 元数据存储主要体现在两个方面:服务和后台数据的存储。元数据包含用 Hive 创建的 database、table 等的元信息。元数据存储在关系型数据库中。如 Derby、MySQL 等。 客户端连接 metastore 服务,metastore 再去连接 MySQL 数据库来存取元数据

    2024年02月09日
    浏览(32)
  • hive 配置metastore hiveserver2服务开启

    hive-site.xml: hive-site.xml: hive-site.xml: 重启MetaStore服务: 启动hive服务: 启动后需要等待一段时间,jdbc才能连接上hive服务 使用beeline客户端验证是否可以连接:

    2024年02月03日
    浏览(31)
  • MySQL到TiDB:Hive Metastore横向扩展之路

    作者:vivo 互联网大数据团队 - Wang Zhiwen 本文介绍了vivo在大数据元数据服务横向扩展道路上的探索历程,由实际面临的问题出发,对当前主流的横向扩展方案进行了调研及对比测试,通过多方面对比数据择优选择TiDB方案。其次分享了整个扩展方案流程、实施遇到的问题及解决

    2024年02月07日
    浏览(30)
  • 访问 Hive 的元数据存储(MetaStore)的API方式

    访问 Hive 的元数据存储(MetaStore)的API方式 访问 Hive 的元数据存储(MetaStore)是通过 Hive 的 Thrift API 来实现的。Thrift 是一个跨语言的远程服务调用框架,它可以让不同编程语言之间进行跨语言的远程过程调用(RPC)。Hive 的元数据存储的 Thrift API 允许你通过编程语言(如 J

    2024年02月14日
    浏览(33)
  • Hive初始化异常:org.apache.hadoop.hive.metastore.HiveMetaException: 加载驱动程序大数据失败

    近年来,随着大数据技术的快速发展,越来越多的企业开始关注和运用大数据处理和分析。然而,在使用Hive进行大数据处理时,有时会遇到一些问题,比如在初始化过程中出现了加载驱动程序大数据失败的异常。本文将介绍这个异常的原因和解决方法,并提供相应的源代码示

    2024年02月04日
    浏览(31)
  • Hive初始化遇到的问题:org.apache.hadoop.hive.metastore.HiveMetaException: 失败加载驱动程序

    Hive初始化遇到的问题:org.apache.hadoop.hive.metastore.HiveMetaException: 失败加载驱动程序 在大数据领域,Hive是一个常用的数据仓库工具,它构建在Hadoop之上,提供了一种类似于SQL的查询语言,用于处理大规模的数据集。然而,有时在Hive的初始化过程中,可能会遇到一些错误。其中

    2024年02月08日
    浏览(37)
  • Hive 技术原理详解

    作者:禅与计算机程序设计艺术 Apache Hive 是开源的基于Hadoop的数据仓库系统。它是一个分布式数据仓库基础设施,能够帮助用户轻松地进行结构化数据分析。其核心功能包括数据的提取、转换、加载(ETL)、数据查询、统计计算、图形展示等。其性能优越、可靠性高、扩展性

    2024年02月08日
    浏览(18)
  • Hadoop-HA-Hive-on-Spark 4台虚拟机安装配置文件

    apache-hive-3.1.3-bin.tar spark-3.0.0-bin-hadoop3.2.tgz hadoop-3.1.3.tar.gz 在hdfs上新建 spark-history(设置权限777),spark-jars文件夹 上传jar到hdfs 链接hadoop中的文件 ln -s 源文件名 新文件名 链接hive中的文件 ln -s 源文件名 新文件名 链接hadoop中的文件 ln -s 源文件名 新文件名

    2024年02月07日
    浏览(36)
  • 常见的bug---3、没有启动metaStore和Hiveserver2服务导致在本机上的IDEA无法连接上虚拟机上的HIve

    在IEDA连接虚拟机上的Hive报的 Exception in thread “main” org.apache.spark.sql.AnalysisException: org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient at org.apache.spark.sql.hive.HiveExternalCatalog.withClient(HiveExternalCatalog.scala:11

    2024年02月15日
    浏览(40)
  • 详解数据仓库之拉链表(原理、设计以及在Hive中的实现)

    最近发现一本好书,读完感觉讲的非常好,首先安利给大家,国内第一本系统讲解数据血缘的书!点赞!近几天也会安排朋友圈点赞赠书活动(ง•̀_•́)ง 0x00 前言 本文将会谈一谈在数据仓库中拉链表相关的内容,包括它的原理、设计、以及在我们大数据场景下的实现方式

    2024年02月05日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包