- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用 Amazon EMR,并且能够使用 CLI 工具创建和运行工作流。作业运行良好。但是,当我尝试将数据从 S3 和名称节点的本地文件系统加载到我的 EMR 集群的 HDFS 时遇到了问题。
我想从 S3 填充 HDFS。我正在尝试使用 S3DistCp 工具执行此操作。我正在运行这个命令:
elastic-mapreduce --jobflow $JOBFLOWID --jar s3://us-east-1.elasticmapreduce/libs/s3distcp/1.0.1/s3distcp.jar --arg --src --arg 's3n://my-bucket/src' --arg --dest --arg 'hdfs:///my-emr-hdfs/dest/'
我在日志中收到两个可能相关的错误。在 mapreduce 作业输出中,作业完成到 100%,但最后失败了:
INFO org.apache.hadoop.mapred.JobClient (main): Map output records=184
ERROR com.amazon.elasticmapreduce.s3distcp.S3DistCp (main): 21 files failed to copy
在名称节点守护进程日志中我得到了这个异常:
INFO org.apache.hadoop.ipc.Server (IPC Server handler 13 on 9000): IPC Server handler 13 on 9000, call addBlock(/mnt/var/lib/hadoop/tmp/mapred/system/jobtracker.info, DFSClient_-1580223521, null) from xx.xx.xx.xx:xxxxx: error: java.io.IOException: File /mnt/var/lib/hadoop/tmp/mapred/system/jobtracker.info could only be replicated to 0 nodes, instead of 1
java.io.IOException: File /mnt/var/lib/hadoop/tmp/mapred/system/jobtracker.info could only be replicated to 0 nodes, instead of 1 at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1531)
at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:685)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
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:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1059)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1382)
我在创建作业流时设置了 dfs.replication=1。我的节点是 c1.mediums,我试图插入 HDFS 的数据小于 3GB。所以这应该不是磁盘不足的问题。但也许我遗漏了什么。
两个问题:1) 了解 S3DistCp 失败的原因吗?2)第二个问题有点不相关。是否可以创建一个作业流,其中第一个作业是 S3DistCp 作业以使用数据初始化集群?
任何见解表示赞赏。谢谢。
更新:我在下面评论中的测试似乎没有用。这是日志中的更多信息。
WARN org.apache.hadoop.hdfs.DFSClient (Thread-15): Error Recovery for block null bad datanode[0] nodes == null
WARN org.apache.hadoop.hdfs.DFSClient (Thread-15): Could not get block locations. Source file "/mnt/tmp/mapred/system/jobtracker.info" - Aborting...
WARN org.apache.hadoop.mapred.JobTracker (main): Writing to file hdfs://xx.xx.xx.xx:xxxx/mnt/tmp/mapred/system/jobtracker.info failed!
WARN org.apache.hadoop.mapred.JobTracker (main): FileSystem is not ready yet!
WARN org.apache.hadoop.mapred.JobTracker (main): Failed to initialize recovery manager.
最佳答案
对于第一个查询“Jobtracker.info 只能复制到 0 个节点,而不是 1 个”希望这可以帮助: http://wiki.apache.org/hadoop/FAQ#What_does_.22file_could_only_be_replicated_to_0_nodes.2C_instead_of_1.22_mean.3F从上面的链接复制:
3.13. What does "file could only be replicated to 0 nodes, instead of 1" mean?
The NameNode does not have any available DataNodes. This can be caused by a wide variety of reasons. Check the DataNode logs, the NameNode logs, network connectivity, ... Please see the page: CouldOnlyBeReplicatedTo
当启动数据节点守护进程出现延迟时,我在尝试部署单节点集群时遇到了类似的问题
关于hadoop - 亚马逊电子病历 : Initializing a cluster with data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10824033/
我是一名优秀的程序员,十分优秀!