专栏首页魏晓蕾的专栏【Hadoop】HDFS NameNode Federation联盟架构

【Hadoop】HDFS NameNode Federation联盟架构

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/gongxifacai_believe/article/details/80008370

1、当前HDFS的局限性 当前HDFS包含两层结构: (1)Namespace 管理目录,文件和数据块。它支持常见的文件系统操作,如创建文件,修改文件,删除文件等。 (2) Block Storage有两部分组成: Block Management维护集群中datanode的基本关系,它支持数据块相关的操作,如:创建数据块,删除数据块等,同时,它也会管理副本的复制和存放。 (3) Physical Storage存储实际的数据块并提供针对数据块的读写服务。 (4)Block Storage的这两部分分别在namenode和datanode上实现,所以该模块由namenode和datanode分工完成。 2、单个NameNode的局限性 (1)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。 (2)namenode扩展性 HDFS的底层存储是可以水平扩展的(解释:底层存储指的是datanode,当集群存储空间不够时,可简单的添加机器已进行水平扩展),但namespace不可以。当前的namespace只能存放在单个namenode上,而namenode在内存中存储了整个分布式文件系统中的元数据信息,这限制了集群中数据块,文件和目录的数目。 (3)性能 文件操作的性能制约于单个namenode的吞吐量,单个namenode当前仅支持约60K的task,而下一代ApacheMapReduce将支持多余100K的并发任务,这隐含着要支持多个namenode。 (4)隔离性 现在大部分公司的集群都是共享的,每天有来自不同group的不同用户提交作业。单个namenode难以提供隔离性,即:某个用户提交的负载很大的job会减慢其他用户的job,单一的namenode难以像HBase按照应用类别将不同作业分派到不同namenode上。 3、联盟架构特点 (1)与HA的区别:HA中的两个namenode管理的是同一个文件系统,两个namenode是一样的;HDFS Federation中的多个namenode各自管理属于自己的一部分数据,多个namenode都是不一样的,但是他们公用一块datanode的存储空间,就是说一个datanode上哪个namenode也可以存,在datanode上用不同的目录区分不同的namenode。这样可以减缓单个namenode造成的压力。联盟架构可以嵌入HA,设置standby namenode,进行主备的切换。 (2)内存的限制:每存储100万个文件,消耗1G内存。 (3)隔离性:不同namenode上运行的任务不会互相影响,一个namenode的任务出现问题不会影响其他的namenode。 (4)适用场合:适用于数据量特别大的场合中使用联盟架构。 4、HDFS Federation架构图

(1)HDFS Federation使用了多个独立的Namenode/namespace来使得HDFS的命名服务能够水平扩展。在HDFS Federation中的Namenode之间是联盟关系,他们之间相互独立且不需要相互协调。 (2)HDFS Federation中的Namenode提供了提供了命名空间和块管 理功能。HDFS Federation中的datanode被所有的Namenode用作公共存储块的地方。 (3)每一个datanode都会向所在集群中所有的Namenode注册,并且会周期性的发送心跳和块信息报告,同时处理来自Namenode的指令。 5、配置文件/opt/app/hadoop-2.5.0/etc/hadoop/hdfs-site.xml

<configuration>

	 <property>
	        <name>dfs.permissions.enabled</name>
	        <value>false</value>
	 </property>

	 <property>
	        <name>dfs.namenode.secondary.http-address</name>
	        <value>hadoop-senior03.ibeifeng.com:50090</value>
	 </property>
	
	 <property>
			<name>dfs.nameservices</name>
			<value>ns1,ns2,ns3</value>
	 </property>
	 
	 <property>
			<name>dfs.namenode.rpc-address.ns1</name>
			<value>hadoop-senior01.ibeifeng.com:8020</value>
	 </property>
	 <property>
			<name>dfs.namenode.servicerpc-address.ns1</name>
			<value>hadoop-senior01.ibeifeng.com:8022</value>
	 </property>
	 <property>
			<name>dfs.namenode.http-address.ns1</name>
			<value>hadoop-senior01.ibeifeng.com:50070</value>
	 </property>
	 <property>
			<name>dfs.namenode.https-address.ns1</name>
			<value>hadoop-senior01.ibeifeng.com:50470</value>
	 </property>
	 
	 <property>
			<name>dfs.namenode.rpc-address.ns2</name>
			<value>hadoop-senior02.ibeifeng.com:8020</value>
	 </property>
	 <property>
			<name>dfs.namenode.servicerpc-address.ns2</name>
			<value>hadoop-senior02.ibeifeng.com:8022</value>
	 </property>
	 <property>
			<name>dfs.namenode.http-address.ns2</name>
			<value>hadoop-senior02.ibeifeng.com:50070</value>
	 </property>
	 <property>
			<name>dfs.namenode.https-address.ns2</name>
			<value>hadoop-senior02.ibeifeng.com:50470</value>
	 </property>
	 
	 <property>
			<name>dfs.namenode.rpc-address.ns3</name>
			<value>hadoop-senior03.ibeifeng.com:8020</value>
	 </property>
	 <property>
			<name>dfs.namenode.servicerpc-address.ns3</name>
			<value>hadoop-senior03.ibeifeng.com:8022</value>
	 </property>
	 <property>
			<name>dfs.namenode.http-address.ns3</name>
			<value>hadoop-senior03.ibeifeng.com:50070</value>
	 </property>
	 <property>
			<name>dfs.namenode.https-address.ns3</name>
			<value>hadoop-senior03.ibeifeng.com:50470</value>
	 </property>
	
</configuration>

也可以配置dfs.namenode.name.dirdfs.namenode.edits.dir属性,这两个属性分别是fsimage文件的存放路径和edits文件的存放路径。 6、NameNode格式化及启动 分发到各个节点 格式化namenode,每个namenode都需要格式化一次,这些namenode在一个集群里,有相同的clusterId(即我指定的hadoop-cluster)。 $ bin/hdfs namenode -format -clusterId hadoop-cluster core-site.xml中指定的fs.defaultFS属性是哪个节点,就是用的哪个节点的namenode和datanode,而不管创建删除上传文件的命令是在哪台机器上敲的。

	<property>
            <name>fs.defaultFS</name>
            <value>hdfs://hadoop-senior02.ibeifeng.com:8020</value>
    </property>

启动每个NameNode即可。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【Hadoop】大数据简介及Hadoop平台搭建

    版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/...

    魏晓蕾
  • 从零开始搭建大数据平台系列之(2.1)—— Apache Hadoop 2.x 伪分布式环境搭建

    版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/...

    魏晓蕾
  • 【Hadoop】HDFS高可用性HA架构、ResourceManager HA架构环境搭建及自动故障转移

    版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/...

    魏晓蕾
  • CentOS集群安装CDH Hadoop环境 操作指引 及Yarn Hbase Spark配置安装

    此篇博客主要记录集群安装Hadoop环境的流程及配置讲解。这里的IP已换成192.168.0.*

    大鹅
  • Hadoop高可用集群部署指南

    Hadoop是一个由Apache基金会所开发的分布式系统基础架构,用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

    KenTalk
  • hadoop集群篇--从0到1搭建hadoop集群

    本来有套好好的集群,可是不知道为什么虚拟机镜像文件损坏,结果导致集群不能用。所以不得不重新搭套集群,借此机会顺便再重新搭套吧,顺便提醒一句大家,自己虚拟机的集群...

    LhWorld哥陪你聊算法
  • Hadoop3-伪分布式模式安装

    kongxx
  • hadoop_学习_02_Hadoop环境搭建(单机)

    官方版本:http://archive.apache.org/dist/hadoop/

    shirayner
  • 提高hadoop的可靠性(下)

    在Hadoop集群中,Namenode的可用性直接影响了Hadoop整个集群的可用性,目前有很多可选方案,基本上以NFS+zookeeper实现,...

    刀刀老高
  • Hadoop-HA高可用搭建

    2、hosts文件要配置好,三台都可以相互通过主机名ping通,三台虚拟机都要配置!如下:

    可爱见见

扫码关注云+社区

领取腾讯云代金券