为已存在的 Hadoop 集群配置 HDFS Federation

目录

1. 实验目的

2. 实验环境

3. 配置步骤

4. 测试

参考:


1. 实验目的

  • 现有 Hadoop 集群只有一个 NameNode,现在要增加一个 NameNode。
  • 两个 NameNode 构成 HDFS Federation。
  • 不重启现有集群,不影响数据访问。

2. 实验环境

        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 服务器。

3. 配置步骤

(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

4. 测试

# 向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

参考:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值