Hadoop学习五:hdfs federation
标签(空格分隔): hadoop
一,概述
1,为什么需要使用hdfs federation
- Namespace(命名空间)的限制
由于NameNode在内存中存储所有的元数据(metadata),因此单个NameNode所能存储的对象(文件+块)数目受到NameNode所在JVM的heap size的限制。50G的heap能够存储20亿(200 million)个对象,这20亿个对象支持4000个DataNode,12PB的存储(假设文件平均大小为40MB)。随着数据的飞速增长,存储的需求也随之增长。单个DataNode从4T增长到36T,集群的尺寸增长到8000个DateNode。存储的需求从12PB增长到大于100PB - 隔离问题
由于HDFS仅有一个NameNode,无法隔离各个程序,因此HDFS上的一个实验程序就很有可能影响整个HDFS上运行的程序 - 性能的瓶颈
由于是单个NameNode的HDFS架构,因此整个HDFS文件系统的吞吐量受限于单个NameNode的吞吐量。
2,hdfs federation架构
二,hdfs federation的配置和测试
分配角色
hadoop001.com.cn———-namenode
hadoop003.com.cn———-namenode修改hdfs-site.xml文件:
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.nameservices</name>
<value>ns1,ns2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns1</name>
<value>hadoop001.com.cn:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.ns1</name>
<value>hadoop001.com.cn:50070</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns2</name>
<value>hadoop003.com.cn:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.ns2</name>
<value>hadoop003.com.cn:50070</value>
</property>
</configuration>
- 修改core-site.xml文件:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/app/hadoop-2.5.0/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop001.com.cn:8020</value>
</property>
</configuration>
- 将hdfs-site.xml和core-site.xml拷贝到其他服务器上
[hadoop001@hadoop001 hadoop]$ scp -r hdfs-site.xml hadoop002.com.cn:/opt/app/hadoop-2.5.0/etc/hadoop/
[hadoop001@hadoop001 hadoop]$ scp -r hdfs-site.xml hadoop002.com.cn:/opt/app/hadoop-2.5.0/etc/hadoop/
[hadoop001@hadoop001 hadoop]$ scp -r hdfs-site.xml hadoop003.com.cn:/opt/app/hadoop-2.5.0/etc/hadoop/
[hadoop001@hadoop001 hadoop]$ scp -r hdfs-site.xml hadoop003.com.cn:/opt/app/hadoop-2.5.0/etc/hadoop/
- 修改hadoop003服务器上的core-site.xml文件
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/app/hadoop-2.5.0/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop003.com.cn:8020</value>
</property>
</configuration>
- 每个NameNode 节点格式化NameNode
$ bin/hdfs namenode -format -clusterId hdfs-cluster
- 每个NameNode 节点启动NameNode
$ sbin/hadoop-daemon.sh start namenode
- 每个数据节点上启动DataNode
$ sbin/hadoop-daemon.sh start datanode
- 测试
[hadoop001@hadoop001 hadoop-2.5.0]$ bin/hdfs dfs -put etc/hadoop/hdfs-site.xml /
[hadoop001@hadoop003 hadoop-2.5.0]$ bin/hdfs dfs -put etc/hadoop/core-site.xml /
`