一.MapJoin
- 概念
- join本来是reduce进行关联查找,改成了map端进行关联查找
- 特点
- 减少了reduce的压力
- 减少了数据移动,提高了IO效率
- 应用场景
- 大表join小表
- 大数据块join小数据块
- 代码实现
- hive中已经默认开启该功能
二.数据倾斜
- 概念
- 在大数据处理的过程中,出现数据分配不均匀,导致整体任务完成缓慢的现象
- 特点
- 分布式任务中,大部分任务均已完成,只有少部分卡在99%.
- 类似**木桶原理,**任务完成是时间取决于最后一个任务的完成时间
- 场景
- 假倾斜(数据本身没有倾斜)
- 由于个人代码的原因,sql编写不合理
- 数据格式设置不对(gzip snappy等不可分割的数据格式)
- 假倾斜(数据本身没有倾斜)
- 真倾斜(数据本身客观倾斜)
- vip账号倒卖导致数据倾斜
- 解决方法
- 只能分而治之,将倾斜的数据分类,将正常数据分类,然后进行分别计算。
- 解决方法
- 机器硬件不一致
- 解决方法
- 让硬件更加均衡
- 通过NodeLabel方式
- 解决方法
- vip账号倒卖导致数据倾斜
三.二次排序
- 概念
- 按照多个字段进行排序
- 特点
- 2个字段排序,第1个字段若有比较结果则按第1个字段排序,若相等,则按第2个字段升序排列。
- 场景
- 当单个字段不能够满足排序要求时,均可使用二次排序
- 代码实现
- Hadoopcore之mapreduce实现
- 重写Map和Reduce之前的输入输出的Key和Value
- HiveSQL实现
- Select * from table order by c1,c2 asc
- Hadoopcore之mapreduce实现