小编Dol*_*cci的帖子

如何在重新安装一个节点后修复缺少块的 Hadoop HDFS 集群?

我有一个 5 从站 Hadoop 集群(使用 CDH4)---从站是运行 DataNode 和 TaskNode 的地方。每个从站有 4 个专用于 HDFS 存储的分区。其中一个从站需要重新安装,这导致其中一个 HDFS 分区丢失。此时,HDFS 抱怨丢失了 35K 块。

几天后,重新安装完成,我将节点重新联机到 Hadoop。HDFS 仍处于安全模式,并且新服务器没有注册接近其他节点的块数量。例如,在 DFS Admin 下,新节点显示它有 6K 块,而其他节点有大约 400K 块。

目前,新节点的 DataNode 日志显示它正在对各种块进行一些验证(或复制?),其中一些由于已经存在而失败。我相信这是 HDFS 只是将现有数据复制到新节点。验证示例:

2013-08-09 17:05:02,113 INFO org.apache.hadoop.hdfs.server.datanode.BlockPoolSliceScanner: Verification succeeded for BP-143510735-141.212.113.141-1343417513962:blk_6568189110100209829_1733272
Run Code Online (Sandbox Code Playgroud)

失败示例:

2013-08-09 17:04:48,100 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: meez02.eecs.umich.edu:50010:DataXceiver error processing REPLACE_BLOCK operation  src: /141.212.113.141:52192 dest: /141.212.113.65:50010
org.apache.hadoop.hdfs.server.datanode.ReplicaAlreadyExistsException: Block BP-143510735-141.212.113.141-1343417513962:blk_-4515068373845130948_756319 already exists in state FINALIZED and thus cannot be created.
    at org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.createTemporary(FsDatasetImpl.java:813)
    at org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl.createTemporary(FsDatasetImpl.java:92)
    at org.apache.hadoop.hdfs.server.datanode.BlockReceiver.<init>(BlockReceiver.java:155)
    at org.apache.hadoop.hdfs.server.datanode.DataXceiver.replaceBlock(DataXceiver.java:846)
    at org.apache.hadoop.hdfs.protocol.datatransfer.Receiver.opReplaceBlock(Receiver.java:137)
    at …
Run Code Online (Sandbox Code Playgroud)

partition hadoop hdfs reinstall

5
推荐指数
1
解决办法
2万
查看次数

如果我的服务器停机,我如何提供静态登录页面?

如果我的主 Web 服务器关闭(当前是 Rackspace Cloud 实例),我想回退到静态网页。这将是一种不应该发生但以前发生过的更糟情况(例如 Backspace 硬件故障)。服务器的冗余将是一个最佳解决方案,但预算是一个问题..所以我正在寻找一个低成本的自动回退,如果目前唯一的服务器发生问题

domain-name-system web-server load-balancing

3
推荐指数
1
解决办法
3120
查看次数