好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

hadoop之NameNode,DataNode,Secondary NameNode

hadoop之NameNode,DataNode,Secondary NameNode

hadoop之NameNode,DataNode,Secondary NameNode

一:NameNode

1:主要功能提供名称查询服务,内嵌jetty服务器;NameNode主要保存metadata信息;

2:metadata信息包括:文件的权限,某一上传文件包含哪些Block块,Bolck块有保存在哪些DataNode上面;

3:DataNode在启动时候也会上报block信息(此功能一些作用后面会写到);

4:NameNode的metadata信息在启动后会加载到内存

5:metadata存储到磁盘的文件为镜像形式fsimage,需要注意的是block的位置信息不保存在fsimage,block

   在DataNode启动时上报到DataNode加载到内存;

6:metadata中文件块存储记录如下

      解释:一个文件分成三个块,每个块分配到三个DataNode上面

      metadata物理存储

         

7:NameNode对内容和I/O进行集中式管理,是个单点,发生故障容易集群崩溃,每个NameNode能够带动4000节点

思考问题:百度有两万节点,是怎么处理的呢?

NameNode之间进行通讯,解决两万集群问题。

 

二:DataNode

1:保存Block块信息;

2:DataNode启动时,DataNode向NameNode报告block信息

3:通过向NameNode发送心跳与其保持与其联系(三秒一次),如果10分钟没有收到心跳,则将其block拷贝到

   其他节点。

4:分布式情况下,一台服务器都会运行一个DataNode

5:替换Block操作,如果一个DataName接受了一个Block替换请求,那么这个请求包含了这个Block所在源 

   NameNode,当前节点向源节点发送拷贝请求,进行拷贝

 

三:Secondary Namenode 

有人翻译为第二NameNode,我认为翻译为辅助NameNode更为合理

1: 主要工作 保存namenode中对HDFS metadata的信息的备份

2:主要工作帮助NameNode合并edit log,减少NameNode的启动时间

3:Secondary Name合并Nodeedit log过程如图所示


  解释:SecondaryNameNode会周期性的将EditLog进行合并,合并原因:

               1:editlog到达某一值时对其进行合并;

               2:每隔一段时间对其进行合并;

          将记录HDFS的editlog与其上一次合并后存在的fsimage进行合并到fsimage.checkpoint,然后清空

          editlog,将checkpoint拷贝到NameNode

           core-site.xml:这里有2个参数可配置

        <  property  >  
              <  name  > fs.checkpoint.period </  name  >  
              <  value  > 3600 </  value  >  
        </  property  >  

        <  property  >  
              <  name  > fs.checkpoint.size </  name  >  
              <  value  > 67108864 </  value  >  
        </  property  > 

4:secondary NameNode 可以作为NameNode的冷备份:

        将本地保存的fsimage(镜像)导入;

        修改所有cluster的所有DN的master地址;

        修改所有client端NameNode地址;

 

 

 

 

由于我们的产品经常是由多个部门合作开发的,常常会用到其他部门提供的http数据接口。比如我们可能在一个产品中接入论坛部门的功能、接入SNS部门的功能、或者接入搜索部门的功能等等。这种情况下,我们会频繁请求其他部门的接口。如果通过域名的方式来访问这些接口的话,会因为DNS解析造成一些性能上的浪费。

先来看看DNS解析的流程:

可见,在没有本地缓存的情况下,这个过程是比较繁琐的。由于这些接口都是在公司内部服务器之间调用,我们是可以知道接口对应的IP地址的,因此,完全可以通过指定IP来避免域名解析的过程。实现起来也很简单,只要在/etc/hosts中指定IP即可,比如针对上面这个图片内容,可以这样配置:

?

1.1.1.1    163测试数据

就这样一个小小的改动,就能带来不少改善。 

   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分类:  Hadoop

标签:  NameNode ,  DataNode ,  Secondary NameNode

作者: Leo_wl

    

出处: http://HdhCmsTestcnblogs测试数据/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于hadoop之NameNode,DataNode,Secondary NameNode的详细内容...

  阅读:49次

上一篇: 代码抽象层次

下一篇:Scrum实践