how to optimize hive
hive tutorial
Hive SQL的编译过程
hive的map reduce 执行顺序
hive优化
hive 总结以及优化
- https://blog.csdn.net/yu0_zhang0/article/details/81776459
- https://blog.csdn.net/ForgetThatNight/article/details/79632364
- Hive于关系型数据库的区别
- 时效性、延时性比较高,可扩展性高;
- Hive数据规模大,优势在于处理大数据集,对于小数据集没有优势
- 事务没什么用(比较鸡肋,没什么实际的意义,对于离线的来说) 一个小问题:那个版本开始提供了事务?
- insert/update没什么实际用途,大数据场景下大多数是select
- RDBMS也支持分布式,节点有限 成本高,处理的数据量小
- Hadoop集群规模更大 部署在廉价机器上,处理的数据量大
- 数据库可以用在Online的应用中,Hive主要进行离线的大数据分析;
- 数据库的查询语句为SQL,Hive的查询语句为HQL;
- 数据库数据存储在LocalFS,Hive的数据存储在HDFS;
- 数据格式:Hive中有多种存储格式:由于在加载数据的过程中,不需要从用户数据格式到 Hive 定义的数据格式的转换,
- 因此,Hive 在加载的过程中不会对数据本身进行任何修改,而只是将数据内容复制或者移动到相应的 HDFS 目录中。
- 而在数据库中,不同的数据库有不同的存储引擎,定义了自己的数据格式。所有数据都会按照一定的组织存储,因此,
- 数据库加载数据的过程会比较耗时。
- Hive执行MapReduce,MySQL执行Executor;
- Hive的优点
- 简单易上手
- 扩展能力较好(指集群 HDFS或是YARN)
- 统一的元数据管理 metastore包括的了数据库,表,字段分区等详细信息
- SQL转化为MapReduce的过程
- Antlr定义SQL的语法规则,完成SQL词法,语法解析,将SQL转化为抽象语法树AST Tree
- 遍历AST Tree,抽象出查询的基本组成单元QueryBlock
- 遍历QueryBlock,翻译为执行操作树OperatorTree
- 逻辑层优化器进行OperatorTree变换,合并不必要的ReduceSinkOperator,减少shuffle数据量
- 遍历OperatorTree,翻译为MapReduce任务
- 物理层优化器进行MapReduce任务的变换,生成最终的执行计划
Hadoop压缩相关
Correlation OPtimizer
hive language manual(说明书)
db2 sql tutorial