Apache Spark Ec2:只能复制到 0 个节点,而不是 1 个

Posted

技术标签:

【中文标题】Apache Spark Ec2:只能复制到 0 个节点,而不是 1 个【英文标题】:Apache Spark Ec2: could only be replicated to 0 nodes, instead of 1 【发布时间】:2016-03-09 22:08:17 【问题描述】:

我有一个在 Ec2 d2.xlarge 实例上运行的 2Node 集群,我有一个 10 Gb 的文件要通过 Spark 处理,我已经在 spark 上安装了一个本地磁盘并在那里生成了 10gb 的数据集,但是当我我试图将其放入 Hdfs 中,它向我抛出 “只能复制到 0 个节点,而不是 1”的错误,如下所示

16/03/09 21:44:25 WARN hdfs.DFSClient: DataStreamer Exception: org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /vinit/inputfile.txt could only be replicated to 0 nodes, instead of 1
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1558)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:696)
    at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:563)
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1388)
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1384)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:415)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121)
    at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1382)

【问题讨论】:

您的 HDFS 数据节点不工作。检查他们的日志。 是的,我使用 jps 命令检查过,但是如何配置和启动它? 【参考方案1】:

由于您的 HDFS 数据节点无法正常工作,并且您已使用 jps 命令进行了检查。您可以通过将数据节点的主机名或 IP 条目添加到 <HADOOP_HOME>/etc/hadoop/slaves 文件来配置数据节点(从属),例如:

192.168.64.11
192.168.64.12

对于 namenode (master) 类似,您可以将整体添加到 <HADOOP_HOME>/etc/hadoop/masters 文件中,例如:(假设 192.168.64.11 是 master)

192.168.64.11

然后在主节点上运行 stop-all.sh 和 star-all.sh 以重新启动集群。这将自动启动数据节点。用 jps 命令检查。

【讨论】:

我完全按照您的步骤操作,但它不起作用。我设法使用 ./hadoop-daemon.sh start datanode 命令启动了数据节点。并尝试使用 ./hadoop fs -put /newDir/inputfile.txt /newDir/dir 将我的文件放到我安装在 ec2 上的目录中。但得到同样的例外。 在提交 hadoop 作业之前,首先使用浏览器http://name-node-ip:50070/ 或控制台<HADOOP_HOME>/bin/hdfs dfsadmin -report 检查集群的状态,并且任何节点未启动,然后检查该节点的最新日志。

以上是关于Apache Spark Ec2:只能复制到 0 个节点,而不是 1 个的主要内容,如果未能解决你的问题,请参考以下文章

在 ec2 上托管的 apache spark 中使用 AWS EMRFS

apache spark中的无效类异常

如何在 Amazon EC2 上配置 PHP + Apache?

在 ec2 上启动 pyspark Ipython notebook

文件 jobtracker.info 只能复制到 0 个节点,而不是 1 个

PySpark - Spark 集群 EC2 - 无法保存到 S3