谈笑间学会大数据-Hive安装部署及组件架构

Hive安装部署及组件架构

Hive安装部署

首先贴出hive官网地址:http://hive.apache.org/  任何一个框架或者组件学习的时候都需要去参考一下官方文档,因为这个是学习这个组件的一种方式,大部分通过看书、看博客来进行学习,有好也有不好吧。好处是:大牛博主都已经进行了总结,让我们更加好接受。缺点:会形成依赖,缺少自己的想法和见解。大牛们怎么知道的呢?其实大部分来源于官网文档,下面让我来根据官方文档,安装部署一波吧:https://cwiki.apache.org/confluence/display/Hive/GettingStarted

谈笑间学会大数据-Hive安装部署及组件架构_第1张图片

如上图所示安装部署只需要把红色框框内的东东,浏览+实操一遍即可,完成hive的编译和安装,初学者可以直接去下载编译好的包,不用自己再去捣鼓编译了,如果想捣鼓,也可以捣鼓。下载hive包地址:https://archive.apache.org/dist/hive/

注意:

Hive 是运行在Hadoop上的哦,要保证JAVA、Hadoop都是部署好的才可以哦~

如果还没有部署,可以参考:https://blog.csdn.net/MrZhangBaby/article/details/85065415

安装Hive

  • 首先我们需要下载Hive编译后的安装包,然后解压,然后配置HIVE_HOME环境变量,如下图

谈笑间学会大数据-Hive安装部署及组件架构_第2张图片

然后直接 键入 hive 命令即可。(可能你会觉得,这也太简单了吧?使用的过程中你会发现,竟然不能开多个session窗口进行连接hive,为什么呢? 因为默认安装hive使用的元数据库是Derby 数据库,不支持并发调用hive。那么怎么可以多个窗口访问呢?需要将元数据存储改为MySQL数据库或者pg(华为FI的hive元数据在pg里面)即可)

如何修改元数据存储呢?

不多bb了,参考此链接:https://www.cnblogs.com/yongjian/p/6607984.html

个人感觉,用默认的就行,学习嘛,对不对? 先易后难、循循渐进吧~ 

到此为止,安装部署已完成!

hive组件架构

谈笑间学会大数据-Hive安装部署及组件架构_第3张图片

Client 三种访问方式

1. CLI(hive shell)、command line interface(命令行接口)
2. JDBC/ODBC(java访问hive),
3. WEBUI(浏览器访问hive)

元数据存储MetaStore

元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列、分区字段、表的类型、表的数据所在的目录等;
默认存储在自带的derby数据库中,推荐使用采用MySQL存储Metastore;
(注意下Spark连接Hive)

Driver

包含:解析器、编译器、优化器、执行器;
1. 解析器: 将SQL字符串转换成抽象语法树AST,这一步一般都用第三方工 具库完成,比如antlr;对AST进行语法分析,比如表是否存在、字段是否 存在、SQL语义是否有误(比如select中被判定为聚合的字段在group by中是 否有出现);
2. 编译器: 将AST编译生成逻辑执行计划; 
3. 优化器:对逻辑执行计划进行优化(多表JOIN难题);
4. 执行器: 把逻辑执行计划转换成可以运行的物理计划。对于Hive来说,就是MR/TEZ/Spark;

Hive On MR执行流程

谈笑间学会大数据-Hive安装部署及组件架构_第4张图片

  • Step 1:UI(user interface) 调用 executeQuery 接口,发送 HQL 查询语句给 Driver
  • Step 2:Driver 为查询语句创建会话句柄,并将查询语句发送给 Compiler, 等待其进行语句解析并生成执行计划
  • Step 3 and 4:Compiler 从 metastore 获取相关的元数据
  • Step 5:元数据用于对查询树中的表达式进行类型检查,以及基于查询谓词调整分区,生成计划
  • Step 6 (6.1,6.2,6.3):由 Compiler 生成的执行计划是阶段性的 DAG,每个阶段都可能会涉及到 Map/Reduce job、元数据的操作、HDFS 文件的操作,Execution Engine 将各个阶段的 DAG 提交给对应的组件执行。
  • Step 7, 8 and 9:在每个任务(mapper / reducer)中,查询结果会以临时文件的方式存储在 HDFS 中。保存查询结果的临时文件由 Execution Engine 直接从 HDFS 读取,作为从 Driver Fetch API 的返回内容。

你可能感兴趣的:(Hive,谈笑间学会大数据,Hadoop,大数据,hive)