1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| Driver组件 该组件包括Compiler,Optimizer,Executor 它可以将Hive的编译,解析,优化转化为MapReduce任务 提交给Hadoop1中的JobTracker或者是Hadoop2中ResourceManager 进行实际的执行相应的任务 MetaStore组件 存储着Hive的元数据信息,将自己的元数据存储到了关系型数据库当中 支持的数据库主要有MySQL,Derby 支持把MetaStore独立出来放在远程的集群上面 使得Hive更加健壮 元数据主要包括了表的名称,表的列,分区和属性 表的属性(是否是外部表等等),表数据所在目录 用户接口 CLI(Command Line Interface,常用的接口:命令行模式) Client(Hive的客户端连接至Hive Server,在启动Client的时候,需要制定Hive Server所在的节点,并且在该节点上启动Hive Server) WUI(通过浏览器的方式访问Hive)
工作过程 用户提交查询等任务给Driver 编译器获得该用户的任务Plan 编译器Compiler根据用户任务去MetaStore中获取需要的Hive的元数据信息 编译器Compiler得到元数据信息,对任务进行编译 先将HQL转换为抽象语法树 然后将抽象语法树转换成查询块 将查询快转化为逻辑的查询计划,重写逻辑查询计划 将逻辑计划转化为物理计划(MapReduce) 最后选择最优策略 将最终的计划提交给Driver Driver将计划Plan转交给ExecutorEngine去执行 获取元数据信息 提交给JobTracker或者ResourceManager执行该任务 任务会直接读取HDFS中文件进行相应的操作 获取执行的结果 取得并返回执行结果 优化器的主要功能 将多Multiple Join合并为一个Muti-Way Join 对Join,Group By和自定义的MapReduce操作重新进行划分 消减不必要的列 在表的扫描操作中推行使用断言 对于已分区的表,消减不必要的分区 在抽样查询中,消减不必要的桶 优化器还增加了局部聚合操作用于处理大分组聚合和增加再分区操作用于处理不对称的分组聚合
|