第一部分:Hadoop 计算框架的特性什么是数据倾斜由于数据的不均衡原因,导致数据分布不均匀,造成数据大量的集中到一点,造成数据热点
Hadoop 框架的特性1)不怕数据大,怕数据倾斜2)jobs 数比较多的作业运行效率相对比较低,比如即使有几百行的表,如果多次关联多次汇总,产生十几个 jobs,耗时很长
原因是 mapreduce 作业初始化的时间是比较长的3)sum,count,max,min 等 UDAF,不怕数据倾斜问题,hadoop 在 map 端的汇总合并优化,使数据倾斜不成问题4)count(distinct),在数据量大的情况下,效率较低,因为 count(distinct)是按 groupby 字段分组,按 distinct 字段排序,一般这种分布方式是很倾斜的
第二部分:优化的常用手段优化的常用手段1)解决数据倾斜问题2)减少 job 数3)设置合理的 mapreduce 的 task 数,能有效提升性能
4)了解数据分布,自己动手解决数据倾斜问题是个不错的选择5)数据量较大的情况下,慎用 count(distinct)
6)对小文件进行合并,是行至有效的提高调度效率的方法
7)优化时把握整体,单个作业最优不如整体最优
第三部分:Hive 的数据类型方面的优化优化原则按照一定规则分区(例如根据日期)
通过分区,查询的时候指定分区,会大大减少在无用数据上的扫描,同时也非常方便数据清理
合理的设置 Buckets
在一些大数据 join 的情况下,mapjoin 有时候会内存不够
如果使用 BucketMapJoin 的话,可以只把其中的一个 bucket 放到内存中,内存中原来放不下的内存表就变得可以放下
这需要使用 buckets 的键进行 join 的条件连结,并且需要如下设置sethive
optimize
bucketmapjoin=true第四部