Hadoop中正确地添加和移除节点

本文介绍如何正确地在Hadoop集群中添加和移除节点,包括配置修改、数据同步及平衡策略等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

正确地添加和移除节点

添加节点

克隆

克隆一台全新的Linux(如有IP冲突,可右击VMware右下角网络图标断开连接)

打开/etc/hostname修改主机名

打开/etc/sysconfig/network-script/ifcfg-ens33修改IP

重启

安装

使用安装包+hadoop-install.sh脚本快速安装一个Hadoop节点

注意使用source hadoop-install.sh执行

配置NameNode

打开/etc/hosts添加新节点的IP和主机名

打开etc/hadoop/slaves添加新节点的主机名

打开hdfs-site.xml,设置节点平衡带宽设置(默认值1M,下面设置为10M)

<property>

<name>dfs.datanode.balance.bandwidthPerSec</name>

<value>20971520</value>

</property>

同步DataNode配置

在所有DataNode节点上执行hadoop-pull.sh

注意修改脚本中的NameNode变量值!

启动

在新节点上执行

hadoop-daemon.sh start datanode

平衡

让各个DataNode中的数据均匀分布,

start-balancer.sh -threshold 5

-threshold是平衡阈值,默认值允许10%的差异,值越小越平衡,但花费的时间会越长

 

通过下面的命令也可以设置平衡时使用的网络带宽(字节/秒)

hdfs dfsadmin -setBalancerBandwidth20971520

在网络带宽受限的情况下,平衡速度较慢,需要耐心等待一段时间才能观察到效果

 

平衡时先通过NameNode提供的元数据进行平衡规划,然后开启多线程将数据从老节点移到新节点。

如果想查看平衡的过程,可以用下面的命令:

hdfs balancer -threshold 5

 

移除节点

如果节点中已经保存了数据,则从slaves中移除节点,重启集群这种暴力手段就不适用了,如果暴力删除则会造成数据丢失。为了解决生产环境中平稳安全地移除节点的问题,Hadoop提供了一个流程:

设置排除

namenode打开hdfs-site.xml,设置节点排除文件的位置(必须是绝对路径)

<property>

<name>dfs.hosts.exclude</name>

<value>/usr/share/hadoop/etc/hadoop/excludes</value>

</property>

excludes文件中添加要排除的节点主机名,一行一个

 

更新节点配置

NameNode中执行下面命令,强制重新加载配置

hdfs dfsadmin -refreshNodes

Hadoop站点上很快就能看到Decommission正在进行,此时NameNode会检查并将数据复制到其它节点上以恢复副本数(要移除的节点上的数据不会被删除,如果数据比较敏感,要手动删除它们)。通过命令也可以查看状态:

hdfs dfsadmin -report


等状态变成Decommissioned后就可以关闭这个节点了,可在要移除的节点上运行相应的关闭命令,如:

hadoop-daemon.sh stop datanode

几分钟后,节点将从Decommissioned进入Dead状态。

 

更新集群配置

NameNodeexcludes文件及slaves文件、hosts文件中去掉已经移除的主机名

在所有DataNode上执行hadoop-pull.sh脚本,同步配置。

<think>嗯,我现在要卸载CentOS7上的Hadoop分布式集群,包括主节点节点。我对这个过程不太熟悉,得一步步来。首先,我需要回想一下Hadoop集群的基本结构。通常有一个主节点(NameNode、ResourceManager等)多个从节点(DataNode、NodeManager等)。卸载的话,可能需要分别在每台机器上操作,或者有没有什么批量操作的方法? 首先,我应该停止Hadoop的相关服务吧。不然直接删除文件可能会有问题。主节点上应该运行着HDFS的NameNodeYARN的ResourceManager,可能还有SecondaryNameNode之类的。从节点上则是DataNodeNodeManager。需要逐个停止这些服务吗?或者Hadoop有没有统一的停止命令? 记得Hadoop的停止命令可能是stop-all.sh或者stop-dfs.shstop-yarn.sh分开执行?不过这些脚本可能在新版本中已经被弃用了,改用sbin目录下的单独脚本?比如先停YARN再停HDFS?假设用户使用的是较新的版本,可能需要分步骤停止服务。或者,如果已经配置了systemd服务,可能要用systemctl命令来停止。但大多数情况下,可能还是用Hadoop自带的脚本。 接下来,需要确认所有Hadoop进程都已经终止。使用jps命令查看是否有残留的Java进程,比如NameNode、DataNode、ResourceManager、NodeManager等。如果有的话,可能需要手动kill掉这些进程。比如用jps找到进程号,然后kill -9 PID。这一步要注意别误杀其他Java应用。 然后,卸载Hadoop软件本身。主节点节点上可能都安装了Hadoop的安装包,如果是通过压缩包解压安装的,那么直接删除安装目录即可。比如通常Hadoop安装在/usr/local/hadoop或者/opt/hadoop这样的目录下。需要检查环境变量,比如~/.bashrc或者/etc/profile中的HADOOP_HOME设置,以及PATH变量中的相关路径,这些都需要清理掉,避免残留。 还有Hadoop的数据日志文件。通常这些存放在Hadoop配置文件中指定的目录,比如hdfs-site.xml里设置的dfs.datanode.data.dirdfs.namenode.name.dir,默认可能在/tmp/hadoop-*或者自定义的路径如/hadoop/data。需要删除这些目录下的所有数据,否则重新安装时可能会有旧数据干扰。 另外,SSH免密登录的配置是否需要处理?如果主节点节点之间配置了SSH密钥认证,可能需要删除相关的公钥私钥,不过这可能不是必须的,因为卸载Hadoop本身不需要动SSH配置,但如果要彻底清理,可以检查~/.ssh/authorized_keys文件,移除节点到从节点的公钥。 还有系统服务的问题,如果Hadoop被配置为系统服务,可能需要停止并禁用这些服务,比如用systemctl stop hadoop.service(假设有的话),然后删除服务文件。不过大多数情况下,Hadoop是通过脚本启动的,不是系统服务。 接下来是具体的步骤。可能需要分为主节点节点的操作,但很多步骤是类似的,比如停止服务、删除目录、清理环境变量。但主节点可能有额外的配置或数据需要处理。 可能需要注意顺序,先停止所有节点的服务,再卸载。比如先停主节点,再停从节点,或者同时停止?不过实际操作中可能需要在每个节点上单独执行停止命令,因为集群中的服务是分布式的。 现在,用户需要的是具体的步骤,所以应该按照逻辑顺序来写: 1. 停止Hadoop集群服务:在主节点执行停止命令,如stop-all.sh或者分开停止HDFSYARN。 2. 检查并终止所有Java进程:用jps检查,kill残留进程。 3. 删除Hadoop安装目录:主节点节点都删除Hadoop的安装路径。 4. 清理数据目录:根据配置文件删除数据存储路径。 5. 移除环境变量配置:编辑用户的bashrc或profile文件,去掉HADOOP_HOME等设置。 6. (可选)清理SSH密钥:如果不需要保留,移除相关密钥。 7. (可选)卸载Java:如果Java是专为Hadoop安装的,可以卸载,但可能其他应用依赖。 可能用户还需要知道每个步骤的具体命令,比如如何停止服务,如何查找安装目录,如何删除目录等。需要给出示例命令,比如: 在主节点执行: stop-dfs.sh stop-yarn.sh 然后,在所有节点检查jps,kill进程。 删除安装目录: rm -rf /usr/local/hadoop 删除数据目录,比如: rm -rf /hadoop/data/* 编辑环境变量文件: vi ~/.bashrc 然后删除HADOOP相关的行,保存后source一下。 对于SSH,可能需要删除主节点的公钥从从节点的authorized_keys中,或者反之。这部分可能比较复杂,用户如果不需要彻底清理SSH配置,可能可以忽略。 另外,防火墙规则是否需要调整?如果在安装Hadoop时开放过端口,可能需要恢复,但卸载Hadoop本身不会自动关闭这些端口,需要手动处理。但用户可能更关注Hadoop本身的卸载,这部分可能属于额外步骤,视情况而定。 总结步骤应该是: 主节点所有从节点都需要执行: 1. 停止Hadoop服务 2. 检查并终止Java进程 3. 删除安装目录数据目录 4. 清理环境变量 5. (可选)清理SSH配置 需要分主节点节点分别处理吗?比如主节点可能有NameNode的数据,而从节点有DataNode的数据,但删除数据目录的步骤在每台机器上都是根据配置进行的。所以步骤大致相同,但数据目录的位置可能不同,需要用户确认自己的配置。 最后,可能还需要确认卸载后的系统状态,比如运行jps确认没有Hadoop进程,检查目录是否删除,环境变量是否生效等。</think>以下是CentOS 7卸载Hadoop分布式集群的详细步骤,涵盖主节点节点的操作: --- ### **1. 停止Hadoop服务** #### **在主节点操作:** ```bash # 停止HDFS服务 ${HADOOP_HOME}/sbin/stop-dfs.sh # 停止YARN服务 ${HADOOP_HOME}/sbin/stop-yarn.sh # 如果存在历史日志服务 ${HADOOP_HOME}/sbin/mr-jobhistory-daemon.sh stop historyserver ``` #### **在所有从节点操作:** ```bash # 停止DataNodeNodeManager(每台从节点执行) ${HADOOP_HOME}/sbin/hadoop-daemon.sh stop datanode ${HADOOP_HOME}/sbin/yarn-daemon.sh stop nodemanager ``` --- ### **2. 检查并终止残留进程** #### **在所有节点执行:** ```bash # 检查Java进程 jps # 强制终止残留进程(例如:NameNode、DataNode等) kill -9 <进程PID> ``` --- ### **3. 删除Hadoop安装目录** #### **在所有节点执行:** ```bash # 删除Hadoop安装目录(默认路径示例) rm -rf /usr/local/hadoop # 如果配置了多目录,需一并删除 rm -rf /opt/hadoop* ``` --- ### **4. 清理数据与日志目录** #### **在所有节点执行:** ```bash # 删除HDFS数据目录(路径参考hdfs-site.xml中的配置) rm -rf /hadoop/data/dfs # NameNode/DataNode数据 rm -rf /hadoop/tmp # 临时文件 # 删除日志目录 rm -rf /var/log/hadoop* ``` --- ### **5. 移除环境变量配置** #### **在所有节点操作:** 编辑用户配置文件(如`~/.bashrc`或`/etc/profile`): ```bash vi ~/.bashrc ``` - 删除以下内容: ```bash export HADOOP_HOME=/usr/local/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin ``` - 使配置生效: ```bash source ~/.bashrc ``` --- ### **6. (可选)清理SSH免密登录配置** #### **在主节点操作:** ```bash # 删除主节点公钥(从所有从节点的authorized_keys中移除) vi ~/.ssh/authorized_keys # 删除与主节点相关的公钥行 ``` --- ### **7. (可选)卸载Java环境** 如果Java专为Hadoop安装且无需保留: ```bash # 查找Java安装路径 which java # 卸载JDK(例如通过yum安装) sudo yum remove java-1.8.0-openjdk ``` --- ### **验证卸载结果** 在所有节点执行: ```bash # 检查Hadoop命令是否失效 hadoop version # 应提示"command not found" # 检查目录是否清除 ls /usr/local/hadoop # 应提示"No such file or directory" ``` --- ### **注意事项** 1. **数据备份**:删除数据目录前,确保无重要数据残留。 2. **多节点同步**:从节点需逐一执行卸载步骤。 3. **配置文件**:若使用Ansible等工具,可通过批量命令简化操作。 按此流程操作即可彻底卸载Hadoop集群。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值