为已存在的Hadoop集群配置HDFS Federation
2016-05-06 09:59
423 查看
一、实验目的
1. 现有Hadoop集群只有一个NameNode,现在要增加一个NameNode。
2. 两个NameNode构成HDFS Federation。
3. 不重启现有集群,不影响数据访问。
二、实验环境
4台CentOS release 6.4虚拟机,IP地址为
192.168.56.101 master
192.168.56.102 slave1
192.168.56.103 slave2
192.168.56.104 kettle
其中kettle是新增的一台“干净”的机器,已经配置好免密码ssh,将作为新增的NameNode。
软件版本:
hadoop 2.7.2
hbase 1.1.4
hive 2.0.0
spark 1.5.0
zookeeper 3.4.8
kylin 1.5.1
现有配置:
master作为hadoop的NameNode、SecondaryNameNode、ResourceManager,hbase的HMaster
slave1、slave2作为hadoop的DataNode、NodeManager,hbase的HRegionServer
同时master、slave1、slave2作为三台zookeeper服务器
三、配置步骤
1. 编辑master上的hdfs-site.xml文件,修改后的文件内容如下所示。
执行后启动了NameNode、SecondaryNameNode进程,如图1所示。
图1
5. 刷新DataNode收集新添加的NameNode
图2
图3
四、测试
图4
图5
参考:
http://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-hdfs/Federation.html
1. 现有Hadoop集群只有一个NameNode,现在要增加一个NameNode。
2. 两个NameNode构成HDFS Federation。
3. 不重启现有集群,不影响数据访问。
二、实验环境
4台CentOS release 6.4虚拟机,IP地址为
192.168.56.101 master
192.168.56.102 slave1
192.168.56.103 slave2
192.168.56.104 kettle
其中kettle是新增的一台“干净”的机器,已经配置好免密码ssh,将作为新增的NameNode。
软件版本:
hadoop 2.7.2
hbase 1.1.4
hive 2.0.0
spark 1.5.0
zookeeper 3.4.8
kylin 1.5.1
现有配置:
master作为hadoop的NameNode、SecondaryNameNode、ResourceManager,hbase的HMaster
slave1、slave2作为hadoop的DataNode、NodeManager,hbase的HRegionServer
同时master、slave1、slave2作为三台zookeeper服务器
三、配置步骤
1. 编辑master上的hdfs-site.xml文件,修改后的文件内容如下所示。
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>dfs.namenode.name.dir</name> <value>file:/home/grid/hadoop-2.7.2/hdfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/home/grid/hadoop-2.7.2/hdfs/data</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> <!-- 新增属性 --> <property> <name>dfs.nameservices</name> <value>ns1,ns2</value> </property> <property> <name>dfs.namenode.rpc-address.ns1</name> <value>master:9000</value> </property> <property> <name>dfs.namenode.http-address.ns1</name> <value>master:50070</value> </property> <property> <name>dfs.namenode.secondary.http-address.ns1</name> <value>master:9001</value> </property> <property> <name>dfs.namenode.rpc-address.ns2</name> <value>kettle:9000</value> </property> <property> <name>dfs.namenode.http-address.ns2</name> <value>kettle:50070</value> </property> <property> <name>dfs.namenode.secondary.http-address.ns2</name> <value>kettle:9001</value> </property> </configuration>2. 拷贝master上的hdfs-site.xml文件到集群上的其它节点
scp hdfs-site.xml slave1:/home/grid/hadoop-2.7.2/etc/hadoop/ scp hdfs-site.xml slave2:/home/grid/hadoop-2.7.2/etc/hadoop/3. 将Java目录、Hadoop目录、环境变量文件从master拷贝到kettle
scp -rp /home/grid/hadoop-2.7.2 kettle:/home/grid/ scp -rp /home/grid/jdk1.7.0_75 kettle:/home/grid/ # 用root执行 scp -p /etc/profile.d/* kettle:/etc/profile.d/4. 启动新的NameNode、SecondaryNameNode
# 在kettle上执行 source /etc/profile ln -s hadoop-2.7.2 hadoop $HADOOP_HOME/sbin/hadoop-daemon.sh start namenode $HADOOP_HOME/sbin/hadoop-daemon.sh start secondarynamenode
执行后启动了NameNode、SecondaryNameNode进程,如图1所示。
图1
5. 刷新DataNode收集新添加的NameNode
# 在集群中任意一台机器上执行均可 $HADOOP_HOME/bin/hdfs dfsadmin -refreshNamenodes slave1:50020 $HADOOP_HOME/bin/hdfs dfsadmin -refreshNamenodes slave2:50020至此,HDFS Federation配置完成,从web查看两个NameNode的状态分别如图2、图3所示。
图2
图3
四、测试
# 向HDFS上传一个文本文件 hadoop dfs -put /home/grid/hadoop/NOTICE.txt / # 分别在两台NameNode节点上运行Hadoop自带的例子 # 在master上执行 hadoop jar /home/grid/hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /NOTICE.txt /output # 在kettle上执行 hadoop jar /home/grid/hadoop-2.7.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /NOTICE.txt /output1用下面的命令查看两个输出结果,分别如图4、图5所示。
hadoop dfs -cat /output/part-r-00000 hadoop dfs -cat /output1/part-r-00000
图4
图5
参考:
http://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-hdfs/Federation.html
相关文章推荐
- [译] 关于CSS中的float和position (父容器div内的子元素div为float时,父元素无法撑开(或高度自适应)的解决方式)
- Javascript设计模式-单例模式(一)
- jquery.validate.js 在ie8下的兼容性解决方案
- D3.js学习笔记十二:D3.js构图(d3.layout)——力学(Force)图
- HTML中使背景图片自适应浏览器大小
- [翻译]Gulp.js简介
- angular的directive的属性和用法
- 原生JS实现贪吃蛇项目,附源码下载!
- POJ 2761-Feed the dogs(划分树)求区间内第k小的数
- JS总结
- JSTL标签用法
- js中的二级联动技术的实现
- 一个DIV调用多个CSS样式
- Node.js插件安装图文教程
- JS学习7(BOM)
- 【转】什么是@font-face及font-face如何在css中使用
- Fedora 12 系统安装
- Ajax绑定事件出现累加状况,出现多次执行状况
- PHP+Jquery与ajax相结合实现下拉淡出瀑布流效果【无需插件】
- Jquery的attr方法实现checkbox的选中状态所带来的问题解析