【转 】Hadoop datanode添加与删除

本文介绍如何在Hadoop集群中实现节点的热拔插,包括添加新节点及移除旧节点的方法,并确保数据备份;同时讲解了通过运行balancer脚本来实现数据负载均衡的过程。

出处:http://zzhblog.sinaapp.com/?p=82

 

一、 Hadoop节点热拔插

在Hadoop集群中经常会进行增添节点操作,即实现节点的热拔插。在这些操作中不希望对集群进行重启。

2.在集群中添加节点:

a. 把新节点IP或者主机名字加入到主节点的slaves文件。

 

b. 登录到新节点,执行:

1
2
3
 cd $HADOOP_HOME
 bin /hadoop-daemon .sh start datanode
 bin /hadoop-daemon .sh start tasktracker

3. 从集群中移走节点,且对移走节点的数据进行备份:

a. 在主节点的core-site.xml配置文件中添加

1   
2
3
4
5
< property >
   < name >dfs.hosts.exclude</ name >
   < value >/usr/local/hadoop/conf/exclude</ value >
   < description >A base for other temporary directories.</ description >
</ property >

b. 在主节点的$HADOOP_HOME/conf/目录下新建文件excludes,每行为需要移走的节点,该例为s140。

c. 运行命令:

1
hadoop dfsadmin -refreshNodes

该命令可以动态刷新dfs.hosts和dfs.hosts.exclude配置,无需重启NameNode。此刻datanode消失了,但是tasktracker还存在。

d. 然后热行命令,查看状态

1
bin /hadoop dfsadmin -report
1
2  
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Name: 192.168.3.140:50010
Decommission Status : Decommission in progress
Configured Capacity: 310716715008 (289.38 GB)
DFS Used: 59891990052 (55.78 GB)
Non DFS Used: 20663939548 (19.24 GB)
DFS Remaining: 230160785408(214.35 GB)
DFS Used%: 19.28%
DFS Remaining%: 74.07%
Last contact: Fri Aug 13 10:17:20 GMT+08:00 2010
Name: 192.168.3.136:50010
Decommission Status : Normal
Configured Capacity: 487925370880 (454.42 GB)
DFS Used: 101679245034 (94.7 GB)
Non DFS Used: 55873218838 (52.04 GB)
DFS Remaining: 330372907008(307.68 GB)
DFS Used%: 20.84%
DFS Remaining%: 67.71%
Last contact: Fri Aug 13 10:17:21 GMT+08:00 2010

e. 在停掉节点Decommission Status不为Normal前, mapreduce操作会出现异常。

f. 节点移走64G数据需要十分钟左右。

二、 数据负载均衡

1. 在Hadoop集群中新添加一个Datanode时,需要对集群数据进行负载均衡。

2. 在主节点运行bin/start-balancer.sh命令,可以添加参数-threshold 5,threshold是平衡阈值,默认是10%,值越小负载越均衡,但需要更长的时间去执行。

3. 添加s140到集群,执行负载均衡半个小时共负载了4G的数据。

<think>嗯,用户这次问的是Hadoop如何配置DataNode节点,看来是在搭建分布式存储环境。从用户引用的资料看,ta应该已经查阅过一些零散的配置片段,但需要系统化的指导。用户引用的资料涉及启动命令[^2]、黑白名单配置[^3]和日志路径[^1],说明ta可能遇到了具体问题。 用户身份可能是运维工程师或大数据平台搭建者,从引用Linux路径和命令的熟练度看,应该具备基础的系统操作能力。深层需求可能是想确认配置流程的完整性,避免遗漏步骤导致节点无法注册——引用[^4]提到的DatanodeManager报错就很典型,往往是配置不匹配引发的。 准备分四个层面回复:首先是基础配置文件修改,这是注册节点的核心;其次是黑白名单管理,用户引用[^3]提到过这个高级功能;接着是启动验证,要覆盖用户引用[^2]的手动启动方式;最后补充注册失败排查方法,针对用户隐含的排错需求。每个步骤都会强调关键参数,比如hdfs-site.xml中的datanode.data.dir配置项必须NameNode的存储路径一致,这是很多初学者踩坑的地方。 考虑到用户引用过黑白名单配置,会特别说明其优先级:当白名单存在时,只有名单内的节点能注册。这点在很多文档里容易忽略,但用户引用[^3]创建了空名单文件,可能导致所有节点被拒绝——需要警告ta初始配置后要立即添加节点IP到白名单。 日志路径也要明确给出,用户引用[^1]的日志输出路径包含变量,实际使用容易混淆。计划统一用$HADOOP_HOME/logs/格式,并提示通过hadoop-env.sh自定义路径。对于启动命令,除了用户引用[^2]的旧式脚本,还会补充推荐使用新命令hdfs --daemon start,因为Hadoop 3.x已废弃hadoop-daemon.sh。 </think>以下是 Hadoop 配置 DataNode 的详细步骤和指南,结合核心配置、启动验证及排错方法: --- ### **一、基础配置步骤** 1. **修改 `hdfs-site.xml`** 在 DataNode 主机上配置 HDFS 参数: ```xml <!-- 配置 DataNode 存储目录 --> <property> <name>dfs.datanode.data.dir</name> <value>file:///data/hadoop/hdfs/data</value> <!-- 自定义数据存储路径 --> </property> <!-- 启用自动恢复(可选) --> <property> <name>dfs.datanode.data.dir.perm</name> <value>700</value> <!-- 目录权限 --> </property> ``` 2. **同步 NameNode 配置** 确保 DataNode 的 `core-site.xml` 中 **NameNode 地址**集群一致: ```xml <property> <name>fs.defaultFS</name> <value>hdfs://namenode-host:8020</value> <!-- NameNode 的 RPC 地址 --> </property> ``` 3. **配置节点通信** 在 `etc/hadoop/slaves` 中添加 DataNode 主机名(Hadoop 2.x)或通过 `workers` 文件Hadoop 3.x): ```plaintext datanode1 datanode2 datanode3 ``` --- ### **二、高级管理:黑白名单 [^3]** 1. **创建名单文件** 在 NameNode 的 `etc/hadoop/` 目录下: ```bash touch whitelist # 白名单(允许注册的节点) touch blacklist # 黑名单(拒绝注册的节点) ``` 2. **配置 `hdfs-site.xml`** ```xml <property> <name>dfs.hosts</name> <value>/path/to/whitelist</value> </property> <property> <name>dfs.hosts.exclude</name> <value>/path/to/blacklist</value> </property> ``` 3. **动态刷新节点** 修改名单后,在 NameNode 执行: ```bash hdfs dfsadmin -refreshNodes ``` --- ### **三、启动验证** 1. **手动启动 DataNode [^2]** ```bash # Hadoop 2.x/3.x 通用命令 hdfs --daemon start datanode # 推荐方式 # 或旧版本脚本 sbin/hadoop-daemon.sh start datanode ``` 2. **检查注册状态** - 查看 NameNode Web UI(默认 `http://namenode-host:9870`) - 执行命令检查: ```bash hdfs dfsadmin -report | grep "Live Datanodes" ``` --- ### **四、常见问题排查** - **启动失败** 检查日志(默认 `$HADOOP_HOME/logs/hadoop-*-datanode-*.log`)[^1],常见原因包括: - 目录权限错误(需 `chown` 为 Hadoop 用户) - NameNode 通信失败(检查防火墙/端口) - 存储路径未创建(手动创建并授权) - **节点未注册** - 确认 `fs.defaultFS` 地址正确 - 检查黑白名单是否包含该节点 [^3] - 若报错 `registerDatanode` 失败 [^4],验证 DataNode 的 `datanodeUuid` 是否冲突(删除 `dfs.datanode.data.dir` 下的 `VERSION` 文件并重启) --- ### **总结流程** ```mermaid graph TD A[配置 hdfs-site.xml] --> B[同步 core-site.xml] B --> C[添加节点到 workers 文件] C --> D[配置黑白名单] D --> E[启动 DataNode 服务] E --> F[检查 Web UI 或 dfsadmin 报告] ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值