相信大部分做数据的童鞋们都会遇到数据倾斜,数据倾斜会发生在数据开发的各个环节中,比如:
1.用Hive算数据的时候reduce阶段卡在99.99%
2.用SparkStreaming做实时算法时候,一直会有executor出现OOM的错误,但是其余的executor内存使用率却很低。
3.这些问题经常会困扰我们,辛辛苦苦等了几个小时的数据就是跑不出来,心里多难过啊。
为什么要突出这么大数据量?先说一下笔者自己最初对数据量的理解:
数据量大就了不起了?数据量少,机器也少,计算能力也是有限的,因此难度也是一样的。凭什么数据量大就会有数据倾斜,数据量小就没有?
这样理解也有道理,但是比较片面,举两个场景来对比:
公司一:总用户量1000万,5台64G内存的的服务器。
公司二:总用户量10亿,1000台64G内存的服务器。
两个公司都部署了Hadoop集群。假设现在遇到了数据倾斜,发生什么?
1.公司一的数据分析师在做join的时候发生了数据倾斜,会导致有几百万用户的相关数据集中到了一台服务器上,几百万的用户数据,说大也不大,正常字段量的数据的话64G还是能轻松处理掉的。
2.公司二的数据分析师在做join的时候也发生了数据倾斜,可能会有1个亿的用户相关数据集中到了一台机器上了(相信我,这很常见)。这时候一台机器就很难搞定了,最后会很难算出结果。
下面会分几个场景来描述一下数据倾斜的特征,方便读者辨别。由于Hadoop和Spark是最常见的两个计算平台,下面就以这两个平台说明。
Hadoop中直接贴近用户使用使用的时Mapreduce程序和Hive程序,虽说Hive最后也是用MR来执行(至少目前Hive内存计算并不普及),但是毕竟写的内容逻辑区别很大,一个是程序,一个是Sql,因此这里稍作区分。
具体表现:
Hadoop中的数据倾斜主要表现在: Reduce阶段卡在99.99%,一直不能结束。
这里如果详细的看日志或者和监控界面的话会发现:
Spark中的数据倾斜也很常见,这里包括Spark Streaming和Spark Sql,表现主要有下面几种:
不能一样使用,会卡的。一、凡是带有SERVER的,都是服务器专用操作系统,该种系统设计时,把主要功能都向服务器方面倾斜了,服务器知道吗,就比如大型网站用的电脑,装大量数据供数量众多的用户访问的。如果主要功能倾斜到服务器这一块,那其他方面肯定就弱了,比如你用这种操作系统来看电影呀上网呀玩游戏呀,那肯定发挥不了他的优势,而且可能很卡。
二、WIN7是个人版操作系统,和WINXP一个类型,个人版的操作系统,其主要功能就不要服务器方面了,如果用这种操作系统来作服务器用,那访问的人不到十来个,就会死机了。相反,这种系统用来玩游戏,上网,看电影,制图,制动画等,那可就是飞速了。
1、原料:电缆故障指示器、倾角传感器、微气象传感器。
2、服务器四信输电杆塔倾斜监测方案由前端监控装置和远程平台两部分组成,前端装置包含倾角传感器、微气象传感器、控制主机、风能和太阳能设备,平台端包括服务器、屏幕墙、移动设备等。
3、风能和太阳能设备为控制主机和传感器提供电源,控制主机实时获取倾角传感器和微气象传感器采集的杆塔倾斜状态及环境气象数据并传送给服务器,服务器实时分析数据,最终在大屏幕或移动终端上查看数据。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)