美文网首页
HiveServer2、metaStore以及HiveThrif

HiveServer2、metaStore以及HiveThrif

作者: 烂泥_119c | 来源:发表于2020-01-05 23:33 被阅读0次

HiveServer2和metaStore

hiveServer2和metaStore其实都是hive本身带的组件,那么两者究竟有什么不同呢?

  • metaStore:hive的metaStore提供的是一个服务,而这个服务就是将hive的元数据暴露出去,而不是需要通过对hive元数据库mysql的访问才能拿到hive的元数据信息;metastore服务实际上就是一种thrift服务,通过它我们可以获取到hive原数据,并且通过thrift获取原数据的方式,屏蔽了数据库访问需要驱动,url,用户名,密码等等细节
  • hiveServer2: HiveServer2(HS2)是一个服务端接口,使远程客户端可以执行对Hive的查询并返回结果。目前基于Thrift RPC的实现是HiveServer的改进版本,并支持多客户端并发和身份验证, 启动hiveServer2服务后,就可以使用jdbc,odbc,或者thrift的方式连接

两者的关系见下图:


image.png

HiveThriftServer2

那么hiveThriftServer2又是什么呢?

  • 其实HiveThriftServer2是sparkSql中的一个服务,他继承了HiveServer2,也就是说HiveServer2有的功能,它一样也有,Spark Thrift Server的接口和协议都和HiveServer2完全一致,因此我们部署好Spark Thrift Server后,可以直接使用hive的beeline访问Spark Thrift Server执行相关语句。Spark Thrift Server的目的也只是取代HiveServer2,因此它依旧可以和Hive Metastore进行交互,获取到hive的元数据。那么具体有什么不同呢?
    详见下表
Hive on Spark Spark Thrift Server
任务提交模式 每个session都会创建一个RemoteDriver,也就是对于一个Application。之后将sql解析成执行的物理计划序列化后发到RemoteDriver执行 本身的Server服务就是一个Driver,直接接收sql执行。也就是所有的session都共享一个Application
性能 性能一般 如果存储格式是orc或者parquet,性能会比hive高几倍,某些语句甚至会高几十倍。其他格式的话,性能相差不是很大,有时hive性能会更好
并发 如果任务执行不是异步的,就是在thrift的worker线程中执行,受worker线程数量的限制。异步的话则放到线程池执行,并发度受异步线程池大小限制。 处理任务的模式和Hive一样。
sql兼容 主要支持ANSI SQL 2003,但并不完全遵守,只是大部分支持。并扩展了很多自己的语法 Spark SQL也有自己的实现标准,因此和hive不会完全兼容。具体哪些语句会不兼容需要测试才能知道
HA 可以通过zk实现HA 没有内置的HA实现,不过spark社区提了一个issue并带上了patch,可以拿来用:SPARK-11100
  • HiveThriftServer2对于spark来说,就是一个任务,也需要spark-submit提交,但是他却是一个常驻的进行,实时监听对应端口的查询任务,并进行查询,具体的执行逻辑参看下图


    image.png

相关文章

网友评论

      本文标题:HiveServer2、metaStore以及HiveThrif

      本文链接:https://www.haomeiwen.com/subject/bqchactx.html