1. 配置系统环境

主机名,ssh互信,环境变量等

本文略去jdk安装,请将datanode的jdk安装路径与/etc/hadoop/hadoop-evn.sh中的java_home保持一致,版本hadoop2.7.5

修改/etc/sysconfig/network

然后执行命令
hostname 主机名
这个时候可以注销一下系统,再重登录之后就行了

  1. [root@localhost ~]# hostname
  2. localhost.localdomain
  3. [root@localhost ~]# hostname -i
  4. :: 127.0.0.1
  5. [root@localhost ~]#
  6. [root@localhost ~]# cat /etc/sysconfig/network
  7. # Created by anaconda
  8. NETWORKING=yes
  9. HOSTNAME=slave2
  10. GATEWAY=192.168.48.2
  11. # oracle-rdbms-server-11gR2-preinstall : Add NOZEROCONF=yes
  12. NOZEROCONF=yes
  13. [root@localhost ~]# hostname slave2
  14. [root@localhost ~]# hostname
  15. slave2
  16. [root@localhost ~]# su - hadoop
  17. Last login: Sat Feb :: CST on pts/
  18. [hadoop@slave2 ~]$ su - root

建datanode目录并改所有者

(此处的具体路径值,请参照namenode中/usr/hadoop/hadoop-2.7.5/etc/hadoop/hdfs-site.xml,core-site.xml中的dfs.name.dir,dfs.data.dir,dfs.tmp.dir等)

Su - root

# mkdir -p /usr/local/hadoop-2.7.5/tmp/dfs/data

# chmod -R 777 /usr/local/hadoop-2.7.5/tmp

# chown -R hadoop:hadoop /usr/local/hadoop-2.7.5

  1. [root@slave2 ~]# mkdir -p /usr/local/hadoop-2.7./tmp/dfs/data
  2. [root@slave2 ~]# chmod -R /usr/local/hadoop-2.7./tmp
  3. [root@slave2 ~]# chown -R hadoop:hadoop /usr/local/hadoop-2.7.
  4. [root@slave2 ~]# pwd
  5. /root
  6. [root@slave2 ~]# cd /usr/local/
  7. [root@slave2 local]# ll
  8. total
  9. drwxr-xr-x. root root Mar bin
  10. drwxr-xr-x. root root Jun etc
  11. drwxr-xr-x. root root Jun games
  12. drwxr-xr-x hadoop hadoop Feb : hadoop-2.7.
  13. drwxr-xr-x. root root Jun include
  14. drwxr-xr-x. root root Jun lib
  15. drwxr-xr-x. root root Jun lib64
  16. drwxr-xr-x. root root Jun libexec
  17. drwxr-xr-x. root root Jun sbin
  18. drwxr-xr-x. root root Dec share
  19. drwxr-xr-x. root root Jun src
  20. [root@slave2 local]#

ssh互信,即实现 master-->slave2免密码

master:

  1. [root@hadoop-master ~]# cat /etc/hosts
  2. 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
  3. ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
  4. 192.168.48.129 hadoop-master
  5. 192.168.48.132 slave1
  6. 192.168.48.131 slave2
  7. [hadoop@hadoop-master ~]$ scp /usr/hadoop/.ssh/authorized_keys hadoop@slave2:/usr/hadoop/.ssh
  8. The authenticity of host 'slave2 (192.168.48.131)' can't be established.
  9. ECDSA key fingerprint is 1e:cd:d1:3d:b0:5b:62:45:a3:63:df:c7:7a:0f:b8:7c.
  10. Are you sure you want to continue connecting (yes/no)? yes
  11. Warning: Permanently added 'slave2,192.168.48.131' (ECDSA) to the list of known hosts.
  12. hadoop@slave2's password:
  13. authorized_keys
  14. [hadoop@hadoop-master ~]$ ssh hadoop@slave2
  15. Last login: Sat Feb 24 18:27:33 2018
  16. [hadoop@slave2 ~]$
  17. [hadoop@slave2 ~]$ exit
  18. logout
  19. Connection to slave2 closed.
  20. [hadoop@hadoop-master ~]$

2. 修改namenode节点的slave文件,增加新节点信息

  1. [hadoop@hadoop-master hadoop]$ pwd
  2. /usr/hadoop/hadoop-2.7.5/etc/hadoop
  3. [hadoop@hadoop-master hadoop]$ vi slaves
  4. slave1
  5. slave2

3. 在namenode节点上,将hadoop-2.7.3复制到新节点上,并在新节点上删除data和logs目录中的文件

Master

  1. [hadoop@hadoop-master ~]$ scp -R hadoop-2.7.5 hadoop@slave2:/usr/hadoop
  2.  
  3. Slave2
  4. [hadoop@slave2 hadoop-2.7.5]$ ll
  5. total 124
  6. drwxr-xr-x 2 hadoop hadoop 4096 Feb 24 14:29 bin
  7. drwxr-xr-x 3 hadoop hadoop 19 Feb 24 14:30 etc
  8. drwxr-xr-x 2 hadoop hadoop 101 Feb 24 14:30 include
  9. drwxr-xr-x 3 hadoop hadoop 19 Feb 24 14:29 lib
  10. drwxr-xr-x 2 hadoop hadoop 4096 Feb 24 14:29 libexec
  11. -rw-r--r-- 1 hadoop hadoop 86424 Feb 24 18:44 LICENSE.txt
  12. drwxrwxr-x 2 hadoop hadoop 4096 Feb 24 14:30 logs
  13. -rw-r--r-- 1 hadoop hadoop 14978 Feb 24 18:44 NOTICE.txt
  14. -rw-r--r-- 1 hadoop hadoop 1366 Feb 24 18:44 README.txt
  15. drwxr-xr-x 2 hadoop hadoop 4096 Feb 24 14:29 sbin
  16. drwxr-xr-x 4 hadoop hadoop 29 Feb 24 14:30 share
  17. [hadoop@slave2 hadoop-2.7.5]$ pwd
  18. /usr/hadoop/hadoop-2.7.5
  19. [hadoop@slave2 hadoop-2.7.5]$ rm -R logs/*

4. 启动新datanode的datanode和nodemanger进程

先确认namenode和当前的datanode中,etc/hoadoop/excludes文件中无待加入的主机,再进行下面操作

  1. [hadoop@slave2 hadoop-2.7.]$ sbin/hadoop-daemon.sh start datanode
  2. starting datanode, logging to /usr/hadoop/hadoop-2.7./logs/hadoop-hadoop-datanode-slave2.out
  3. [hadoop@slave2 hadoop-2.7.]$ sbin/yarn-daemon.sh start nodemanager
  4. starting datanode, logging to /usr/hadoop/hadoop-2.7./logs/yarn-hadoop-datanode-slave2.out
  5. [hadoop@slave2 hadoop-2.7.]$
  6. [hadoop@slave2 hadoop-2.7.]$ jps
  7. DataNode
  8. NodeManager
  9. Jps
  10. [hadoop@slave2 ~]$

5、在NameNode上刷新节点

  1. [hadoop@hadoop-master ~]$ hdfs dfsadmin -refreshNodes
  2. Refresh nodes successful
  3. [hadoop@hadoop-master ~]$sbin/start-balancer.sh

6. 在namenode查看当前集群情况,

确认节点已经正常加入

  1. [hadoop@hadoop-master hadoop]$ hdfs dfsadmin -report
  2. Configured Capacity: (54.63 GB)
  3. Present Capacity: (14.42 GB)
  4. DFS Remaining: (14.42 GB)
  5. DFS Used: ( KB)
  6. DFS Used%: 0.00%
  7. Under replicated blocks:
  8. Blocks with corrupt replicas:
  9. Missing blocks:
  10. Missing blocks (with replication factor ):
  11.  
  12. -------------------------------------------------
  13. Live datanodes (2):
  14.  
  15. Name: 192.168.48.131:50010 (slave2)
  16. Hostname: 183.221.250.11
  17. Decommission Status : Normal
  18. Configured Capacity: 38588669952 (35.94 GB)
  19. DFS Used: 8192 (8 KB)
  20. Non DFS Used: 36887191552 (34.35 GB)
  21. DFS Remaining: 1701470208 (1.58 GB)
  22. DFS Used%: 0.00%
  23. DFS Remaining%: 4.41%
  24. Configured Cache Capacity: 0 (0 B)
  25. Cache Used: 0 (0 B)
  26. Cache Remaining: 0 (0 B)
  27. Cache Used%: 100.00%
  28. Cache Remaining%: 0.00%
  29. Xceivers: 1
  30. Last contact: Thu Mar 01 19:36:33 PST 2018
  31.  
  32. Name: 192.168.48.132: (slave1)
  33. Hostname: slave1
  34. Decommission Status : Normal
  35. Configured Capacity: (18.70 GB)
  36. DFS Used: ( KB)
  37. Non DFS Used: (5.86 GB)
  38. DFS Remaining: (12.84 GB)
  39. DFS Used%: 0.00%
  40. DFS Remaining%: 68.67%
  41. Configured Cache Capacity: ( B)
  42. Cache Used: ( B)
  43. Cache Remaining: ( B)
  44. Cache Used%: 100.00%
  45. Cache Remaining%: 0.00%
  46. Xceivers:
  47. Last contact: Thu Mar :: PST
  48.  
  49. [hadoop@hadoop-master hadoop]$

7动态删除datanode

7.1配置NameNode的hdfs-site.xml,

适当减小dfs.replication副本数,增加dfs.hosts.exclude配置

  1. [hadoop@hadoop-master hadoop]$ pwd
  2. /usr/hadoop/hadoop-2.7./etc/hadoop
  3. [hadoop@hadoop-master hadoop]$ cat hdfs-site.xml
  4. <configuration>
  5. <property>
  6. <name>dfs.replication</name>
  7. <value></value>
  8. </property>
  9. <property>
  10. <name>dfs.name.dir</name>
  11. <value>/usr/local/hadoop-2.7./tmp/dfs/name</value>
  12. </property>
  13. <property>
  14. <name>dfs.data.dir</name>
  15. <value>/usr/local/hadoop-2.7./tmp/dfs/data</value>
  16. </property>
  17. <property>
  18. <name>dfs.hosts.exclude</name>
  19. <value>/usr/hadoop/hadoop-2.7.5/etc/hadoop/excludes</value>
  20. </property>
  21.  
  22. </configuration>

7.2在namenode对应路径(/etc/hadoop/)下新建excludes文件,

并写入待删除DataNode的ip或域名

  1. [hadoop@hadoop-master hadoop]$ pwd
    /usr/hadoop/hadoop-2.7.5/etc/hadoop
    [hadoop@hadoop-master hadoop]$ vi excludes
  2. ####slave2
  3. 192.168.48.131[hadoop@hadoop-master hadoop]$

7.3在NameNode上刷新所有DataNode

  1. hdfs dfsadmin -refreshNodes
  2. sbin/start-balancer.sh

7.4在namenode查看当前集群情况,

确认信节点已经正常删除,结果中已无slave2

  1. [hadoop@hadoop-master hadoop]$ hdfs dfsadmin -report

或者可以在web检测界面(ip:50070)上可以观测到DataNode逐渐变为Dead。

http://192.168.48.129:50070/

在datanode项,Admin state已经由“In Service“变为”Decommissioned“,则表示删除成功

7.5停止已删除的节点相关进程

  1. [hadoop@slave2 hadoop-2.7.]$ jps
  2. Jps
  3. DataNode
  4. NodeManager
  5. [hadoop@slave2 hadoop-2.7.]$ sbin/hadoop-daemon.sh stop datanode
  6. stopping datanode
  7. [hadoop@slave2 hadoop-2.7.]$ sbin/yarn-daemon.sh stop nodemanager
  8. stopping nodemanager
  9. [hadoop@slave2 hadoop-2.7.]$ jps
  10. Jps
  11. [hadoop@slave2 hadoop-2.7.]$

8恢复已删除节点

执行7.2 中删除相关信息,然后4,5,6即可

hadoop动态添加删除节点datanode及恢复的更多相关文章

  1. Hadoop动态加入/删除节点(datanode和tacktracker)

    大体,正确的做法是首选的配置文件,然后开始详细机对应的进程/停止操作. 网上一些资料说在调整配置文件的时候,优先使用主机名而不是IP进行配置. 总的来说加入/删除DataNode和TaskTracke ...

  2. js实现网页收藏功能,动态添加删除网址

    <html> <head> <title> 动态添加删除网址 </title> <meta charset="utf-8"&g ...

  3. jquery动态添加删除div--事件绑定,对象克隆

    我想做一个可以动态添加删除div的功能.中间遇到一个问题,最后在manong123.com开发文摘 版主的热心帮助下解答了(答案在最后) 使用到的jquery方法和思想就是:事件的绑定和销毁(unbi ...

  4. 编辑 Ext 表格(一)——— 动态添加删除行列

    一.动态增删行 在 ext 表格中,动态添加行主要和表格绑定的 store 有关, 通过对 store 数据集进行添加或删除,就能实现表格行的动态添加删除.   (1) 动态添加表格的行  gridS ...

  5. 【实践】js 如何实现动态添加文本节点

    对于我这个js 小白来说 今天鼓起勇气做起了邮箱认证这个特效 但是这次不是想说如何实现这这个特效而是想记录一下特效当中的某个部分 那就是向元素节点动态添加文本节点 百度了一下动态添加文本节点的方式 是 ...

  6. 用Javascript动态添加删除HTML元素实例 (转载)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. jQuery动态添加删除CSS样式

    jQuery框架提供了两个CSS样式操作方法,一个是追加样式addClass,一个是移除样式removeClass,下面通过一个小例子讲解用法. jQuery动态追加移除CSS样式 <!DOCT ...

  8. mongodb replica set 添加/删除节点方法--http://www.ii123.com/jc/bc/bczh/258948.html

    replica set多服务器主从,添加,删除节点,肯定会经常遇到的.下面详细说明一下,添加,删除节点的2种方法. 一,利用rs.reconfig,来添加,删除节点 1,添加节点  代码如下   re ...

  9. MongoDB添加删除节点

    副本集添加删除节点 sharding添加删除节点 先将节点设置为hidden,再remove

随机推荐

  1. 运行startup.bat的启动过程

    一.前言 一般启动tomcat都是找到bin目录下的startup.bat(windows)下或者startup.sh(linux下),所以要研究tomcat的启动,startup脚本是避不开的.那么 ...

  2. HAAR小波

    HAAR小波分解信号或图像的“平滑”部分和“变化”部分(也许所有小波都这样?). 比如信号[1 2 3 4 5 6 7 8] 分解后(不考虑系数): [1.5 3.5 5.5 7.5]         ...

  3. Temporary ASP.NET Files\root 空间增长太快

    估计是虚拟目录有新的文件,造成项目重新被编译要么把新文件放到另一个目录,要么使用web application而不是web project

  4. 关于java分布式系统开关功能设计(服务升降级)

    首先讲一下开关的由来,例如东京在6月18日做店庆促销活动,在交易下单环节,可能需要调用A.B.C三个接口来完成,但是其实A和B是必须的,C只是附加的功能(例如在下单的时候做一下推荐),可有可无,在平时 ...

  5. [蓝桥杯]ALGO-8.算法训练_操作格子

    题目描述: 问题描述 有n个格子,从左到右放成一排,编号为1-n. 共有m次操作,有3种操作类型: .修改一个格子的权值, .求连续一段格子权值和, .求连续一段格子的最大值. 对于每个2.3操作输出 ...

  6. LeetCode——9. Palindrome Number

    一.题目链接:https://leetcode.com/problems/palindrome-number/ 二.题目大意: 给定一个整数,判断它是否为一个回文数.(例如-12,它就不是一个回文数: ...

  7. C/C++基础--面向对象编程OOP

    基类通常定义一个虚析构函数,通过基类指针析构派生类对象时不会出现未定义的行为. 如果一个类定义析构函数,编译器不会为这个类合成移动操作. 虚函数覆盖,可以显式地加override,可以让程序员的意图更 ...

  8. Bitmap BitmapData

    var sp:Sprite=new Sprite(); sp.graphics.beginFill(0xffccdd); sp.graphics.drawRect(0,0,100,100); sp.g ...

  9. C#、AE开发入门之打开shp文件并显示

    首先要建立好对应的对话框程序,并拖入axMapControl控件和axLisence控件,并设置一个按钮打开该文件 当然在使用前一定要绑定对应的ArcGis产品 static void Main() ...

  10. C++ Programming Language中的Calculator源代码

    C++ Programming Language 4th中的Calculator源代码整理,因为在C++ Programming Language中,涉及了很多文件位置之类的变化,所以,这里只是其中的 ...