Hive 简介及优化策略
2015-07-29 11:48
225 查看
简介
Hive是一个基于Hadoop文件系统之上的数据仓库架构。为数据仓库管理提供了许多功能:数据ETL工具、数据存储管理和大型数据集的查询和分析能力。高延迟性。不提供数据排序和查询cache功能,不提供在线事务处理,不提供实时查询和记录级的更新,但能更好地处理不变的大规模数据集上的批量任务。
最大价值:1、可扩展性(自动适应机器数目和数据量的动态变化);2、可延展性(结合MapReduce和用户定义的函数库);3、良好的容错性;4、低约束的数据输入格式。
数据存储
四种模型:表(table),外部表(External Table),分区(Partition),桶(Bucket)优化策略
1、列裁剪:在读取数据的时候,只读取查询中需要用到的列,而忽略其它列。2、Map Join操作:Join操作在Map阶段完成,不再需要Reduce,前提条件是需要的数据在Map过程中可以访问。
Join生排序 在Reduce阶段,对一大一小的数据表类型进行Join操作,交大数据表数据拷入化到外存,以此避免消耗内在过大的问题。
3、Group By操作:Group By操作对Hive性能影响非常大,特别是处理海量数据的情况下。
1、Map端部分聚合:并不是所有的聚合操作都要在Reduce端完成,很多聚合操作都可以先 Map端进行部分聚合,最后 在Reduce端得出最终结果。Map端部分聚合基于Hash。
2、有数据倾斜的时候进行负载均衡:参数为hive.groupby.skewindata = false,默认为false。当选项设定为true,生成的查询计划会有两个MR Job。第一个MR Job中,Map的输出结果集合会随机分布到Reduce中,从而达到负载均衡的目的。第二个MR Job再根据预处理的数据结果按照Group By Key分到Reduc中(保证相同的Group By Key被 分布到同一个Recuce中),最后完成最终的聚合操作。
4、合并小文件:文件数目过多,会给HDFS带来压力,并且会影响处理效率,可以通过合并Map和Reduce的结果来消除这样的影响。
Standing on shoulders of Giants
相关文章推荐
- Lua的面向对象——类和继承
- synchronized的JAVA底层实现
- windows + maven + eclipse
- RSA不对称加密,公钥加密私钥解密,私钥加密公钥解密
- 跨域方案:jsonp的使用
- 对于pike 并发在于结构,并行在于执行的思考
- 解决burp suite 使用chrome访问https失真的问题
- Android:Layout_weight的深刻理解
- 再见,OI
- 如何解决“不能打开数据库,用户NT AUTHORITY\NETWORK SERVICE登录失败”的错误呢?
- 2.3-4 递归实现插入排序
- 深入理解jvm学习笔记1
- 类、对象、方法中常见问题
- hdu 4630 线段树+离线处理
- robotium官网
- java包 和 物理目录 解惑(转载)
- [MarsZ]Unity3d游戏开发之Unity3d全策划配置新手指引
- 实现ie6下的居中
- PHP获取某个月最大天数(最后一天)的方法
- objective-c中的方法重载