Hive简要介绍
Hive是基于Hadoop的数据仓库平台,由Facebook贡献,其支持类似SQL的结构化查询功能。
Hive的组件总体上可以分为以下几个部分:用户接口(UI)、驱动、编译器、元数据(Hive系统参数数据)和执行引擎。
1) 对外的接口UI包括以下几种:命令行CLI,Web界面、JDBC/ODBC接口;
2) 驱动:接收用户提交的查询HQL;
3) 编译器:解析查询语句,执行语法分析,生成执行计划;
4) 元数据Metadata:存放系统的表、分区、列、列类型等所有信息,以及对应的HDFS文件信息等;
5) 执行引擎:执行执行计划,执行计划是一个有向无环图,执行引擎按照各个任务的依赖关系选择执行任务(Job)。
Hive编译器将HQL代码转换成一组操作符(operator),操作符是Hive的最小操作单元,每个操作符代表了一种HDFS操作或者MapReduce作业。
Hive优化记录
HDFS非常容易存储大数据文件,如果Hive中存在过多的小文件会给namecode带来巨大的性能压力。同时小文件过多会影响JOB的执行,hadoop会将一个job转换成多个task,即使对于每个小文件也需要一个task去单独处理,task作为一个独立的jvm实例,其开启和停止的开销可能会大大超过实际的任务处理时间。
同时我们知道hive输出最终是mr的输出,即reducer(或mapper)的输出,有多少个reducer