设为首页 收藏本站
查看: 811|回复: 0

[经验分享] hadoop SecondNamenode 详解

[复制链接]

尚未签到

发表于 2017-12-17 08:13:27 | 显示全部楼层 |阅读模式
  SecondNamenode名字看起来很象是对第二个Namenode,要么与Namenode一样同时对外提供服务,要么相当于Namenode的HA。
  真正的了解了SecondNamenode以后,才发现事实并不是这样的。
  下面这段是Hadoop对SecondNamenode的准确定义:
  * The Secondary Namenode is a helper to the primary Namenode.
  * The Secondary is responsible for supporting periodic checkpoints
  * of the HDFS metadata. The current design allows only one Secondary
  * Namenode per HDFs cluster.
  *
  * The Secondary Namenode is a daemon that periodically wakes
  * up (determined by the schedule specified in the configuration),
  * triggers a periodic checkpoint and then goes back to sleep.
  * The Secondary Namenode uses the ClientProtocol to talk to the
  * primary Namenode.
  SecondNamenode是对主Namenode的一个补充,它会周期的执行对HDFS元数据的检查点。
  当前的设计仅仅允许每个HDFS只有单个SecondNamenode结点。
  SecondNamenode是有一个后台的进程,会定期的被唤醒(唤醒的周期依赖相关配置)执行检查点任务,然后继续休眠。
  它使用ClientProtocol协议与主Namenode通信。
  1,检查点到底是做什么用的呢?
  先抛开SecondNamenode不说,先介绍下Namenode中与检查点相关的两个文件,以及他们之间的关系。
  fsimage文件与edits文件是Namenode结点上的核心文件
  Namenode中仅仅存储目录树信息,而关于BLOCK的位置信息则是从各个Datanode上传到Namenode上的。
  Namenode的目录树信息就是物理的存储在fsimage这个文件中的,当Namenode启动的时候会首先读取fsimage这个文件,将目录树信息装载到内存中。
  而edits存储的是日志信息,在Namenode启动后所有对目录结构的增加,删除,修改等操作都会记录到edits文件中,并不会同步的记录在fsimage中。
  而当Namenode结点关闭的时候,也不会将fsimage与edits文件进行合并,这个合并的过程实际上是发生在Namenode启动的过程中。
  也就是说,当Namenode启动的时候,首先装载fsimage文件,然后在应用edits文件,最后还会将最新的目录树信息更新到新的fsimage文件中,然后启用新的edits文件。
  整个流程是没有问题的,但是有个小瑕疵,就是如果Namenode在启动后发生的改变过多,会导致edits文件变得非常大,大得程度与Namenode的更新频率有关系。
  那么在下一次Namenode启动的过程中,读取了fsimage文件后,会应用这个无比大的edits文件,导致启动时间变长,并且不可能控,可能需要启动几个小时也说不定。
  Namenode的edits文件过大的问题,也就是SecondeNamenode要解决的主要问题。
  SecondNamenode会按照一定规则被唤醒,然后进行fsimage文件与edits文件的合并,防止edits文件过大,导致Namenode启动时间过长。
  2,检查点被唤醒的条件?
  以前的文章里面曾经写过相关内容,这里在回顾一下。
  控制检查点的参数有两个,分别是:
  fs.checkpoint.period:单位秒,默认值3600,检查点的间隔时间,当距离上次检查点执行超过该时间后启动检查点
  fs.checkpoint.size:单位字节,默认值67108864,当edits文件超过该大小后,启动检查点
  上面两个条件是或的关系,主要满足启动一个条件,检查点即被唤醒
  3,检查点执行的过程?
  a,初始化检查点
  b,通知Namenode启用新的edits文件
  c,从Namenode下载fsimage和edits文件
  d,调用loadFSImage装载fsimage
  e,调用loadFSEdits应用edits日志
  f,保存合并后的目录树信息到新的image文件中
  g,将新产生的image上传到Namenode中,替换原来的image文件
  h,结束检查点
  4,SecondNamenode最好于Namenode部署到不同的服务器
  应该在merge的过程中,SecondNamenode对内存的需求与Namenode是相同的,所以对于那些大型的生产系统中,如果将两者部署到同台服务器上,在内存上会出现瓶颈。
  所以最好将他们分别部署到不同的服务器。
  修改hadoop配置文件的master文件。
  5,关于SecondNamenode的思考
  其实检查点的执行过程最好在Namenode结点搞定,也就说能有个任务定期的将Namenode的内存结果刷新到fsimage中,而不是仅仅在Namenode启动的时候才进行一次合并。
  如果可以实现定期的对Namenode执行检查点,那么SecondNamenode完全没有存在的必要了。
  或者在SecondNamenode方面实现增量的刷新,每次不需要将fsimage整个装载到内存中,而仅仅将增量刷新就OK了。
  不过这样会让系统变得复杂一些,可以参考oracle中的检查点的处理,还是有些复杂的。
  简单就是美?!!
  FYI:在masters文件中配置second namenode后,日志报java.net.BindException: Cannot assign requested address异常,而且second namenode启动失败,反复测试发现是hdfs-site.xml中的dfs.secondary.http.address没有更改IP,更改成masters中配置的IP后集群启动正常。
  dfs.secondary.http.address
  second_namenode:50090
  The secondary namenode http server address and port.
  If the port is 0 then the server will start on a free port.

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-424926-1-1.html 上篇帖子: Hadoop的Python框架指南 下篇帖子: 大数据~说说Hadoop
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表