热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ConfiguringHiveHighAvailability

Hive从0.14开始,使用Zookeeper实现了HiveServer2的HA功能(ZooKeeperServiceDiscovery)

Hive从0.14开始,使用Zookeeper实现了HiveServer2的HA功能(ZooKeeper Service Discovery),Client端可以通过指定一个nameSpace来连接HiveServer2,而不是指定某一个host和port。本文描述了hive的metastore和HiveServer2的高可用配置。使用的Hive版本为2.3.2。
单实例的构成如下图:
Configuring Hive High Availability
如果使用HiveServer2的Client并发比较少,可以使用一个HiveServer2实例,绝对没问题。
而都多实例的构成如下图:
Configuring Hive High Availability
如图,本文在hdp01和hdp04上分别启用两个HiveServer2的实例,并通过zookeeper完成HA的配置(ZooKeeper已安装并配置)。
一、Hive Metastore HA配置
1、编辑hive-site.xml文件
配置很简单,只需要指定 hive.metastore.uris的值即可。多个server之间以逗号隔开,如下图:
Configuring Hive High Availability
完了之后,同步hive-site.xml到hdp04节点上:

[hadoop@hdp01 ~]$ scp /u01/hive/conf/hive-site.xml hdp04:/u01/hive/conf/

2、重启各个节点的hive服务

[hadoop@hdp01 ~]$ hive --service metastore >/dev/null &
[hadoop@hdp01 ~]$ hive --service hiveserver2 >/dev/null &
[hadoop@hdp04 ~]$ hive --service metastore >/dev/null &
[hadoop@hdp04 ~]$ hive --service hiveserver2 >/dev/null &

3、更新FS Roots
Hive的元数据信息是存放在关系型数据库中的,我们只要找到存放这些数据的Table,然后用SQL去修改就行了。但是这样比较麻烦,你还得去登录数据库,最重要的是这样还很容易出错,所以不推荐使用。
查看当前的FS Root信息:

[hadoop@hdp01 ~]$ hive --service metatool -listFSRoot
Listing FS Roots..
hdfs://hdp01:9000/user/hive/warehouse/hivedb.db
hdfs://hdp01:9000/user/hive/warehouse
[hadoop@hdp04 ~]$ hive --service metatool -listFSRoot
Listing FS Roots..
hdfs://hdp01:9000/user/hive/warehouse/hivedb.db
hdfs://hdp01:9000/user/hive/warehouse

使用下面的命令进行模拟更新:

[hadoop@hdp01 ~]$ hive --service metatool -updateLocation hdfs://hdp04:9000 hdfs://hdp01:9000 -dryRun
Initializing HiveMetaTool..
Looking for LOCATION_URI field in DBS table to update..
Dry Run of updateLocation on table DBS..
old location: hdfs://hdp01:9000/user/hive/warehouse/hivedb.db new location: hdfs://hdp04:9000/user/hive/warehouse/hivedb.db
old location: hdfs://hdp01:9000/user/hive/warehouse new location: hdfs://hdp04:9000/user/hive/warehouse
Found 2 records in DBS table to update
Looking for LOCATION field in SDS table to update..
Dry Run of updateLocation on table SDS..
old location: hdfs://hdp01:9000/user/hive/warehouse/hivedb.db/exam_score new location: hdfs://hdp04:9000/user/hive/warehouse/hivedb.db/exam_score
old location: hdfs://hdp01:9000/user/hive/warehouse/hivedb.db/tbdelivermsg new location: hdfs://hdp04:9000/user/hive/warehouse/hivedb.db/tbdelivermsg
old location: hdfs://hdp01:9000/user/hive/warehouse/hivedb.db/hivedb__exam_score_exam_idx__ new location: hdfs://hdp04:9000/user/hive/warehouse/hivedb.db/hivedb__exam_score_exam_idx__
old location: hdfs://hdp01:9000/user/hive/warehouse/hivedb.db/hivedb__xj_student_xj_student_idx__ new location: hdfs://hdp04:9000/user/hive/warehouse/hivedb.db/hivedb__xj_student_xj_student_idx__
old location: hdfs://hdp01:9000/user/hive/warehouse/hivedb.db/xj_student new location: hdfs://hdp04:9000/user/hive/warehouse/hivedb.db/xj_student
Found 5 records in SDS table to update

如果模拟更换成功,则使用不加-dryRun参数进行实际替换:

[hadoop@hdp01 ~]$ hive --service metatool -updateLocation hdfs://hdp04:9000 hdfs://hdp01:9000
Initializing HiveMetaTool..
Looking for LOCATION_URI field in DBS table to update..
Successfully updated the following locations..
old location: hdfs://hdp01:9000/user/hive/warehouse/hivedb.db new location: hdfs://hdp04:9000/user/hive/warehouse/hivedb.db
old location: hdfs://hdp01:9000/user/hive/warehouse new location: hdfs://hdp04:9000/user/hive/warehouse
Updated 2 records in DBS table
Looking for LOCATION field in SDS table to update..
Successfully updated the following locations..
old location: hdfs://hdp01:9000/user/hive/warehouse/hivedb.db/exam_score new location: hdfs://hdp04:9000/user/hive/warehouse/hivedb.db/exam_score
old location: hdfs://hdp01:9000/user/hive/warehouse/hivedb.db/tbdelivermsg new location: hdfs://hdp04:9000/user/hive/warehouse/hivedb.db/tbdelivermsg
old location: hdfs://hdp01:9000/user/hive/warehouse/hivedb.db/hivedb__exam_score_exam_idx__ new location: hdfs://hdp04:9000/user/hive/warehouse/hivedb.db/hivedb__exam_score_exam_idx__
old location: hdfs://hdp01:9000/user/hive/warehouse/hivedb.db/hivedb__xj_student_xj_student_idx__ new location: hdfs://hdp04:9000/user/hive/warehouse/hivedb.db/hivedb__xj_student_xj_student_idx__
old location: hdfs://hdp01:9000/user/hive/warehouse/hivedb.db/xj_student new location: hdfs://hdp04:9000/user/hive/warehouse/hivedb.db/xj_student
Updated 5 records in SDS table
[hadoop@hdp04 ~]$ hive --service metatool -listFSRoot
Initializing HiveMetaTool..
Listing FS Roots..
hdfs://hdp04:9000/user/hive/warehouse/hivedb.db
hdfs://hdp04:9000/user/hive/warehouse

4、测试
将一个节点的metastore关闭,然后使用beeline命令进行测试,如下:

beeline> !connect jdbc:hive2://hdp04:10000 hadoop redhat org.apache.hive.jdbc.HiveDriver
Connecting to jdbc:hive2://hdp04:10000
Connected to: Apache Hive (version 2.3.2)
Driver: Hive JDBC (version 2.3.2)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://hdp04:10000> use hivedb;
OK
No rows affected (0.069 seconds)
0: jdbc:hive2://hdp04:10000> show tables;

Configuring Hive High Availability
二、Hive HA配置
1、Hive配置
各个节点上编辑hive-site.xml文件,设置以下参数的值:

[hadoop@hdp01 ~]$ vi /u01/hive/conf/hive-site.xml
hive.server2.support.dynamic.service.discovery=true
hive.server2.zookeeper.namespace=hivesrv2
hive.zookeeper.quorum=hdp01:2181,hdp02:2181,hdp03:2181,hdp04:2181
hive.zookeeper.client.port=2181
hive.server2.thrift.bind.host=0.0.0.0
hive.server2.thrift.port=10000

2、启动第一个节点hive服务
启动服务:

[hadoop@hdp01 ~]$ hive --service metastore >/dev/null &
[hadoop@hdp01 ~]$ hive --service hiveserver2 >/dev/null &
[hadoop@hdp01 ~]$ zkCli.sh

Configuring Hive High Availability
如图,hive服务已注册到ZooKeeper。
3、启动第二个节点的hive服务

[hadoop@hdp04 ~]$ hive --service hiveserver2 >/dev/null &
[hadoop@hdp04 ~]$ zkCli.sh

Configuring Hive High Availability
如图,第二个hive也注册成功。
4、连接测试
Beeline 是一个 Hive 客户端,包含在 HDInsight 群集的头节点上。 Beeline 使用 JDBC 连接到 HiveServer2,后者是 HDInsight 群集上托管的一项服务。 还可以使用 Beeline 通过 Internet 远程访问 Hive on HDInsight。

[hadoop@hdp01 ~]$ beeline -u "jdbc:hive2://hdp01:2181,hdp02:2181,hdp03:2181,hdp04:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hivesrv2" -n hadoop -p
Connecting to jdbc:hive2://hdp01:2181,hdp02:2181,hdp03:2181,hdp04:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hivesrv2;user=hadoop
Enter password for jdbc:hive2://hdp01:2181,hdp02:2181,hdp03:2181,hdp04:2181/: ******
17/12/13 15:48:16 [main]: INFO jdbc.HiveConnection: Connected to 0.0.0.0:10000
Connected to: Apache Hive (version 2.3.2)
Driver: Hive JDBC (version 2.3.2)
Transaction isolation: TRANSACTION_REPEATABLE_READ
Beeline version 2.3.2 by Apache Hive
0: jdbc:hive2://hdp01:2181,hdp02> show databases;
+----------------+
| database_name |
+----------------+
| default |
| hivedb |
+----------------+
2 rows selected (0.43 seconds)
0: jdbc:hive2://hdp01:2181,hdp02> use hivedb;
No rows affected (0.048 seconds)
0: jdbc:hive2://hdp01:2181,hdp02> show tables;
+--------------------------------------+
| tab_name |
+--------------------------------------+
| exam_score |
| hivedb__exam_score_exam_idx__ |
| hivedb__xj_student_xj_student_idx__ |
| tbdelivermsg |
| xj_student |
+--------------------------------------+
5 rows selected (0.143 seconds)

参考文献:
1、将 Beeline 客户端与 Apache Hive 配合使用
2、HiveServer2的高可用-HA配置

转:https://blog.51cto.com/candon123/2050259



推荐阅读
  • FastDFS Nginx 扩展模块的源代码解析与技术剖析
    FastDFS Nginx 扩展模块的源代码解析与技术剖析 ... [详细]
  • 本文深入解析了 Apache 配置文件 `httpd.conf` 和 `.htaccess` 的优化方法,探讨了如何通过合理配置提升服务器性能和安全性。文章详细介绍了这两个文件的关键参数及其作用,并提供了实际应用中的最佳实践,帮助读者更好地理解和运用 Apache 配置。 ... [详细]
  • 本文详细介绍了如何安全地手动卸载Exchange Server 2003,以确保系统的稳定性和数据的完整性。根据微软官方支持文档(https://support.microsoft.com/kb833396/zh-cn),在进行卸载操作前,需要特别注意备份重要数据,并遵循一系列严格的步骤,以避免对现有网络环境造成不利影响。此外,文章还提供了详细的故障排除指南,帮助管理员在遇到问题时能够迅速解决,确保整个卸载过程顺利进行。 ... [详细]
  • Node.js 配置文件管理方法详解与最佳实践
    本文详细介绍了 Node.js 中配置文件管理的方法与最佳实践,涵盖常见的配置文件格式及其优缺点,并提供了多种实用技巧和示例代码,帮助开发者高效地管理和维护项目配置,具有较高的参考价值。 ... [详细]
  • Go 项目中数据库配置文件的优化与应用 ... [详细]
  • Hadoop 2.6 主要由 HDFS 和 YARN 两大部分组成,其中 YARN 包含了运行在 ResourceManager 的 JVM 中的组件以及在 NodeManager 中运行的部分。本文深入探讨了 Hadoop 2.6 日志文件的解析方法,并详细介绍了 MapReduce 日志管理的最佳实践,旨在帮助用户更好地理解和优化日志处理流程,提高系统运维效率。 ... [详细]
  • 构建高可用性Spark分布式集群:大数据环境下的最佳实践
    在构建高可用性的Spark分布式集群过程中,确保所有节点之间的无密码登录是至关重要的一步。通过在每个节点上生成SSH密钥对(使用 `ssh-keygen -t rsa` 命令并保持默认设置),可以实现这一目标。此外,还需将生成的公钥分发到所有节点的 `~/.ssh/authorized_keys` 文件中,以确保节点间的无缝通信。为了进一步提升集群的稳定性和性能,建议采用负载均衡和故障恢复机制,并定期进行系统监控和维护。 ... [详细]
  • HBase在金融大数据迁移中的应用与挑战
    随着最后一台设备的下线,标志着超过10PB的HBase数据迁移项目顺利完成。目前,新的集群已在新机房稳定运行超过两个月,监控数据显示,新集群的查询响应时间显著降低,系统稳定性大幅提升。此外,数据消费的波动也变得更加平滑,整体性能得到了显著优化。 ... [详细]
  • Redis 主从复制机制详解及其工作原理
    主从复制机制在 Redis 中具有重要作用,能够实现读写分离、提升系统性能并提供快速的灾难恢复能力。具体实现方面,以一主两从的架构为例,需要创建三个独立的配置文件(.conf),分别用于主节点和两个从节点的设置。通过这种方式,可以从主节点同步数据到从节点,确保数据的一致性和高可用性。此外,还可以利用从节点进行读操作,减轻主节点的压力,进一步提高系统的整体性能。 ... [详细]
  • 如何在PHP中正确配置错误显示功能
    在PHP中正确配置错误显示功能的方法如下:首先,定位并打开“php.ini”配置文件;接着,将“display_errors”参数设置为“On”;最后,在PHP代码文件的顶部添加 `ini_set('display_errors', '1');` 以确保错误信息能够被正确显示。此外,建议在开发环境中启用此功能,而在生产环境中禁用,以避免敏感信息泄露。 ... [详细]
  • PHP与MySQL的Web应用开发技术深入解析
    PHP与MySQL的Web应用开发技术深入解析 ... [详细]
  • 在SQL Server 2008数据库迁移过程中,备份方法是一种高效且可靠的导出手段。本文详细介绍了如何利用备份功能实现数据的快速迁移,并提供了具体的步骤和注意事项,适合Golang程序员和数据库管理员参考。 ... [详细]
  • 2016-2017学年《网络安全实战》第三次作业
    2016-2017学年《网络安全实战》第三次作业总结了教材中关于网络信息收集技术的内容。本章主要探讨了网络踩点、网络扫描和网络查点三个关键步骤。其中,网络踩点旨在通过公开渠道收集目标信息,为后续的安全测试奠定基础,而不涉及实际的入侵行为。 ... [详细]
  • JBPM 6.5 环境配置深入解析(下篇)
    本文深入探讨了JBPM 6.5 的环境配置细节,从零开始详细介绍了下载、解压后的文件结构,并结合实际操作步骤,为初学者提供了全面的配置指南。通过具体的示例和详细的解释,帮助读者快速掌握 JBPM 6.5 的安装与配置过程。 ... [详细]
  • 在搭建Hadoop集群以处理大规模数据存储和频繁读取需求的过程中,经常会遇到各种配置难题。本文总结了作者在实际部署中遇到的典型问题,并提供了详细的解决方案,帮助读者避免常见的配置陷阱。通过这些经验分享,希望读者能够更加顺利地完成Hadoop集群的搭建和配置。 ... [详细]
author-avatar
舍舍与你-6
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有