Hadoop集群数据节点网络错误

标签 hadoop nic ifconfig

我有一个安装了 Cloudera Hadoop 的小型集群。几天后,我注意到运行 ifconfig -a 时经常出现错误/掉线/帧命令。 (从高层的角度来看,map reduce 作业会顺利运行而不会出现错误,从最终用户的角度来看也没有错误,我想知道如果我做点什么,性能会更好)

所有节点,包括namenode,都由同一个redhat kickstart 服务器安装和配置,遵循相同的配方,我会说它们是“相同的”。但是,我没有注意到名称节点上的任何网络错误,并且所有数据节点上始终存在网络错误。

例如,我的名称节点看起来像:

namenode.datafireball.com | success | rc=0 >>
eth4      Link encap:Ethernet  HWaddr ...  
          inet addr:10.0.188.84  Bcast:10.0.191.255  Mask:...
          inet6 addr: xxxfe56:5632/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:9000  Metric:1
          RX packets:11711470 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6195067 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:6548704769 (6.0 GiB)  TX bytes:12093046450 (11.2 GiB)

数据节点:
datanode1.datafireball.com | success | rc=0 >>
eth4      Link encap:Ethernet  HWaddr ...  
          inet addr:10.0.188.87  Bcast:10.0.191.255  Mask:...
          inet6 addr: xxxff24/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:9000  Metric:1
          RX packets:27474152 errors:0 dropped:36072 overruns:36072 frame:36072
          TX packets:28905940 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:158509736560 (147.6 GiB)  TX bytes:180857576718 (168.4 GiB)  

我还在 Michael's 之后做了一些压力测试教程,我可以看到错误随着工作的进行而增加。所以我第一次设置时留下了一些错误。

仅供引用,我们在一个盒子里有两个网卡,前 4 个端口是嵌入式网卡 03:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)我们根本没有使用,我们正在使用0e:00.0 Ethernet controller: Mellanox Technologies MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] (rev b0)这是 10Gb 网卡。

这是固件的输出和 NIC 卡的一些一般信息:
$ ethtool -i eth4
driver: mlx4_en
version: 2.0 (Dec 2011)
firmware-version: 2.8.600
bus-info: 0000:0e:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no

我很惊讶地发现数据节点会有网络错误,而名称节点没有,因为它们具有相同的设置和配置。谁能给我一些指导?

最佳答案

B.W.先生!

回答你的问题,我的假设基于每个组件的功能,namenode 只处理元数据信息,只管理 block 和服务器的位置,请求和响应使用网络上的很少带宽。数据节点负责大量数据,使用整个网络带宽,因为它传输“大”数据,因此丢弃的数据包。

如果启用了巨型帧 (MTU = 9000),我建议您评估连接到此服务器网络接口(interface)配置的交换机端口。

必须在服务器的网络接口(interface)设置中验证相同的配置。

检查配置是否在某个点丢失的好方法是使用在服务器 SO 控制台中执行的命令“ifconfig -a”检查是否有丢弃的包:

[root@<hostname> ~]# ifconfig -a
bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 9000
inet Ip.Ad.re.ss netmask net.m.as.k broadcast bro.d.ca.st
ether XX:XX:XX:XX:XX:XX txqueuelen 1000 (Ethernet)
RX packets 522849928 bytes 80049415915 (74.5 GiB)
RX errors 274721 dropped 276064 overruns 0 frame 274721
TX packets 520714273 bytes 72697966414 (67.7 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

在这种情况下,巨型帧仅在服务器网络接口(interface)中配置。

问候,
卡塞罗。

关于Hadoop集群数据节点网络错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24311726/

相关文章:

linux - 连接到 Linux 计算机时 Windows 以太网显示 "Network cable unplugged"

c++ - libnl/nl80211 相当于 iw_set_ext

java - 哪个类将hadoop源代码中的mapreduce作业连接到其数据集?

networking - ixgbe : setting the number of RX/TX queues

algorithm - 动态聚合集群?平面上的点

python - PyVmomi 添加网卡与未连接的 dvs ('config.distributedVirtualSwitch' 未设置)

linux - 如何在使用同一网关运行的同一子网上路由具有 2 个公共(public) IP 的 2 个网卡

php - 使用PHP更改服务器的IP地址

hadoop - HBase shell - 检索(仅)列值(而不是列名)

java - 如何在Eclipse中运行我的MapReduce程序