当前位置: 首页 > news >正文

Hive-high Avaliabl

hive—high Avaliable

​ hive的搭建方式有三种,分别是

​ 1、Local/Embedded Metastore Database (Derby)

​ 2、Remote Metastore Database

​ 3、Remote Metastore Server

​ 一般情况下,我们在学习的时候直接使用hive –service metastore的方式启动服务端,使用hive的方式直接访问登录客户端,除了这种方式之外,hive提供了hiveserver2的服务端启动方式,提供了beeline和jdbc的支持,并且官网也提出,一般在生产环境中,使用hiveserver2的方式比较多,如图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用hiveserver2的优点如下:

​ 1、在应用端不需要部署hadoop和hive的客户端

​ 2、hiveserver2不用直接将hdfs和metastore暴露给用户

​ 3、有HA机制,解决应用端的并发和负载问题

​ 4、jdbc的连接方式,可以使用任何语言,方便与应用进行数据交互

本文档主要介绍如何进行hive的HA的搭建:

如何进行搭建,参照之前hadoop的HA,使用zookeeper完成HA

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1、环境如下:

Node01Node02Node03Node04
Namenode11
Journalnode111
Datanode111
Zkfc11
zookeeper111
resourcemanager111
nodemanager111
Hiveserver21
beeline1

2、node02—hive-site.xml

<property>  <name>hive.metastore.warehouse.dir</name>  <value>/user/hive/warehouse</value>  
</property>  
<property>  <name>javax.jdo.option.ConnectionURL</name>  <value>jdbc:mysql://node01:3306/hive?createDatabaseIfNotExist=true</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>123</value>  
</property>
<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>node01:2181,node02:2181,node03:2181</value>
</property>
<property><name>hive.zookeeper.client.port</name><value>2181</value>
</property>
<property><name>hive.server2.thrift.bind.host</name><value>node02</value>
</property>
<property><name>hive.server2.thrift.port</name><value>10001</value> 
</property>

3、node4—hive-site.xml

<property>  <name>hive.metastore.warehouse.dir</name>  <value>/user/hive/warehouse</value>  
</property>  
<property>  <name>javax.jdo.option.ConnectionURL</name>  <value>jdbc:mysql://node01:3306/hive?createDatabaseIfNotExist=true</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>123</value>  
</property>
<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>node01:2181,node02:2181,node03:2181</value>
</property>
<property><name>hive.zookeeper.client.port</name><value>2181</value>
</property>
<property><name>hive.server2.thrift.bind.host</name><value>node04</value>
</property>
<property><name>hive.server2.thrift.port</name><value>10001</value> 
</property>

4、使用jdbc或者beeline两种方式进行访问

1) beeline

!connect jdbc:hive2://node01,node02,node03/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2_zk root 123

2)jdbc

public class HiveJdbcClient2 {private static String driverName = "org.apache.hive.jdbc.HiveDriver";public static void main(String[] args) throws SQLException {try {Class.forName(driverName);} catch (ClassNotFoundException e) {e.printStackTrace();}Connection conn = DriverManager.getConnection("jdbc:hive2://node01,node02,node03/default;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2_zk", "root", "");Statement stmt = conn.createStatement();String sql = "select * from tbl";ResultSet res = stmt.executeQuery(sql);while (res.next()) {System.out.println(res.getString(1));}}
}

http://www.lryc.cn/news/268611.html

相关文章:

  • 码住!8个小众宝藏的开发者学习类网站
  • Postman常见问题及解决方法
  • ubuntu图形化登录默认只有guest session账号解决方法
  • 全国计算机等级考试| 二级Python | 真题及解析(1)
  • Java开发框架和中间件面试题(9)
  • 【ARMv8M Cortex-M33 系列 2 -- Cortex-M33 JLink 连接 及 JFlash 烧写介绍】
  • react pwa应用示例
  • python如何通过日志分析加入黑名单
  • RabbitMq知识概述
  • 专业级A链接测试特有
  • Spring Boot 入参校验及全局异常处理
  • MySQL 和 MySQL2 的区别
  • AutoCAD图纸打印后内容不见
  • ASUS华硕ROG幻16 2023款GU603VU VV VI笔记本电脑原厂Win11.22H2系统
  • 学习笔记 k8s常用kubectl命令
  • 企业数据可视化-亿发数据化管理平台提供商,实现一站式数字化运营
  • 网络通信-Linux 对网络通信的实现
  • mysql修改密码
  • 深入解析C语言中void (*signal(int ,void(*)(int) ) ) (int)
  • 网站显示不安全警告怎么办?消除网站不安全警告超全指南
  • [SWPUCTF 2021 新生赛]finalrce
  • 如何底层调用最快地复制OPC数据到关系数据库
  • 接口测试工具——ApiFox使用初体验 postman导出和ApiFox导入
  • 搜维尔科技:经脉腧穴虚拟针灸VR虚拟教学平台AcuMap软件案例分享
  • Jenkins的shared library相关
  • 文件IO
  • 【日常聊聊】编程语言的未来:趋势、多样性、人工智能融合、教育与生态系统
  • 无需手动搜索!轻松创建IntelliJ IDEA快捷方式的Linux教程
  • 如何去掉微博水印?用它一键去除三秒出图
  • Golang 泛型实现原理