我让我的学生使用bdutil
永久磁盘和 HDFS 作为默认文件系统创建一个 Google Compute Engine 集群。我们希望拥有永久性磁盘,以便学生可以在几周内完成项目。但是,重新部署集群后,HDFS 似乎无法使用。
我的问题实际上是“如何跨集群重新部署维护持久的 HDFS 文件系统?”
这是我尝试过的
在创建永久磁盘的初始部署中一切正常。我用命令创建一个目录
$ hadoop fs -mkdir /foo
$ hadoop fs –put foo.txt /foo/foo.txt
$ hadoop fs –cat /foo/foo.txt
foo
然后我删除并重新部署集群,DELETE_ATTACHED_PDS_ON_DELETE=false
并CREATE_ATTACHED_PDS_ON_DEPLOY=false
在重新部署过程中保留永久性磁盘
当我 ssh 进入重新部署的集群时,我可以看到我创建的文件
$ hadoop fs –ls /foo
Found 1 items
-rw-r--r-- 3 mpcs supergroup 4 2014-10-01 13:16 /foo/foo.txt
但是,任何访问文件内容的尝试都会失败:
$ hadoop fs –cat /foo/foo.txt
cat: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Zero blocklocations for /foo/foo.txt. Name node is in safe mode
手动关闭安全代码无济于事
$ hadoop dfsadmin -safemode leave
Safe mode is OFF
$ hadoop fs –cat /foo/foo.txt
14/10/01 13:31:20 INFO hdfs.DFSClient: No node available for: blk_2908405986797013125_1002 file=/foo/foo.txt
14/10/01 13:31:20 INFO hdfs.DFSClient: Could not obtain blk_2908405986797013125_1002 from any node: java.io.IOException: No live nodes contain current block. Will get new block locations from namenode and retry...
*etc*
任何关于如何创建可以在重新部署集群时持续存在的 HDFS 存储的建议将不胜感激
谢谢,
麦克风