大数据开发套件提供了直观的数据操作入口,数据研发过程代码的编写,调试,优化,发布都可以在大数据开发套件中进行。 拿一个任务耗时过长作例子,看看在大数据开发套件上我们是怎么处理碰到的问题的。
一个task执行时间过长,除掉本身代码的性能问题,那么有两种比较大的可能: 一种是等待问题,一种是数据倾斜问题 等待问题可能是由于系统资源不足,系统繁忙,优先级不够,数据量太大,碰到了坏盘等原因导致的 我们可以通过调整优先级,重跑,过滤初始数据等方法来处理。
倾斜问题则一般是数据本身的问题,常见的数据倾斜是怎么造成的? Shuffle的时候,将各个节点上相同的key拉取到某个节点的一个task进行处理,比如按照key进行聚合或join等操作,如果某个key对应的数据量特别大的话,就会发生数据倾斜现象。数据倾斜就成为了整个task运行时间的短板。
触发shuffle的常见算子:distinct、groupBy、join等。
要解决数据倾斜的问题,首先要定位数据倾斜发生在什么地方,首先是哪个stage,直接在D2 UI上看就可以,查看数据是否倾斜了 logview--odps task--detail--stage--longtail
根据stage日志,判断出数据倾斜发生在哪个算子上。
根据倾斜发生的阶段,我们又可以把它们分为map倾斜,reduce倾斜,join倾斜
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。