sockets - 在 CentOS 上的 Hadoop 数据节点上打开套接字连接

标签 sockets hadoop centos cloudera

我在我的 centos 6.2.64 机器上运行示例 hadoop 作业以进行调试,

hadoop jar hadoop-examples-0.20.2-cdh3u3.jar randomtextwriter o

并且似乎在作业完成后,与数据节点的连接仍然存在。
java       8979 username   51u     IPv6          326596025        0t0       TCP localhost:50010->localhost:56126 (ESTABLISHED)
java       8979 username   54u     IPv6          326621990        0t0       TCP localhost:50010->localhost:56394 (ESTABLISHED)
java       8979 username   59u     IPv6          326578719        0t0       TCP *:50010 (LISTEN)
java       8979 username   75u     IPv6          326596390        0t0       TCP localhost:50010->localhost:56131 (ESTABLISHED)
java       8979 username   84u     IPv6          326621621        0t0       TCP localhost:50010->localhost:56388 (ESTABLISHED)
java       8979 username   85u     IPv6          326622171        0t0       TCP localhost:50010->localhost:56395 (ESTABLISHED)
java       9276 username   77u     IPv6          326621714        0t0       TCP localhost:56388->localhost:50010 (ESTABLISHED)
java       9276 username   78u     IPv6          326596118        0t0       TCP localhost:56126->localhost:50010 (ESTABLISHED)
java       9408 username   75u     IPv6          326596482        0t0       TCP localhost:56131->localhost:50010 (ESTABLISHED)
java       9408 username   76u     IPv6          326622170        0t0       TCP localhost:56394->localhost:50010 (ESTABLISHED)
java       9408 username   77u     IPv6          326622930        0t0       TCP localhost:56395->localhost:50010 (ESTABLISHED)

最终我在一段时间后在datanode日志中得到了这个错误。
2012-04-12 15:56:29,151 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: DatanodeRegistration(127.0.0.1:50010, storageID=DS-591618896-176.9.25.36-50010-1333654003291, infoPort=50075, ipcPort=50020):DataXceiver
java.io.FileNotFoundException: /tmp/hadoop-serendio/dfs/data/current/subdir4/blk_-4401902756916730461_31251.meta (Too many open files)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(FileInputStream.java:137)
        at org.apache.hadoop.hdfs.server.datanode.FSDataset.getMetaDataInputStream(FSDataset.java:996)
        at org.apache.hadoop.hdfs.server.datanode.BlockSender.<init>(BlockSender.java:125)
        at org.apache.hadoop.hdfs.server.datanode.DataXceiver.readBlock(DataXceiver.java:258)
        at org.apache.hadoop.hdfs.server.datanode.DataXceiver.run(DataXceiver.java:163)

这会导致生产系统出现问题,即 datanode 用尽 xcievers。
这种行为似乎不会发生在我的 Ubuntu 开发盒上。我们将 cloudera hadoop-0.20.2-cdh3u3 用于我们的目的。

有解决此问题的任何指示吗?

最佳答案

如果您尚未指定,请添加 hdfs-site.xml:

<property>
<name>dfs.datanode.max.xcievers</name>
<value>4096</value>
</property>

我认为默认值是 256....

这是公式类型计算你应该有多少 xciever 以避免这样的错误......
 # of xcievers = (( # of storfiles + # of regions * 4 + # of regioServer * 2 ) / # of datanodes)+reserves(20%)

关于sockets - 在 CentOS 上的 Hadoop 数据节点上打开套接字连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10088683/

相关文章:

java - hadoop map reduce线程中整个reducer步骤是否安全?

hadoop - 输入分割是否被复制到 JobTracker 文件系统?

python - Conda 与操作系统冲突

apache - (13)Permission denied : access to/wsgi denied, mod_wsgi, CentOs

node.js - 如何从客户端socket.emit服务器端socket.io捕获命名空间起源

python - 在 Python 中通过套接字发送文件

javascript - 将实时数据从联网 C 程序发送到浏览器客户端进行绘图

java - 无法通过 UDP 通过套接字从设备(在 WLAN 中)接收数据

java - 如何在hadoop hdfs中列出目录及其子目录中的所有文件

linux - 如何修复未在 CENTOS 上构建的 802.11 Linux STA broadcom 驱动程序?