无法将大文件加载到 Spark 集群主节点上的 HDFS

Posted

技术标签:

【中文标题】无法将大文件加载到 Spark 集群主节点上的 HDFS【英文标题】:Unable to load large file to HDFS on Spark cluster master node 【发布时间】:2016-04-03 09:46:52 【问题描述】:

我在 Amazon EC2 上启动了一个 Spark 集群,其中包含 1 个主节点和 2 个从属节点,每个节点都有 2.7gb 内存

但是,当我尝试通过下面的代码将 3 GB 的文件放到 HDFS 上时

/root/ephemeral-hdfs/bin/hadoop fs -put /root/spark/2GB.bin 2GB.bin

它返回错误,“/user/root/2GB.bin 只能复制到 0 个节点,而不是 1 个”。仅供参考,我可以上传较小尺寸的文件,但不能上传超过一定大小(约 2.2 GB)的文件。

如果文件超过了一个节点的内存大小,会不会被Hadoop分割到另一个节点?

【问题讨论】:

“每个都有 2.7gb 的内存”是什么意思?你指的是内存还是硬盘? 【参考方案1】:

编辑:我对您所面临问题的理解总结:

1) 总 HDFS 可用大小为 5.32 GB

2) 每个节点上的 HDFS 空闲大小为 2.6GB

注意:您有坏块(4 个带有损坏副本的块)

以下问答提到了类似的问题: Hadoop put command throws - could only be replicated to 0 nodes, instead of 1

在这种情况下,运行 JPS 显示数据节点已关闭。

那些问答提出了一种重启数据节点的方法:

What is best way to start and stop hadoop ecosystem, with command line? Hadoop - Restart datanode and tasktracker

请尝试重新启动您的数据节点,如果它解决了问题,请告诉我们。


使用 HDFS 时 - 您拥有一个共享文件系统

即所有节点共享同一个文件系统

根据您的描述 - HDFS 上的当前可用空间约为 2.2GB ,而您尝试将 3GB 放在那里。

执行以下命令获取 HDFS 空闲大小:

hdfs dfs -df -h

hdfs dfsadmin -report

或(对于旧版本的 HDFS)

hadoop fs -df -h

hadoop dfsadmin -report

【讨论】:

当它在主节点上显示“DFS Remaining: 5713575936 (5.32 GB)”时,在 2 个数据节点上显示“DFS Remaining: 2856787968(2.66 GB)”是指磁盘空间还是 RAM ? 能否请您提供您执行的命令及其输出? 命令执行:./hadoop dfsadmin -report,输出:配置容量:8443527168 (7.86 GB) 当前容量:5713715200 (5.32 GB) DFS 剩余:5713575936 (5.32 GB) DFS 已用:139264 (136 KB) DFS Used%: 0% Under replicated blocks: 4 Blocks with corrupt replicas: 0 Missing blocks: 0 --------------------------- ---------------------- 可用数据节点:2(总共 2 个,0 个死)退役状态:正常配置容量:4221763584(3.93 GB)使用的 DFS:69632( 68 KB) 非 DFS 已使用:1364905984 (1.27 GB) DFS 剩余:2856787968(2.66 GB) DFS 已使用百分比:0% DFS 剩余百分比:67.67%

以上是关于无法将大文件加载到 Spark 集群主节点上的 HDFS的主要内容,如果未能解决你的问题,请参考以下文章

AWS 上 DC/OS 集群上的 Spark 作业

多节点火花集群上的 spark-shell 无法在远程工作节点上旋转执行程序

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

spark如何加载大于集群磁盘大小的输入文件?

06部署Spark程序到集群上运行

当Spark从S3读取大文件时,可以将数据分发到不同的节点