Hadoop运维记录系列(二十三)
最近做集群机房迁移,在旧机房和新机房之间接了根专线,做集群不停机搬迁,也就是跨机房,同时要新加百多台服务器,遇到几个问题,记录一下。
创新互联是专业的富裕网站建设公司,富裕接单;提供做网站、成都做网站,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行富裕网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
旧集群的机器是centos 6, 新机房加的机器是centos 7。
一、丢包问题
在跨机房的时候,datanode显示很多Slow BlockReceiver的日志
WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Slow BlockReceiver write packet to mirror took 630ms(threshold=300ms)
经查,这个报错的主要原因出在网卡的MTU设置上,hadoop建议将网卡mtu值从1500设置为9000,以支持接收jumbo frame。调整mtu值后,偶尔还会有几条,但频率小多了。而且我记得这个得交换机一起配合修改,光改服务器不好使。
二、centos7 执行df命令挂起,无法退出
在cent7下面执行df命令会死在那里,用ctrl-c也没法退出。由于我们的nodemanager健康检查脚本里面包含df命令,所以,nm的健康检查会卡死,最后把所有CPU全吃光,导致计算任务无法正常进行。使用kill命令也无法杀掉僵死的df进程,使用strace跟踪df命令也无法退出,必须用kill -9 杀掉strace才可以。
stat("/sys/fs/cgroup/memory", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0 stat("/sys/kernel/config", {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0 stat("/", {st_mode=S_IFDIR|0555, st_size=4096, ...}) = 0 stat("/proc/sys/fs/binfmt_misc",
最后df就是卡死在 binfmt_misc 这了。
经查,这是centos7 systemd的一个bug,1534701,我们触发这个bug的原因应该是在执行hadoop安装的时候,作为依赖更新了systemd相关的组件,但是没有进行重启,新的systemd没生效,所以重启之后,故障解决。
三、专线流量大,导致跑任务慢
使用tcpdump及nmap综合分析,发现大量的ARP连接,应是B类地址没有做VLAN路由,跨机房集群相互之间做ARP通告引发广播风暴。后续由运维重新规划vlan解决。
这些故障基本都不是hadoop本身的问题,就像上一篇记录里面,几百台机器其中一台的网卡变成了10Mbps,结果拖慢了整个集群的运行速度。这些问题都需要hadoop运维来发现,排查,通知其他部门,所以hadoop运维应该是在数据研发部门和运维部门之间的桥梁,能够快速定位hadoop,数据应用,操作系统,硬件之间哪里出现了问题,然后安排各相关人员解决,越快速定位,越能节省成本,时间成本和金钱成本都是成本,比如我司为了跨集群拉的专线据说一天一万,客户限定时间内跑不出数据报告丢的钱更多。
等跨机房迁移弄完了,可以专门写一写。
文章题目:Hadoop运维记录系列(二十三)
文章地址:http://scyanting.com/article/gpdess.html