Hadoop记录-Hadoop集群添加节点和删除节点

时间:2023-03-08 15:39:01

1、添加节点

A:新节点中添加账户,设置无密码登陆

B:Name节点中设置到新节点的无密码登陆

C:在Name节点slaves文件中添加新节点

D:在所有节点/etc/hosts文件中增加新节点(所有节点保持一致)

E:在新节点中执行

./bin/hadoop-daemon.sh start datanode

./bin/hadoop-daemon.sh start tasktracker

均衡个数据节点中的数据./bin/start-balancer.sh

注意

1)如果不balance,那么cluster会把新的数据都存放在新的node上,这样会降低mapred的工作效率

2)设置平衡阈值,默认是10%,值越低各节点越平衡,但消耗时间也更长

./bin/start-balancer.sh -threshold 5

3)设置balance的带宽,默认只有1M/s

<property>

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

  <value>1048576</value>

  <description>

    Specifies the maximum amount of bandwidth that each datanode

    can utilize for the balancing purpose in term of

    the number of bytes per second.

  </description>

</property>

2、删除节点

A:修改Name节点的hdfs-site.xml增加

<property>

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

<value>/soft/hadoop/conf/excludes</value>

</property>

B:修改Name节点的mapred-site.xml增加

<property>

<name>mapred.hosts.exclude</name>

<value>/soft/hadoop/conf/excludes</value>

<final>true</final>

</property>

C:新建excludes文件,文件里写要删除节点的hostname

D:Name节点执行

hadoop mradmin –refreshNodes

hadoop dfsadmin –refreshNodes<br>(task进程可以kill进程ID)

查看关闭进程

hadoop dfsadmin -report

当节点处于Decommissioned,表示关闭成功。

注意

1:如果刚删除的节点要再添加到集群要先删除excludes文件,执行 hadoop dfsadmin –refreshNodes

2:节点的状态可以通过http://NameNodes:50070查看

3:如果数据较大则关闭的时间可能会很长

-----------------------------------------------------------------------------------------------------------------------------------------------------

#新增节点

1.安装linux,和以前一样的版本 
2.初始化系统环境
 2.1.设置静态ip

Hadoop记录-Hadoop集群添加节点和删除节点
vi /etc/sysconfig/network-scripts/ifcfg-eth0
//增加
#Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth0
#BOOTPROTO=dhcp
# add
BOOTPROTO=static
ONBOOT=yes
# add
IPADDR=192.168.119.134
HWADDR=00:0c:29:59:df:84 //重启网络文件:service network restart
Hadoop记录-Hadoop集群添加节点和删除节点

 2.2.安装jdk 配置Java 环境变量
 2.3.关闭防火墙

service iptables stop
chkconfig iptables off

3.配置ssh登陆

在新增节点:cd root
mkdir .ssh //新建.ssh目录
在master节点:cd ~/.ssh
scp authorized_keys 新增节点IP:/root/.ssh/authorized_keys //复制免密码登陆到新增节点

4.修改hosts文件

Hadoop记录-Hadoop集群添加节点和删除节点
在master节点:vi /etc/hosts
//增加 新增节点IP h2slave3
//复制到其他DataNode节点
scp /etc/hosts h2slave1:/etc/hosts
scp /etc/hosts h2slave2:/etc/hosts
scp /etc/hosts h2slave3:/etc/hosts
Hadoop记录-Hadoop集群添加节点和删除节点

5.复制hadoop2.2到新增节点(在master节点操作)

Hadoop记录-Hadoop集群添加节点和删除节点
scp -r /home/bigdata/hadoop2.2 h2slave3:/home/bigdata/
//然后切换到新增节点 配置hadoop的环境变量

//在master节点修改 /home/bigdata/hadoop2.2/etc/hadoop/slaves
//新增 新增节点的IP

//然后复制到其他DataNode
scp /home/bigdata/hadoop2.2/etc/hadoop/slaves h2slave1:/home/bigdata/hadoop2.2/etc/hadoop/slaves
scp /home/bigdata/hadoop2.2/etc/hadoop/slaves h2slave2:/home/bigdata/hadoop2.2/etc/hadoop/slaves
scp /home/bigdata/hadoop2.2/etc/hadoop/slaves h2slave3:/home/bigdata/hadoop2.2/etc/hadoop/slaves
Hadoop记录-Hadoop集群添加节点和删除节点

  5.1. 添加DataNode

Hadoop记录-Hadoop集群添加节点和删除节点
//对于新添加的DataNode节点,需要启动datanode进程,从而将其添加入集群
//在新增的节点上,运行 sbin/hadoop-daemon.sh start datanode
//在namenode节点刷新datanode, hdfs dfsadmin -refreshNodes

//然后在namenode查看集群情况,通过 hdfs dfsadmin -report
//也可以通过NameNode50070端口查看活动的DataNode节点数 
Hadoop记录-Hadoop集群添加节点和删除节点

  5.2.平衡DataNode节点

Hadoop记录-Hadoop集群添加节点和删除节点
//在Master节点 cd /home/bigdata/hadoop2.2/sbin

//对hdfs负载设置均衡,因为默认的数据传输带宽比较低,可以设置为64M
hdfs dfsadmin -setBalancerBandWidth 67108864 //默认balancer的threshold为10%,即各个节点与集群总的存储使用率相差不超过10%,我们可将其设置为5%
start-balancer.sh -threshold 5
Hadoop记录-Hadoop集群添加节点和删除节点

  5.3.添加NodeManager

//由于Hadoop 2.X引入了YARN框架,所以对于每个计算节点都可以通过NodeManager进行管理,同理启动NodeManager进程后,即可将其加入集群
//在新增节点,运行 sbin/yarn-daemon.sh start nodemanager //在ResourceManager,通过 yarn node -list 查看集群情况 

遇到问题:在复制hadoop文件夹时我复制的datanode的hadoop,最终导致,新节点与被复制节点的datanodeUuid一样(位置:{HADOOPHOME}/tmp/dfs/name/current/VERSION文件)这样会导致,被复制节点和新节点的冲突,被复制节点和新节点在web查看时,或者被复制节点出现,或者新节点出现(但均为“死节点”)
解决办法:一定要从NameNode中复制hadoop-2.2.0文件夹

#删除节点

//极端不建议直接在slave节点通过:hadoop-daemon.sh stop datanode
命令关掉datanode,这会导致hdfs中出现missing block

在hadoop0上修改conf/hdfs-site.xml文件

<property>
  <!--dfs.hosts.exclude定义的文件内容为,每个需要下线的机器,一行一个-->
  <name>dfs.hosts.exclude</name>
  <value>/usr/local/hadoop/hadoop-2.2.0/etc/hadoop/excludes</value>
</property>

1. 在master上创建并修改excludes文件,添加需要删除节点的IP
2. 在master上刷新节点配置情况:hadoop dfsadmin -refreshNodes

此时在Web UI上就可以看到该节点变为Decommissioning状态,过一会就变为Dead了
也可以通过:hadoop dfsadmin -report 命令查看

3. 在slave上关闭datanode进程(非必须):hadoop-daemon.sh stop datanode  

#重新加入删除的节点

1.在master的excludes文件中删除相应节点IP
2.在slave上重启datanode进程:hadoop-daemon.sh start datanode 
3.在master上刷新节点配置情况:hadoop dfsadmin -refreshNodes

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

卸载节点或者增加节点: 
方式一:静态的增添删除:将集群关闭,修改配置文件(etc/hadoop/slaves),重新启动集群(很黄很暴力,不够人性化)。 
方式二:动态的增加和卸载节点。

卸载DataNode节点: 
1)要在HDFS主节点NameNode上,进行配置。 
a)在etc/hadoop/hdfs-site.xml中,设置属性值:

dfs.hosts.exclude 
/opt/modules/hadoop-2.5.0/ect/hadoop/dfs-hosts.exclude

b)创建文件并在文件中加入卸载节点的IP地址或者主机名。 
2)在NameNode节点上刷新集群 
bin/hdfs dfsadmin -refreshNodes 
3)从页面查看卸载相关信息(过程)。 
4)通过命令来查看结果。 
bin/hdfs dfsadmin -report 
5)在卸载机器上关闭DataNode进程 
sbin/hadoop-daemon.sh stop datanode 
6)将dfs-hosts.exclude文件内容清空

注意: 
在卸载NodeManager时,一定要主要配置在ResourceManager上。 
yarn.resourcemanager.nodes.exclude-path 
/opt/modules/hadoop-2.5.0/etc/hadoop/yarn-hosts.exclude

增加新机器,DataNode(存储数据)和NodeManager(计算) 
1)系统、主机名、IP地址、防火墙、SELinux等与集群的从节点基本配置保持一致。 
2)安装JDK(版本、路径、环境变量保持一致)。 
3)配置主节点(HDFS:NameNode;YARN:ResourceManager)所在机器到新机器的SSH无密钥登录(方便集群的启动)。 
4)配置修改etc/hadoop/slaves文件(只需要在主节点上修改)。 
5)分发hadoop安装包(配置完成)到新机器上。 
6)创建HDFS、YARN在新机器的本地磁盘上一些文件夹。 
7)在新机器上启动DataNode和NodeManager节点。 
DataNode:sbin/hadoop.daemon.sh start datanode 
NodeManager:sbin/yarn.daemon.sh start nodemanager 
注意: 
需要将新机器的IP地址与主机名称的映射关系配置到系统的【/etc/hosts】文件中,最好是所有集群中的机器都要添加。