大数据之数据仓库Hive架构分析(数据仓库hive的工作原理)
baijin 2024-08-16 11:56:26 博客文章 8 ℃ 0 评论
Hive 介绍
hive 是就hadoop 的一个数据仓库工具,可以将结构化数据映射成一张表,并且提供类sql 查询功能。设计的目的就是让熟悉sql 语法的开发人员能够不通过写M/R 作业任务就可以完成对存储在hdfs中的数据进行查询计算。
hive 可以将sql 转换成计算引擎所支持的task作业执行,可以以M/R/Spark/Tez 作为计算引擎,执行下效率取决于计算引擎
hive 只是适合做批量离线数据分析处理
Hive 处理数据流程
hive 利用hdfs 存储数据,通过M/R 进行数据计算分析流程
hive 的元数据信息保存通过独立的服务组件 Hive Metastore Server 存储在关系型数据库中,其支持的数据有derby(默认支持)、mysql等。
此处提到的Thrift是一种描述性语言和通信协议,被用来定义跨语言服务(java/c++/go等),被facebook为支持大规模的跨语言服务而开发的RPC框架使用。
HiveServer2 (HS2) is a server interface that enables remote clients to execute queries against Hive and retrieve the results (a more detailed intro here).
The current implementation, based on Thrift RPC, is an improved version of HiveServer and supports multi-client concurrency and authentication.
Hive Server2(HS2) 可以通过http(hive-0.13版本以上)和tcp(即binary,默认)进行传输Thrift Rpc 消息,可以通过 hive.server2.transport.mode 设置的值(http或binary) 执行数据传输模式,不能同时使用这两种模式。
HS2的执行核心是Thrift Rpc 服务。Hive Server 在tcp 传输模式下使用的是ThreadPoolServer,而http 传输模式下使用的是Jetty Server, Server 会为每一个tcp 连接分配一个线程去执行业务处理。例如,cdh 中的HS2 配置:
从hive的组件架构图中我们可以看出,driver 包含compiler/optimizer/executor,hive 通过antlr3 定义HiveSql 语言。
ANTLR(ANother Tool for Language Recognition) 是一款强大的语言构建工具,提供词法分析、语法分析等功能。用户编写语言的词法规则和语法规则,然后通过ANTLR 提供的运行时库将语言转换成抽象语法树,支持语法树重写,import、语法预测等功能。
本文暂时没有评论,来添加一个吧(●'◡'●)