当前位置: 首页 > 知识库问答 >
问题:

Hadoop:所有数据阳极127.0.0.1:50010都是坏的。正在中止

濮升
2023-03-14
14/12/10 10:58:36 INFO mapred.JobClient: Running job: job_201412091528_0004
14/12/10 10:58:37 INFO mapred.JobClient:  map 0% reduce 0%
14/12/10 10:58:50 INFO mapred.JobClient:  map 10% reduce 0%
14/12/10 10:59:44 INFO mapred.JobClient:  map 20% reduce 0%
14/12/10 11:32:23 INFO mapred.JobClient: Task Id : attempt_201412091528_0004_m_000000_0, Status : FAILED
java.io.IOException: All datanodes 127.0.0.1:50010 are bad. Aborting...
  at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.processDatanodeError(DFSClient.java:3290)
  at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.access$2200(DFSClient.java:2783)
  at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSClient.java:2987)
2014-12-10 11:32:19,157 INFO org.apache.hadoop.hdfs.server.datanode.DataNode.clienttrace: src: /127.0.0.1:50010, dest: /127.0.0.1:62662, bytes: 549024, op: HDFS_READ, cliID: DFSClient_attempt_201412091528_0004_m_000000_0_1249767243_1, offset: 0, srvID: DS-957555695-10.0.1.9-50010-1418164764736, blockid: blk_-7548306051547444322_12804, duration: 2012297405000
2014-12-10 11:32:25,511 INFO org.apache.hadoop.hdfs.server.datanode.DataNode.clienttrace: src: /127.0.0.1:50010, dest: /127.0.0.1:64109, bytes: 1329, op: HDFS_READ, cliID: DFSClient_attempt_201412091528_0004_m_000000_1_-1362169490_1, offset: 0, srvID: DS-957555695-10.0.1.9-50010-1418164764736, blockid: blk_4126779969492093101_12817, duration: 285000
2014-12-10 11:32:29,496 INFO org.apache.hadoop.hdfs.server.datanode.DataNode.clienttrace: src: /127.0.0.1:50010, dest: /127.0.0.1:64110, bytes: 67633152, op: HDFS_READ, cliID: DFSClient_attempt_201412091528_0004_m_000000_1_-1362169490_1, offset: 0, srvID: DS-9575556

...或在namenode文件中。jobtracker只是重复在datanode日志中发现的错误。在失败之前几分钟的一个错误是EOF错误,对于PartialBuilder来说,这可能是问题,也可能不是问题:

2014-12-10 12:12:22,060 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: DatanodeRegistration(127.0.0.1:50010, storageID=DS-957555695-10.0.1.9-50010-1418164764736, infoPort=50075, ipcPort=50020):DataXceiver
java.io.EOFException: while trying to read 65557 bytes
  at org.apache.hadoop.hdfs.server.datanode.BlockReceiver.readToBuf(BlockReceiver.java:296)
  at org.apache.hadoop.hdfs.server.datanode.BlockReceiver.readNextPacket(BlockReceiver.java:340)
  at org.apache.hadoop.hdfs.server.datanode.BlockReceiver.receivePacket(BlockReceiver.java:404)
  at org.apache.hadoop.hdfs.server.datanode.BlockReceiver.receiveBlock(BlockReceiver.java:582)
  at org.apache.hadoop.hdfs.server.datanode.DataXceiver.writeBlock(DataXceiver.java:404)
  at org.apache.hadoop.hdfs.server.datanode.DataXceiver.run(DataXceiver.java:112)
  at java.lang.Thread.run(Thread.java:695)

我能够直接读写文件到DFS。我甚至可以在数据的一个很小的子集上运行这个作业,但是我不能让这个map/reduce作业正确工作。知道我做错了什么吗?

有关我得安装得说明:

    null
  • dfs.replication=4
  • dfs.permissions=false
  • dfs.name.dir=/users/juliuss/dev/hdfs/name/
  • dfs.data.dir=/users/juliuss/dev/hdfs/data/
  • mapred.child.java.opts=-xmx4096m
  • dfs.datanode.socket.write.timeout=0

共有1个答案

胡厉刚
2023-03-14

在折腾了一百万个设置之后,没有一个有效,我最终通过大幅减小拆分大小来解决这个问题:

-Dmapred.max.split.size=16777216

这将此数据集的映射器数量从10个增加到40个,从而允许它们正确完成。现在我已经隔离了这个问题,我将稳步增加拆分大小以找到正确的数字。(对于随机森林,您应该找到尽可能大的分裂,以获得最好的结果。)

不幸的是,我不知道为什么拆分的大小会导致“所有数据阳极都坏了。中止”错误,因为这不是我想要的错误。

 类似资料:
  • 我的集群的规格是: Hadoop 2.7.2 JDK 1.8.74 操作系统是CentOS 6.7 2个名称编号(Namenode1和Namenode2) 2数据阳极(数据阳极1和数据阳极2) 1客户端(为ViewFS装入表配置) 使用一个namenode,集群(1个namenode+2个DataNode)工作良好,所有配置看起来都是正确的。 如果有人知道如何使用多个名称编号运行HDFS联盟,欢迎

  • 我目前正在试用Apache Spark。所有的组件(如HDFS、Spark、Yarn等)都运行良好。在任何这些程序的启动过程中,似乎都没有任何错误。我在一个Vagrant VM中运行它,并对spark/hdfs/yarn进行了对接。 tl;dr:通过Yarn提交作业会导致。 用以下文件提交我的应用程序: 其结果如下: 注意线程“main”org.apache.hadoop.ipc.RemoteEx

  • 默认情况下,Hadoop在文件的块边界上拆分映射器要处理的文件。也就是说,这就是FileInputFormat实现为getSplits()所做的事情。然后,Hadoop确保映射器要处理的块被复制到映射器运行的Datanode上。 现在我想知道,如果我需要在InputSplit外部读取(在RecordReader中,但这是不相关的),与在InputSplit内部读取相比,这花费了我多少钱--假设它外

  • 但一个奇怪的错误正在发生。当我检查Namenode GUI或dfsadmin client以获取datanodes列表时,它只随机显示一个datanode,即有时是datanode-0,有时是DataNode-1。它从不显示两个/所有数据阳极。 这里会有什么问题?我甚至在用无头服务。请帮忙。 运行hdfs dfsadmin-report只随机显示一个datanode,例如有时datanode-0和

  • 我从网上下载了一个文件,并复制到ubuntu本地目录/lab/data中 我已经在Ubuntu中创建了名称为namenodep和datanode的namenode和datanode文件夹(不是hadoop文件夹)。我还在hdfs中创建了一个文件夹作为/input。 当我将文件从ubuntu local复制到hdfs时,为什么该文件同时出现在下面的两个目录中?

  • null 现在这实际上是一个开发环境,我可以使用Pig导出HDFS数据和HBase数据,清除所有datanode和zookeeper的数据目录,并使用Pig将数据导入回来。除了跛脚,我相信这对我来说是一个很好的锻炼。