Hadoop重用Decommission状态的数据节点

2019-03-28 14:05|来源: 网络

一、背景
本篇主要针对Decommission状态的数据节点重用的处理方法。
如果是完全新增一个服务器作为新增节点,可参考:http://www.linuxidc.com/Linux/2012-01/52683.htm

二、操作
1、在$Hadoop_HOME目录下,新建一个slaves.include文件(此文件名可随机取).它是一个文本, 里面每行就是想要使用的主机名或IP地址。
文件内容可如下:
10.12.3.124
10.12.3.125
10.12.3.127
10.12.3.128 
10.12.3.129
这样就表明想要使用的数据节点有以上五台服务器,其中10.12.3.129是状态为Decommission的数据节点。

2、在名称节点(master)上,配置conf/mapred-site.xml文件,增加以下配置项:
<property>
  <name>dfs.hosts</name>
  <value>slaves.include</value>
</property>
<property>
  <name>mapred.hosts</name>
  <value>slaves.include</value>
</property>

3、在名称节点上,运行以下命令,更新结点以及hadoop配置:
-bash-3.2$ ./bin/hadoop dfsadmin -refreshNodes

4、到状态为Decommission的数据节点服务器,启动对应用datanode和tasktracker进程,命令如下:
./bin/hadoop-daemon.sh start datanode
./bin/hadoop-daemon.sh start tasktracker

5、状态查看:
1)可以通过 bin/hadoop dfsadmin -report 查看更新信息,内容如下:
Name: 10.12.3.129:50010
Decommission Status : Normal
Configured Capacity: 0 (0 KB)
DFS Used: 0 (0 KB)
Non DFS Used: 0 (0 KB)
DFS Remaining: 0(0 KB)
DFS Used%: 100%
DFS Remaining%: 0%
Last contact: Thu Jan 01 08:00:00 CST 1970

2)可以通过HADOOP WEB(http://masterIP:50070/)查看更新信息;

6、进行block块的均衡
在hdfs-site.xml中增加设置balance的带宽,默认只有1M:
<property>
    <name>dfs.balance.bandwidthPerSec</name>
    <value>10485760</value>
    <description>
        Specifies the maximum bandwidth that each datanode can utilize for the balancing purpose in term of the number of bytes per second.
    </description>
</property>

运行以下命令:
/opt/sohuhadoop/hadoop/bin/start-balancer.sh -threshold 5

相关问答

更多
  • 暗示的切换管理器正在检查提示是否需要在退役期间将其关闭,以便提示不会丢失。 你很可能有很多提示,或一堆墓碑,或表中的某些东西导致查询超时。 在超时之前,您没有在日志中看到任何其他异常吗? 在退出节点之前提高节点上的读取超时时间,或者手动删除提示CF,应该很可能已经过去了。 如果删除它们,则需要确保在完成所有解除注册后运行完整的群集修复,以便从您删除的任何提示中传播数据。 The short answer is that the node I was trying to decommission was un ...
  • 因为你是最终目的地是一个蜂巢表。 我建议如下: 创建一个蜂巢决赛桌。 使用以下命令从另一个节点加载数据 LOAD DATA LOCAL INPATH '/kv1.txt' OVERWRITE INTO TABLE table_name; 参考这个 使用Java,您可以使用JSCH lib来调用这些shell命令。 希望这可以帮助。 Since you are final destination is a hive table. I would suggest the fo ...
  • 我认为你没有正确理解这一点。 名称节点永远不会收到发送到hdfs的任何数据。 它所做的就是在数据节点上分配块,从而仅与元数据通信。 协议大致如下(不知道细节,但你会得到图片): 客户端从名称节点请求特定大小的块。 该块可能必须跨多台机器进行复制。 Name节点选择一个数据节点,它将为块分配空间,并向其发送请求。 数据节点在其机器上为该块分配空间并发回回复。 如果name节点收到回复,它会将响应发送回客户端,为其提供数据节点上块的ip地址和id。 然后,客户端联系数据节点并启动数据传输。 实现细节是将数据直接 ...
  • 您可以通过使用正确的hadoop-site.xml(一个指向主名称节点和jobtracker)启动一个新节点来添加新节点。 也就是说,删除节点是一个非常糟糕的主意,没有重新平衡你的hdfs文件块,以防止删除给定块的所有欺骗。 如果丢弃三个数据节点,则可能会丢失给定块的所有dupe(复制值为3,默认值),从而破坏块所属的文件。 删除两个节点可能会留下一个副本,并且它可能已损坏(已知在死亡磁盘中发生)。 You can add new nodes by just booting up a new one wit ...
  • 您可以尝试在datanode上停止cloudera代理。 sudo service cloudera-scm-agent hard_stop_confirmed 代理停止后,您只需从hdfs实例页面中删除该datanode即可 希望这有效 You can try to stop cloudera agent on the datanode. sudo service cloudera-scm-agent hard_stop_confirmed After the agent is stopped, you ...
  • 我相信在群集中复制因子为2,如果您停用一个数据节点,那么hadoop将识别为一个数据节点的崩溃,并将继续使用数据节点。 但是将来如果你将该节点放回集群中,hadoop将开始将文件复制到该节点。 所以你可以在集群中只有一个节点的复制因子为2,它不会以任何方式妨碍hadoop的工作。 I believe with replication factor of 2 in a cluster, if you decommissioned one data node then hadoop will identify ...
  • 很明显,当节点关闭(或移除)时,数据不足。 添加新节点并重新平衡时,将自动修复此节点。 实际发生了什么? 假设您的群集上的复制因子是3.当一个节点退役时,存储在其上的所有数据都将消失,该数据的复制因子现在为2(因此正在复制)。 现在,当您添加新节点并重新平衡丢失的副本时,再次将复制恢复为默认值。 我有风险吗? 如果你是一个接一个地做的话。 这是替换节点并重新平衡群集。 重复。 ( 我认为这是唯一的方法! ) 如果您只删除多个节点,则很有可能丢失数据,因为您可能会丢失某些数据的所有复制(驻留在这些节点上)。 ...
  • 我曾经发生过几次这种事情。 如果重新启动数据节点不起作用,请执行以下操作: 重启Hadoop 转到/ app / hadoop / tmp / dfs / name / current 打开版本(即通过vim VERSION ) 记录namespaceID 转到/ app / hadoop / tmp / dfs / data / current 打开版本(即通过vim VERSION ) 将namespaceID替换为您在步骤4中记录的namespaceID。 这应该解决这个问题。 I've had th ...
  • 在Datastax Enterprise中,您在运行Cassandra的节点上运行Hadoop。 最常见的部署是制作两个数据中心(节点的逻辑分组)。一个数据中心专门用于分析,包含同时运行Hadoop和C *的机器,另一个数据中心仅为C *,并且服务于OLTP功能。你的集群。 Analytics节点上的C *进程连接到群集的其余部分(与任何其他C *节点一样),并在写入突变时接收更新,以便最终与数据库的其余部分保持一致。 数据存在于这些节点上以及群集中的其他节点上。 同样,大多数人最终都使用NetworkTo ...
  • 我得到了这个工作。 虽然解决方案是微不足道的,但我想在此发布,以便其他新手Hadoopers可能会受益。 1)在master( nameNode )和所有从属( dataNodes )中都有core-site.xml , hdfs-site.xml和mapred-site.xml的完全副本。 我认为master中的core-site.xml和mapred-site.xml并不重要。 但它是。 他们打开他们听的端口。 在这些端口上, dataNode可以到达nameNode 。 2)当您在master上运行j ...