前提条件:

添加机器安装jdk等,最好把环境都搞成一样,示例可做相应改动

实现目的:

在hadoop集群中添加一个新增数据节点。

1. 创建目录和用户 

mkdir -p /app/hadoop

groupadd hadoop

useradd licz -g hadoop -d /app/hadoop

chown licz:hadoop /app/hadoop

passwd licz

注:如果出现下面的问题

[root@dbserver22 ~]# su - licz
-bash-3.2$

解决办法:

cp -a /etc/skel/. /app/hadoop

2. 修改环境变量

[licz@server123 ~]$ vi .bash_profile

PATH=$PATH:$HOME/bin

export LANG=zh_CN

export PATH

unset USERNAME

export HADOOP_HOME=/app/hadoop/hadoop-1.2.1

export JAVA_HOME=/usr/java/jdk1.6.0_18

export HIVE_HOME=/app/hadoop/hive-0.11.0

export PIG_HOME=/app/hadoop/pig-0.12.0

export PIG_CLASSPATH=/app/hadoop/pig-0.12.0/conf

PATH=$JAVA_HOME/bin:$PATH:$HOME/bin:$HADOOP_HOME/bin:$PIG_HOME/bin:$HIVE_HOME/bin

export PATH

export HADOOP_HOME_WARN_SUPPRESS=1

3. 修改host文件,添加服务器

[root@server123 ~]# vi /etc/hosts

10.1.32.91             nticket1

10.1.32.93             nticket2

10.1.32.95             nticket3

10.1.5.123             server123

同样在其它各节点都添加新的server123服务器

4. 配置ssh免密码连入

步骤为:

->在新节点上生成自己的密钥

->把原集群中的密钥复制添加到新节点的密钥当中

->再把新节点上的新密钥复制(覆盖)到原集群中的新节点

--首先,为了避免误操作,操作之前要先备份原集群的密钥文件

[licz@nticket1 .ssh]$ cp authorized_keys authorized_keys.bak

[licz@server123 ~]$ ssh-keygen -t rsa

[licz@server123 ~]$ cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys

[licz@server123 ~]$ ssh nticket1 cat ~/.ssh/authorized_keys >> ~/.ssh/authorized_keys

[licz@server123 ~]$ scp ~/.ssh/authorized_keys nticket1:~/.ssh/authorized_keys

[licz@server123 ~]$ ssh nticket1 date

2014年 02月 12日 星期三 11:31:08 CST

[licz@nticket1 .ssh]$ ssh server123 date

三  2月 1211:25:57 CST 2014

--同样把新新密钥复制(覆盖)到原集群中的新节点

[licz@server123 ~]$ scp ~/.ssh/authorized_keys nticket2:~/.ssh/authorized_keys

[licz@server123 ~]$ scp ~/.ssh/authorized_keys nticket3:~/.ssh/authorized_keys

5. 修改hadoop配置文件

--在各节点修改hadoop的配置文件

[licz@nticket1 conf]$ vi slaves

nticket2

nticket3

server123

6. 安装hadoop

--把集群中的hadoop复制到新节点

[licz@nticket2~]$ scp -r hadoop-1.2.1/server123:/app/hadoop

  

7. 在新节点上启动datanode和tasktracker

[licz@server123~]$ hadoop-daemon.sh start datanode

startingdatanode, logging to /app/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-licz-datanode-server123.out

[licz@server123~]$ hadoop-daemon.sh start tasktracker

startingtasktracker, logging to /app/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-licz-tasktracker-server123.out

--测试安装成功

[licz@server123 ~]$ jps

18356 DataNode

18517 TaskTracker

18780 Jps

8. 进行block块的均衡

--在hdfs-site.xml中增加设置balance的带宽,默认只有1M:

<property>

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

<value>10485760</value>

<description>

Specifies the maximum bandwidth thateach datanode can utilize for the balancing purpose in term of the number ofbytes per second.

</description>

</property>

运行以下命令:

[licz@server123conf]$ start-balancer.sh -threshold 5

startingbalancer, logging to /app/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-licz-balancer-server123.out

Time Stamp               Iteration#  Bytes Already Moved  Bytes Left To Move  Bytes Being Moved
2014-2-20 17:55:14                0                 0 KB            14.12 GB           14.06 GB

--测试

[licz@server123~]$ hadoop dfs -ls /user/hive

Found 1 items

drwxr-xr-x   - licz supergroup          0 2014-02-10 11:25/user/hive/warehouse

[licz@nticket1 ~]$ hadoop dfsadmin -report
Configured Capacity: 2588293705728 (2.35 TB)
Present Capacity: 2027166097408 (1.84 TB)
DFS Remaining: 2026681536512 (1.84 TB)
DFS Used: 484560896 (462.11 MB)
DFS Used%: 0.02%
Under replicated blocks: 9
Blocks with corrupt replicas: 0
Missing blocks: 0

-------------------------------------------------
Datanodes available: 3 (3 total, 0 dead)

Name: 10.1.32.95:50010
Decommission Status : Normal
Configured Capacity: 1041225043968 (969.72 GB)
DFS Used: 242110464 (230.89 MB)
Non DFS Used: 102109831168 (95.1 GB)
DFS Remaining: 938873102336(874.39 GB)
DFS Used%: 0.02%
DFS Remaining%: 90.17%
Last contact: Fri Feb 14 09:49:02 CST 2014

Name: 10.1.32.93:50010
Decommission Status : Normal
Configured Capacity: 1041225043968 (969.72 GB)
DFS Used: 242143232 (230.93 MB)
Non DFS Used: 57774628864 (53.81 GB)
DFS Remaining: 983208271872(915.68 GB)
DFS Used%: 0.02%
DFS Remaining%: 94.43%
Last contact: Fri Feb 14 09:49:02 CST 2014

Name: 10.1.5.123:50010
Decommission Status : Normal
Configured Capacity: 505843617792 (471.1 GB)
DFS Used: 307200 (300 KB)
Non DFS Used: 401243148288 (373.69 GB)
DFS Remaining: 104600162304(97.42 GB)
DFS Used%: 0%
DFS Remaining%: 20.68%
Last contact: Fri Feb 14 09:49:03 CST 2014

参考 http://blog.csdn.net/lichangzai/article/details/19118711

添加节点


1.修改host 
  和普通的datanode一样。添加namenode的ip

2.修改namenode的配置文件conf/slaves 
  添加新增节点的ip或host

3.在新节点的机器上,启动服务

[root@slave-004 hadoop]# ./bin/hadoop-daemon.sh start datanode
[root@slave-004 hadoop]# ./bin/hadoop-daemon.sh start tasktracker

4.均衡block

[root@slave-004 hadoop]# ./bin/start-balancer.sh

1)如果不balance,那么cluster会把新的数据都存放在新的node上,这样会降低mapred的工作效率 
2)设置平衡阈值,默认是10%,值越低各节点越平衡,但消耗时间也更长

[root@slave-004 hadoop]# ./bin/start-balancer.sh -threshold 5

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

1 <property>
2   <name>dfs.balance.bandwidthPerSec</name>
3   <value>1048576</value>
4   <description>
5     Specifies the maximum amount of bandwidth that each datanode
6     can utilize for the balancing purpose in term of
7     the number of bytes per second.
8   </description>
9 </property>

注意: 
1. 必须确保slave的firewall已关闭; 
2. 确保新的slave的ip已经添加到master及其他slaves的/etc/hosts中,反之也要将master及其他slave的ip添加到新的slave的/etc/hosts中

删除节点

 

1.集群配置 
   修改conf/hdfs-site.xml文件

1 <property>  
2   <name>dfs.hosts.exclude</name>
3   <value>/data/soft/hadoop/conf/excludes</value>
4   <description>Names a file that contains a list of hosts that are
5   not permitted to connect to the namenode. The full pathname of the
6   file must be specified. If the value is empty, no hosts are
7   excluded.</description>
8 </property>

2确定要下架的机器 
dfs.hosts.exclude定义的文件内容为,每个需要下线的机器,一行一个。这个将阻止他们去连接Namenode。如:

slave-003  
slave-004

3.强制重新加载配置

[root@master hadoop]# ./bin/hadoop dfsadmin  -refreshNodes  

它会在后台进行Block块的移动

4.关闭节点 
等待刚刚的操作结束后,需要下架的机器就可以安全的关闭了。

[root@master hadoop]# ./bin/ hadoop dfsadmin -report  

可以查看到现在集群上连接的节点

正在执行Decommission,会显示: 
Decommission Status : Decommission in progress 执行完毕后,会显示:
Decommission Status : Decommissioned

5.再次编辑excludes文件 
一旦完成了机器下架,它们就可以从excludes文件移除了 
登录要下架的机器,会发现DataNode进程没有了,但是TaskTracker依然存在,需要手工处理一下

参考 http://www.cnblogs.com/rilley/archive/2012/02/13/2349858.html

Hadoop 添加删除数据节点(datanode)的更多相关文章

  1. Hadoop 添加删除Slave

    Hadoop 添加删除Slave @(Hadoop) 在hdfs-site.xml文件中添加如下配置: <property> <name>dfs.hosts</name& ...

  2. KingbaseES R3集群在线删除数据节点案例

    案例说明: kingbaseES R3集群一主多从的架构,一般有两个节点是集群的管理节点,所有的节点都可以为数据节点:对于非管理节点的数据节点可以在线删除:但是对于管理节点,无法在线删除,如果删除管理 ...

  3. Hadoop日常维护系列——Hadoop添加删除节点

    添加节点 1.修改host    和普通的datanode一样.添加namenode的ip 2.修改namenode的配置文件conf/slaves    添加新增节点的ip或host 3.在新节点的 ...

  4. hadoop新增新数据节点和退役数据节点

    新增数据节点 0. 需求随着公司业务的增长,数据量越来越大,原有的数据节点的容量已经不能满足存储数据的需求,需要在原有集群基础上动态添加新的数据节点.1. 环境准备 (1)在hadoop03主机上再克 ...

  5. redis cluster中添加删除重分配节点例子

    redis cluster配置好,并运行一段时间后,我们想添加节点,或者删除节点,该怎么办呢. 一,redis cluster命令行     //集群(cluster)  CLUSTER INFO 打 ...

  6. redis cluster 添加 删除 重分配 节点

    redis cluster配置好,并运行一段时间后,我们想添加节点,或者删除节点,该怎么办呢.  一,redis cluster命令 //集群(cluster) CLUSTER INFO 打印集群的信 ...

  7. centos8平台redis cluster集群添加/删除node节点(redis5.0.7)

    一,当前redis cluster的node情况: 我们的添加删除等操作都是以这个cluster作为demo cluster采用六台redis,3主3从 redis1 : ip: 172.17.0.2 ...

  8. 使用Bootstrap + Vue.js实现 添加删除数据

    界面首先需要引入bootstrap的css和bootstrap的js文件,还有vue.js和jQuery.js才可以看见效果. 这里提供bootstrap的在线文件给大家引用: <!-- 最新版 ...

  9. HDFS数据节点DataNode未启动解决方法

    在解决这个问题的过程中,我又是积累了不少经验... 首先让我搞了很久的问题是,书上说进程全部启动的命令是/bin/start-all.sh,但是当我执行的时候显示command not found.后 ...

随机推荐

  1. log4j的使用(1) —— 简单入门篇

    这里会介绍三种打印日志的方法:控制台Console,文件File,数据库DataBase 1.下载lo4j的jar包并导入project 2.因为要在数据库添加日志,所以先新建一个库,并新建打印日志的 ...

  2. 将图片转成base64 小工具

    工作需要使用,所以就做了一个小工具,方便使用 推荐使用 chrome,ff . 毕竟是个小工具方便自己使用而已,所以没有做浏览器兼容测试了! 代码如下,直接保存为 .html 打开即可 <!DO ...

  3. updatePanel导致JS失效的解决办法(转)

    吐槽下,维护别人之前做的项目好蛋疼,整个页面都是用微软的ajax框架. 今天给repeater用JS写一个hover事件 <script type="text/javascript&q ...

  4. ubuntu使用mailx利用SMTP发送邮件

    转载:http://www.blogjava.net/jasmine214--love/archive/2010/10/09/334102.htmlLinux下mail利用外部邮箱发送邮件的方法: 1 ...

  5. C#操作Excel数据增删改查(转)

    C#操作Excel数据增删改查. 首先创建ExcelDB.xlsx文件,并添加两张工作表. 工作表1: UserInfo表,字段:UserId.UserName.Age.Address.CreateT ...

  6. JSP连接数据库的两种方式:Jdbc-Odbc桥和Jdbc直连(转)

    学JSP的同学都要知道怎么连数据库,网上的示例各有各的做法,弄得都不知道用谁的好.其实方法千变万化,本质上就两种:Jdbc-Odbc桥和Jdbc直连. 下面先以MySQL为例说说这两种方式各是怎么连的 ...

  7. c++中的类的对象与类的指针

    以上内容来自:http://wenku.baidu.com/link?url=haeRBhswlEcqddk48uW8YVMsdFNWsllimn_dzUYchb6G9NdT4pqgluCpnLQId ...

  8. uva11429(生成随机数 期望)

    // // main.cpp // uva11429 // // Created by New_Life on 16/8/4. // Copyright © 2016年 chenhuan001. Al ...

  9. 原创: 开题报告中摘要部分快速将一段文字插入到word的表格中

    开题报告的摘要是表格形式,之前需要一个一个字的敲入,十分不方便修改. 所以百度了一下方法.现总结如下: 达到的效果 1 将这段文字复制粘贴到word中,在word文件中的每一个字与字之间插入空格.如何 ...

  10. python模块以及导入出现ImportError: No module named 'xxx'问题

    python中,每个py文件被称之为模块,每个具有__init__.py文件的目录被称为包.只要模块或者包所在的目录在sys.path中,就可以使用import 模块或import 包来使用如果你要使 ...