• 深入理解hadoop数据倾斜


    深入理解hadoop之数据倾斜


     1、什么是数据倾斜

      我们在用map /reduce程序执行时,有时候会发现reduce节点大部分执行完毕,但是有一个或者几个reduce节点运行很慢,导致整个程序的处理时间很长,这是因为某一个key的条数比其他key多很多(有时是百倍或者千倍之多),这条key所在的reduce节点所处理的数据量比其他节点就大很多,从而导致某几个节点迟迟运行不完。这种现象就是因为key分布不均匀、散度不够导致的,也就是我们所说的数据倾斜。


    2、数据倾斜产生的原因

      在hive上执行join,group by,count distinct等操作的时候可能会发现ruduce阶段卡在99.99%,一直99.99%不能结束,查看任务监控页面,发现只有少量(1个或几个)reduce子任务未完成;这里进一步查看进程日志或者WEBUI会发现:有一个多几个reduce卡住;各种container报错OOM,读写的数据量极大,至少远远超过其它正常的reduce ,伴随着数据倾斜,会出现任务被kill等各种诡异的表现。一般情况下Hive的数据倾斜,都发生在Sql中Group和On上,而且和数据逻辑绑定比较深。


    3、数据倾斜解决的办法

      1)hive.groupby.skewindata变量,这个变量是用于控制负载均衡的。当数据出现倾斜时,如果该变量设置为true,那么Hive会自动进行负载均衡。

      2)mapjoin方式 
            3)count distinct的操作,先转成group,再count 
            4)hive.groupby.skewindata=true 
            5)left semi jioin的使用 
            6)设置map端输出、中间结果压缩

  • 相关阅读:
    scrapy 第一个案例(爬取腾讯招聘职位信息)
    scrapy 代码调试用 shell
    scrapy 命令行创建 启动 跟踪
    scrapy 手动编写模板
    scrapy安装
    爬虫之xpath用法
    爬虫之 beautifusoup4
    抓包工具fiddler
    12306登录爬虫 session版本
    Drainage Ditches(dinic)
  • 原文地址:https://www.cnblogs.com/bigdata-stone/p/9309153.html
Copyright © 2020-2023  润新知