安装hadoop集群遇到的坑(vSphere虚拟化环境)

安装hadoop集群遇到的坑(vSphere虚拟化环境)

(文章不定期更新)

1 环境概述

服务器:LENOVO ThinkServer RD540
虚拟化环境:Esxi5.5
虚拟机系统:Ubuntu 16.04LTS
虚拟机配置:

节点 处理器 内存 硬盘
master 全部 8G 200G
slave10 全部 8G 200G
slave20 全部 4G 130G
slave30 全部 4G 130G
slave40 全部 4G 130G

以上由于slave1-4的名称在局域网中已经被占用,则名后加0

2 坑

2.1 Esxi时断时连

装好Esxi后,在vSphere界面初步安装环境,却发现时断时连。如下图:
时断时连
在连接过程中时不时会抛出异常。

而且在传输大文件必定无法成功:
大文件传输失败

查看Esxi的hostd日志,有:

2018-05-11T02:30:00.023Z [FFE215B0 verbose ‘Statssvc.vim.PerformanceManager’] HostCtl Exception in stats collection. Turn on ‘trivia’ log for details
2018-05-11T02:30:02.219Z [FFE84B70 verbose ‘SoapAdapter’] Responded to service state request
2018-05-11T02:30:20.023Z [FFE215B0 verbose ‘Statssvc.vim.PerformanceManager’] HostCtl Exception in stats collection: Sysinfo error on operation returned status : Not initialized. Please see the VMkernel log for detailed error information

这个Exception指示去Kernel日志中获取详细信息。再查看Esxi的kernel日志:

/var/log # cat vmkernel.log | grep fail

2018-05-10T12:14:09.089Z cpu4:33645)ScsiDeviceIO: 2337: Cmd(0x412e803d1ac0) 0x85, CmdSN 0xa from world 34572 to dev “naa.600605b007e0a4201dfcf3440b1aeec1” failed H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x20 0x0.
2018-05-10T12:14:09.089Z cpu4:33645)ScsiDeviceIO: 2337: Cmd(0x412e803d1ac0) 0x4d, CmdSN 0xb from world 34572 to dev “naa.600605b007e0a4201dfcf3440b1aeec1” failed H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x20 0x0.
2018-05-10T12:14:09.089Z cpu4:33645)ScsiDeviceIO: 2337: Cmd(0x412e803d1ac0) 0x1a, CmdSN 0xc from world 34572 to dev “naa.600605b007e0a4201dfcf3440b1aeec1” failed H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x24 0x0.
2018-05-10T12:14:09.099Z cpu4:33645)ScsiDeviceIO: 2337: Cmd(0x412e803d1ac0) 0x85, CmdSN 0xd from world 34572 to dev “naa.50000395a802efd4” failed H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x20 0x0.
2018-05-10T12:44:09.180Z cpu2:32848)ScsiDeviceIO: 2337: Cmd(0x412e82722980) 0x85, CmdSN 0x14 from world 34572 to dev “naa.600605b007e0a4201dfcf3440b1aeec1” failed H:0x0 D:0x2 P:0x0 Valid sense data: 0x5 0x20 0x0.

其中的数字是SCSI感知代码:
http://pubs.vmware.com/vsphere-50/index.jsp?topic=%2Fcom.vmware.vsphere.troubleshooting.doc_50%2FGUID-E8304C8B-E2EA-459E-A545-8531C1BF12B0.html
看样子好像是硬盘的问题。

官方也给出了详细的排查方案【ESX/ESXi 主机出现间歇性网络连接或无网络连接 (2077745)】
https://kb.vmware.com/s/article/2077745
有中文,不过排查方案略微繁杂,这里不推荐

这边的方案是:直接在服务器上抹掉Esxi,安装Ubuntu系统,发现ssh一样时断时连,且xftp传输大文件必定失败,失败瞬间ping不通,过一段时间又可以ping通:
xftp传输失败

由此确定是网口问题

解决方案:拔掉两根网线,其中一根插到备用网卡的网口,问题解决。

2.2 hadoop集群可正常启动,但无法感知Slave节点

按照:
1. https://blog.csdn.net/dream_an/article/details/52946840
2. https://www.cnblogs.com/caiyisen/p/7373512.html
两位同行的技术博客搭建起hadoop。

启动虚拟集群。

master节点:
启动成功
无明显问题

查看下Slave节点:
Slave节点启动成功
无明显问题

尝试在hdfs文件系统中建立用户目录没有问题,上传文件抛java异常:
上传文件错误

There are 0 Datanode(s) running…

发现不对,查看Slave节点相关日志:
子节点一直尝试重新连接
子节点虽然有DataNode的子进程,但一直在尝试重连:

Problem connecting to the server master:…/9000

在主节点浏览器输入hdfs://master:9000可以看到页面,但在子节点浏览器无法看到页面。猜测是9000端口只允许本机访问, 并不允许其他机器访问。

参考https://blog.csdn.net/yjc_1111/article/details/53817750这篇文章

在主节点运行

cat /etc/hosts

发现定义了两个master的ip地址:

127.0.0.1 master
外网ip master

将127.0.0.1端口去掉即可访问,也即本机解析本机的地址,除了localhost, 其他位置都不用本机回环口,而是用本机配置的ip。

否则,节点将无法访问master:9000

在上述文章当中,可访问某个端口的ip范围没有弄清楚,不知道如何看。

2.3 yarn 出现FINISHED的State与FAILED的FinalStatus

出现这种情况的原因有很多。

2018年5月初,笔者开始安装了2.8.3的hadoop。发现yarn出现未知情况的FAILED:
yarn2.8.3的FAILED问题

Diagnose没有任何显示,事件类型显示TA_CONTAINER_COMPLETED。

已于stackoverflow公开了问题,没有回复:
https://stackoverflow.com/questions/50364279/mapreduce-job-to-yarn-got-finished-state-and-failed-finalstatus

尔后根据相关资料,据说是2.8.3版本问题,具体是内存或者其他资源分配不足造成:
资源分配不足的源代码

重装hadoop,替换版本为2.6.3

开启yarn,运行后仍然出现Failed,查看日志,发现:
又一次failed

诊断原因已经显示了,为Container killed by the AppcationMaster。Exit code 是143。

Google相关问题结果:
https://stackoverflow.com/questions/15281307/the-reduce-fails-due-to-task-attempt-failed-to-report-status-for-600-seconds-ki

没有按照第一项描述修改超时时间,而是按照第二项修改了mapred.child.java.opts-Xmx2048

尔后出现VMEM不够的问题:
内存不够

遇到这种问题首先考虑调节分配比例:
https://blog.csdn.net/lively1982/article/details/50598847
yarn.nodemanager.vmem-pmem-ratio 改为6

调节完毕之后,又出现了FAILED问题:
不明FAILED

查看日志:
FAIL_CONTAINER_CLEANUP

诊断没有结果,但Attempt变成了FAIL_CONTAINER_CLEANUP

以该关键词查询相关信息:
https://stackoverflow.com/questions/42416921/hadoop-mapreduce-teragen-fail-container-cleanup

stackoverflow明确有结果:干掉本机环回口。

注释掉master和slave的localhost一行后,问题解决。

猜你喜欢

转载自blog.csdn.net/xiblade/article/details/80303066
今日推荐