Hadoop2.7实战v1.0之动态添加DataNode和NodeManager节点(不修改dfs.replication)
Hadoop2.7实战v1.0之动态添加DataNode和NodeManager节点(不修改dfs.replication)【终极版】
0.添加大文件到hdfs系统中去,是为了后期的动态添加datanode的机器,datanode机器的数据量不均衡,为了模拟均衡实验
点击(此处)折叠或打开
-  [root@sht-sgmhadoopnn-01 ~]# hadoop fs -put /root/oracle-j2sdk1.7-1.7.0+update67-1.x86_64.rpm /testdir 
 -  
 -  [root@sht-sgmhadoopnn-01 ~]# hadoop fs -put /root/012_HDFS.avi /testdir 
 -  
 - [root@sht-sgmhadoopnn-01 ~]# hadoop fs -put /root/016_Hadoop.avi /testdir
 
 
 ###3个datanode节点数据量和数据块相等 
1.修改系统hostname(通过hostname和/etc/sysconfig/network进行修改)
点击(此处)折叠或打开
-  [root@sht-sgmhadoopdn-04 ~]# hostname 
 -  
 -  sht-sgmhadoopdn-04.telenav.cn 
 -  
 -  [root@sht-sgmhadoopdn-04 ~]# more /etc/sysconfig/network 
 -  
 -  NETWORKING=yes 
 -  
 -  HOSTNAME=sht-sgmhadoopdn-04.telenav.cn 
 -  
 - GATEWAY=172.16.101.1
 
2.修改hosts文件,将集群所有节点hosts配置进去(集群所有节点保持hosts文件统一)
点击(此处)折叠或打开
-  [root@sht-sgmhadoopdn-04 ~]# more /etc/hosts
 -  127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
 -  ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
 -  
 -  172.16.101.54 sht-sgmhadoopcm-01.telenav.cn sht-sgmhadoopcm-01
 -  172.16.101.55 sht-sgmhadoopnn-01.telenav.cn sht-sgmhadoopnn-01
 -  172.16.101.56 sht-sgmhadoopnn-02.telenav.cn sht-sgmhadoopnn-02
 -  172.16.101.58 sht-sgmhadoopdn-01.telenav.cn sht-sgmhadoopdn-01
 -  172.16.101.59 sht-sgmhadoopdn-02.telenav.cn sht-sgmhadoopdn-02
 -  172.16.101.60 sht-sgmhadoopdn-03.telenav.cn sht-sgmhadoopdn-03
 -  172.16.101.66 sht-sgmhadoopdn-04.telenav.cn sht-sgmhadoopdn-04
 - [root@sht-sgmhadoopdn-04 ~]#
 
##修改集群的其他节点hosts文件
3.查看是否有.ssh文件夹,删除.ssh,重新配置
点击(此处)折叠或打开
-  [root@sht-sgmhadoopdn-04 ~]# ls -l -a 
 -  
 -  total 138948 
 -  
 -  drwxr-x---. 7 root root 4096 Feb 1 17:06 . 
 -  
 -  dr-xr-xr-x. 25 root root 4096 Feb 9 09:34 .. 
 -  
 -  drwxr-x---. 2 root root 4096 Dec 31 15:29 .ssh 
 -  
 -  [root@sht-sgmhadoopdn-04 ~]# rm -rf .ssh 
 -  
 -  
 -  
 -  
 -  [root@sht-sgmhadoopdn-04 ~]# ssh-keygen 
 -  
 -  Generating public/private rsa key pair. 
 -  
 -  Enter file in which to save the key (/root/.ssh/id_rsa): 
 -  
 -  Created directory '/root/.ssh'. 
 -  
 -  Enter passphrase (empty for no passphrase): 
 -  
 -  Enter same passphrase again: 
 -  
 -  Your identification has been saved in /root/.ssh/id_rsa. 
 -  
 -  Your public key has been saved in /root/.ssh/id_rsa.pub. 
 -  
 -  The key fingerprint is: 
 -  
 -  2e:24:52:bf:9d:c4:b8:d8:d6:7a:45:47:7b:cc:54:d0 root@sht-sgmhadoopdn-04.telenav.cn 
 -  
 - The key
 
4.设置NameNode(两台HA均需要)到DataNode的免密码登录(ssh-copy-id命令实现,可以免去cp *.pub文件后的权限修改)
参考 http://blog.itpub.net/30089851/viewspace-1992210/
###其实最好将集群的每台都互相配置信任,包括新加的机器(我采取这个)
5.修改主节点slave文件,添加新增节点的ip信息,这里添加的是hostname:sht-sgmhadoopdn-04(集群重启时使用)
点击(此处)折叠或打开
-  [root@sht-sgmhadoopnn-01 ~]# cd /hadoop/hadoop-2.7.2/etc/hadoop 
 -  
 -  [root@sht-sgmhadoopnn-01 hadoop]# vi slaves 
 -  
 -  sht-sgmhadoopdn-01 
 -  
 -  sht-sgmhadoopdn-02 
 -  
 -  sht-sgmhadoopdn-03 
 -  
 -  sht-sgmhadoopdn-04 
 -  
 -  
 -  
 -  
 -  "slaves" 4L, 76C written 
 -  
 -  [root@sht-sgmhadoopnn-01 hadoop]# scp slaves root@sht-sgmhadoopnn-02:/hadoop/hadoop-2.7.2/etc/hadoop 
 -  
 -  slaves 100% 76 0.1KB/s 00:00 
 -  
 - [root@sht-sgmhadoopnn-01 hadoop]#
 
 ###我觉得这里应该将slaves文件scp到standbyNameNode即可,当然我倾向scp到其他所有节点(standbyNameNode,other DataNode);
毕竟假如集群重启了,active节点机器变为standby节点,standby节点机器变为active节点,那么假如slaves文件没有改变的话,那么执行start-dfs.sh脚本的话,那么新加的datanode节点就起不来!
 
6.新增的datanode 节点安装hadoop软件
点击(此处)折叠或打开
-  [root@sht-sgmhadoopdn-04 ~]# cd /tmp 
 -  
 -  [root@sht-sgmhadoopdn-04 tmp]# wget https://www.apache.org/dist/hadoop/core/hadoop-2.7.2/hadoop-2.7.2.tar.gz --no-check-certificate 
 -  
 -  [root@sht-sgmhadoopnn-04 tmp]# tar -xvf hadoop-2.7.2.tar.gz 
 -  
 -  [root@sht-sgmhadoopdn-04 tmp]# mv hadoop-2.7.2 /hadoop/hadoop-2.7.2 
 -  
 -  [root@sht-sgmhadoopdn-04 tmp]# cd /hadoop/hadoop-2.7.2/ 
 -  
 -  [root@sht-sgmhadoopdn-04 hadoop-2.7.2]# ll 
 -  
 -  total 52 
 -  
 -  drwxr-xr-x 2 10011 10011 4096 Jan 26 08:20 bin 
 -  
 -  drwxr-xr-x 3 10011 10011 4096 Jan 26 08:20 etc 
 -  
 -  drwxr-xr-x 2 10011 10011 4096 Jan 26 08:20 include 
 -  
 -  drwxr-xr-x 3 10011 10011 4096 Jan 26 08:20 lib 
 -  
 -  drwxr-xr-x 2 10011 10011 4096 Jan 26 08:20 libexec 
 -  
 -  -rw-r--r-- 1 10011 10011 15429 Jan 26 08:20 LICENSE.txt 
 -  
 -  -rw-r--r-- 1 10011 10011 101 Jan 26 08:20 NOTICE.txt 
 -  
 -  -rw-r--r-- 1 10011 10011 1366 Jan 26 08:20 README.txt 
 -  
 -  drwxr-xr-x 2 10011 10011 4096 Jan 26 08:20 sbin 
 -  
 -  drwxr-xr-x 4 10011 10011 4096 Jan 26 08:20 share 
 -  
 - [root@sht-sgmhadoopdn-04 hadoop-2.7.2]#
 
7.将hadoop的配置文件scp到新的节点上
点击(此处)折叠或打开
-  [root@sht-sgmhadoopnn-01 ~]# cd /hadoop/hadoop-2.7.2/etc/hadoop/ 
 -  
 - [root@sht-sgmhadoopnn-01 hadoop]# scp * root@sht-sgmhadoopdn-04:/hadoop/hadoop-2.7.2/etc/hadoop/
 
8.在新节点上启动datanode进程和nodemanager进程之前,必须检查$HADOOP_HOME/data/目录是否存在?假如存在,就直接先删除该目录的所有的文件
原因是机器有可能第二次添加为数据节点,清除数据文件等
点击(此处)折叠或打开
-  [root@sht-sgmhadoopnn-04 ~]# cd /hadoop/hadoop-2.7.2/data/ 
 -  
 - [root@sht-sgmhadoopnn-04 data]# rm -rf *
 
【启动datanode进程】
9.在新增的节点上,启动datanode进程
点击(此处)折叠或打开
-  [root@sht-sgmhadoopdn-04 hadoop]# cd ../../sbin 
 -  
 -  [root@sht-sgmhadoopdn-04 sbin]# ./hadoop-daemon.sh start datanode 
 -  
 - starting datanode, logging to /hadoop/hadoop-2.7.2/logs/hadoop-root-datanode-sht-sgmhadoopdn-04.telenav.cn.out
 
然后在namenode通过hdfs dfsadmin -report或者web
v [root@sht-sgmhadoopdn-01 bin]# ./hdfs dfsadmin –report
 v  http://172.16.101.55:50070/dfshealth.html#tab-datanode
 
###负载不均衡, sht-sgmhadoopdn-04的数据块0,Used的24kb
@假如sht-sgmhadoopdn-04的datanode进程已经起来了,那么web界面datanode就是不显示sht-sgmhadoopdn-04这一行数据,先执行./hadoop-daemon.sh stop datanode命令关闭当前进程;
@然后再要检查是否设置了dfs.hosts,dfs.hosts.exclude参数,那么就注释这两个参数,然后执行hdfs dfsadmin -refreshNodes,刷新一下配置,然后有可能出现下面这幅图1,Dead状态;
       @最后只要再执行./hadoop-daemon.sh start datanode,刷新web就行,图2, 继续执行。
 
【启动nodemanager进程】
10.在新增的节点上,启动nodemanager进程
由于Hadoop 2.X引入了YARN框架,所以对于每个计算节点都可以通过NodeManager进行管理,同理启动NodeManager进程后,即可将其加入集群
在新增节点,运行sbin/yarn-daemon.sh start nodemanager即可
在ResourceManager,通过yarn node -list查看集群情况
点击(此处)折叠或打开
-  [root@sht-sgmhadoopdn-04 sbin]# ./yarn-daemon.sh start nodemanager 
 -  
 -  starting nodemanager, logging to /hadoop/hadoop-2.7.2/logs/yarn-root-nodemanager-sht-sgmhadoopdn-04.telenav.cn.out 
 -  
 -  
 -  
 -  
 -   [root@sht-sgmhadoopdn-04 sbin]# jps 
 -  
 -  14508 DataNode 
 -  
 -  15578 Jps 
 -  
 -  15517 NodeManager 
 -  
 -  [root@sht-sgmhadoopdn-04 sbin]# cd ../bin 
 -  
 -   [root@sht-sgmhadoopdn-04 bin]# ./yarn node -list 
 -  
 -  16/03/05 19:00:04 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 
 -  
 -  Total Nodes:4 
 -  
 -           Node-Id Node-State Node-Http-Address Number-of-Running-Containers 
 -  
 -  sht-sgmhadoopdn-04.telenav.cn:54705 RUNNING sht-sgmhadoopdn-04.telenav.cn:23999 0 
 -  
 -  sht-sgmhadoopdn-03.telenav.cn:7573 RUNNING sht-sgmhadoopdn-03.telenav.cn:23999 0 
 -  
 -  sht-sgmhadoopdn-02.telenav.cn:38316 RUNNING sht-sgmhadoopdn-02.telenav.cn:23999 0 
 -  
 - sht-sgmhadoopdn-01.telenav.cn:43903 RUNNING sht-sgmhadoopdn-01.telenav.cn:23999 0
 
 
11.最后还需要对hdfs负载设置均衡,因为默认的数据传输带宽比较低,可以设置为64M,即hdfs dfsadmin -setBalancerBandwidth 67108864即可
点击(此处)折叠或打开
-  [root@sht-sgmhadoopnn-01 ~]# cd /hadoop/hadoop-2.7.2/bin 
 -  
 -  [root@sht-sgmhadoopdn-01 bin]# ./hdfs dfsadmin -setBalancerBandwidth 67108864 
 -  
 -  Balancer bandwidth is set to 67108864 for sht-sgmhadoopnn-01/172.16.101.55:8020 
 -  
 - Balancer bandwidth is set to 67108864 for sht-sgmhadoopnn-02/172.16.101.56:8020
 
12.默认balancer的threshold为10%,即各个节点与集群总的存储使用率相差不超过10%,我们可将其设置为5%;然后启动Balancer,sbin/start-balancer.sh -threshold 5,等待集群自均衡完成即可。
点击(此处)折叠或打开
-  [root@sht-sgmhadoopdn-01 bin]# cd ../sbin 
 -  
 -  starting balancer, logging to /hadoop/hadoop-2.7.2/logs/hadoop-root-balancer-sht-sgmhadoopnn-01.telenav.cn.out 
 -  
 -  [root@sht-sgmhadoopnn-01 sbin]# ./start-balancer.sh -threshold 5 
 -  
 - starting balancer, logging to /hadoop/hadoop-2.7.2/logs/hadoop-root-balancer-sht-sgmhadoopnn-01.telenav.cn.out
 
###运行这个命令start-balancer.sh -threshold 5和使用hdfs balancer是一样的
#### Usage: hdfs balancer
点击(此处)折叠或打开
-  [root@sht-sgmhadoopnn-01 bin]# ./hdfs balancer -threshold 5 
 -  
 -  16/03/05 18:57:33 INFO balancer.Balancer: Using a threshold of 1.0 
 -  
 -  16/03/05 18:57:33 INFO balancer.Balancer: namenodes = [hdfs://mycluster] 
 -  
 -  16/03/05 18:57:33 INFO balancer.Balancer: parameters = Balancer.Parameters[BalancingPolicy.Node, threshold=1.0, max idle iteration = 5, number of nodes to be excluded = 0, number of nodes to be included = 0] 
 -  
 -  Time Stamp Iteration# Bytes Already Moved Bytes Left To Move Bytes Being Moved 
 -  
 -  16/03/05 18:57:34 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 
 -  
 -  16/03/05 18:57:35 INFO net.NetworkTopology: Adding a new node: /default-rack/172.16.101.58:50010 
 -  
 -  16/03/05 18:57:35 INFO net.NetworkTopology: Adding a new node: /default-rack/172.16.101.60:50010 
 -  
 -  16/03/05 18:57:35 INFO net.NetworkTopology: Adding a new node: /default-rack/172.16.101.66:50010 
 -  
 -  16/03/05 18:57:35 INFO net.NetworkTopology: Adding a new node: /default-rack/172.16.101.59:50010 
 -  
 -  16/03/05 18:57:35 INFO balancer.Balancer: 0 over-utilized: [] 
 -  
 -  16/03/05 18:57:35 INFO balancer.Balancer: 0 underutilized: [] 
 -  
 -  The cluster is balanced. Exiting... 
 -  
 -  Mar 5, 2016 6:57:35 PM 0 0 B 0 B -1 B 
 -  
 - Mar 5, 2016 6:57:35 PM Balancing took 2.66 seconds
 
A. 为什么我执行该命令hdfs balancer -threshold 5平衡数据命令没有反应呢?
5表示5%,
群总存储使用率: 1.74%
sht-sgmhadoopdn-01: 1.74%
sht-sgmhadoopdn-02: 1.74%
sht-sgmhadoopdn-03: 1.74%
sht-sgmhadoopdn-04: 0%
执行-threshold 5, 表示每一个 datanode 存储使用率和集群总存储使用率的差值都应该小于这个阀值5%;
假如超过5%,会执行数据平衡操作。
B. 怎样判断执行命令是否会生效,数据平衡操作?
if (群总存储使用率 — 每一台datanode 存储使用率) > -threshold 5
#会执行数据平衡
else
#该命令不生效
end if
 C.      the threshold  range of [1.0, 100.0],所以最小只能设置 -threshold  1
 
13. 执行命令hdfs balancer -threshold 1
[root@sht-sgmhadoopnn-01 hadoop]# hdfs balancer -threshold 1
……………..
……………..
16/03/08 16:08:09 INFO net.NetworkTopology: Adding a new node: /default-rack/172.16.101.59:50010
16/03/08 16:08:09 INFO net.NetworkTopology: Adding a new node: /default-rack/172.16.101.58:50010
16/03/08 16:08:09 INFO net.NetworkTopology: Adding a new node: /default-rack/172.16.101.66:50010
16/03/08 16:08:09 INFO net.NetworkTopology: Adding a new node: /default-rack/172.16.101.60:50010
16/03/08 16:08:09 INFO balancer.Balancer: 0 over-utilized: []
16/03/08 16:08:09 INFO balancer.Balancer: 0 underutilized: []
The cluster is balanced. Exiting...
Mar 8, 2016 4:08:09 PM 1 382.22 MB 0 B -1 B
Mar 8, 2016 4:08:09 PM Balancing took 6.7001 minutes
 
###新增数据节点的411.7M
14.问题:在active namenode上成功执行数据平衡命令,namenode的状态发生的failover
问题描述:
sht-sgmhadoopnn-01 :active—>standby
sht-sgmhadoopnn-02 :standby—>active,发生了failover操作.
揣测:在active节点上操作数据平衡命令,可能cpu等资源不够用了,就发生了failover,建议在新的数据节点datanode上操作.
修正:
点击(此处)折叠或打开
-  [root@sht-sgmhadoopnn-01 hadoop]# hdfs haadmin -failover nn2 nn1
 -  Failover to NameNode at sht-sgmhadoopnn-01/172.16.101.55:8020 successful
 -  [root@sht-sgmhadoopnn-01 hadoop]# hdfs haadmin -getServiceState nn1
 -  active
 -  [root@sht-sgmhadoopnn-01 hadoop]# hdfs haadmin -getServiceState nn2
 -  standby
 - [root@sht-sgmhadoopnn-01 hadoop]#
 
关注公众号
					低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 
							
								
								    上一篇
								    
								
								Zookeeper可以干什么?
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/catoop/article/details/50848572 在Zookeeper的官网上有这么一句话:ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services. 这大概描述了Zookeeper主要可以干哪些事情:配置管理,名字服务,提供分布式同步以及集群管理。那这些服务又到底是什么呢?我们为什么需要这样的服务?我们又为什么要使用Zookeeper来实现呢,使用Zookeeper有什么优势?接下来我会挨个介绍这些到底是什么,以及有哪些开源系统中使用了。 配置管理 在我们的应用中除了代码外,还有一些就是各种配置。比如数据库连接等。一般我们都是使用配置文件的方式,在代码中引入这些配置文件。但是当我们只有一种配置,只有一台服务器,并且不经常修改的时...
 - 
							
								
								    下一篇
								    
								
								SparkContext的初始化(叔篇)——TaskScheduler的启动
《深入理解Spark:核心思想与源码分析》一书前言的内容请看链接《深入理解SPARK:核心思想与源码分析》一书正式出版上市 《深入理解Spark:核心思想与源码分析》一书第一章的内容请看链接《第1章 环境准备》 《深入理解Spark:核心思想与源码分析》一书第二章的内容请看链接《第2章 SPARK设计理念与基本架构》 由于本书的第3章内容较多,所以打算分别开辟四篇随笔分别展现。 《深入理解Spark:核心思想与源码分析》一书第三章第一部分的内容请看链接《深入理解Spark:核心思想与源码分析》——SparkContext的初始化(伯篇)》《深入理解Spark:核心思想与源码分析》一书第三章第一部分的内容请看链接《深入理解Spark:核心思想与源码分析》——SparkContext的初始化(仲篇)》 本文展现第3章第三部分的内容: 3.8 TaskScheduler的启动 3.7节介绍了任务调度器TaskScheduler的创建,要想TaskScheduler发挥作用,必须要启动它,代码如下。 taskScheduler.start() TaskScheduler在启动的时候,实际调用了...
 
相关文章
文章评论
共有0条评论来说两句吧...

			





				
				
				
				
				
				
				
微信收款码
支付宝收款码