为什么在Hive中要启动Metadata和hiveserver2服务

为什么在Hive中要启动Metadata和hiveserver2服务

 在浩如烟海里的文章中,遍布着如何启动Metadata和hiveserver2服务,以及启动后hive出现的问题,那么到底为什么要启动这两个服务呢?为什么hiveserver后面还有个2呢?做学问从来都不能浅尝辄止,必须知道他们的前世今生,走,咱们把这俩服务的祖坟刨了去!
Metadata
 先看这个Metadata服务,因为元数据包含用hive创建的database、table等的信息,元数据存储在关系型数据库中,如derby、MySQL中,而metastore作用就是客户端连接metastore服务,metastore再去连接MySQL数据库来存取元数据,有了metastore服务,就可以有多个客户端同时连接,而且客户端不需要知道MySQL的用户名和密码,只需要连接metastore服务即可。
Metastore 有3中开启方式:
1、默认开启方式:
  没有配置metaStore的时候,每当开启bin/hive;或者开启hiveServer2的时候,都会在内部启动一个metastore嵌入式服务;资源比较浪费,如果开启多个窗口,就会存在多个metastore server。
2、local mataStore(本地)
 当metaStore和装载元数据的数据库(MySQL)存在同一机器上时配置是此模式,开启metastore服务就只需要开启一次就好,避免资源浪费!
3、Remote Metastore(远程)
 当metaStore和装载元数据的数据库(MySQL)不存在同一机器上时配置是此模式,开启metastore服务就只需要开启一次就好,避免资源浪费!
hiveserver2
 为什么它叫2呢,因为人家原来还真有个1,hiveServer和hiveServer2都允许远程客户端在不启动CLI的情况下对hive进行操作,其实hiveServer和hiveServer2都是基于thrift的,既然已经存在HiveServer,为什么还需要HiveServer2呢?这是因为HiveServer不能处理多于一个客户端的并发请求,这是由于HiveServer使用的Thrift接口所导致的限制,不能通过修改HiveServer的代码修正。因此在Hive-0.11.0版本中重写了HiveServer代码得到了HiveServer2,进而解决了该问题。HiveServer2支持多客户端的并发和认证,为开放API客户端如JDBC、ODBC提供更好的支持。果然是长江后浪推前浪,前浪死在沙滩上!
总结
  Metadata服务可以使得多客户端免密连接MySQL,因为他在中间起了一个桥梁的作用。
 Hiveserver2服务可以实现多客户端的并发请求,支持了开放API客户端的JDBC的使用。
  而在我们使用hive时一般有mysql和jdbc的两种方式进行访问,所以与这两个服务一一对应上了,俩人一个管一个,分工明确,不会打架。这就是为什么在Hive 2.x以上版本,要先启动这两个服务,否则会报错!

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值