Hive的架构原理
image
- 两种客户端
(1)CLI(command-line interface):命令行客户端(可以在shell中操作);
(2)JDBC客户端
- 四种驱动Driver
(1)SQL Parser解析器:检查sql语法是否有错误;
(2)Physical Plan编译器:把sql语句转化成mr程序;
(3)Query Optimizer优化器:优化sql语句;
(4)Execution执行器:执行MR程序。
- 元数据库Meta store
(1)Meta store是Hive数据库中的一个库,用于存储处理数据的元数据,包括:
表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等。
(2)Meta store默认存储在Hive自带的derby数据库中,但因为derby无法实现并发,实际工作中一般将derby替换为mysql;
(3)Hive中处理的数据分两部分存放:
① 处理的结构化数据,存储在HDFS中
② 表的元数据存储在元数据库mysql中
这样,有了表的元数据信息,就能找到对应的字段;然后把字段映射到结构化数据中,这样就可以通过映射形成一张虚表;
也就是说,表的元数据和mysql中的结构化数据,通过映射,构成一张虚表,用于Hive查询数据分析。
hive的存储过程:
启动hive时,会初始化hive,这时会在mysql中生成大约36张表(后续随着业务的复杂会增加),然后创建表,会在mysql中存放这个表的信息(不是以表的形式存在的,而是把表的属性以数据的形式放在mysql中,这样在hive中使用sql命令一样是能够查到这张表的)。然后把本地的文本文件使用hive命令格式化导入到表中,这样这些数据就存放到hdfs中,而不是在mysql或hive中。
————————————————
版权声明:本文为CSDN博主「攻城狮Kevin」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wx1528159409/java/article/details/84667658
网友评论