1. Daemons(守护进程)

新老架构

老的:

Apache Hadoop 1.x (MRv1)
 
新的:
Apache Hadoop 2.x (YARN)-Yet Another Resource Negotiator
 
1-1) Apache Hadoop 1.x (MRv1) 包含如下后台进程:
• Namenode (名称节点)
• Secondary namenode (第二名称节点)
• Jobtracker (工作跟踪器)
• Datanode (数据节点)
• Tasktracker (任务跟踪器)
 
  a) 所有的后台进程是运行在自己的JVM虚拟机中的Java服务。
  b) 主从模式
  namenode 和 jobtracker 是 master daemons
  datanode 和 tasktracker 是 slave daemons
 
 2. NameNode(名称节点)
 
2-1) 名称节点是master daemon, 它负责存储HDFS文件系统上所有文件的位置信息。
 
名称节点从不存储实际数据,换句话说,它存储所有的元数据(metadata)。
 
(备注: 元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data about data),

主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。)

 
2-2) 名称节点在内存(RAM)中维护所有的元数据,这样客户端可以快速得到请求它的响应。
因此,需要在有较多内存分配的服务器上运行名称节点。(非常重要!!)
HDFS中的文件数量越多,名称节点所消耗的内存也越高。
 

2-3) 由于在内存中存储元数据信息,因此名称节点后台进程也同时在硬盘上存储了一个用来持久化元数据的检查点文件,该文件名叫fsimage。

每当集群中的文件发生 新增/删除/更新 操作的时候,动作信息会被更新到一个叫做edits log的日志文件中。

更新完日志后,内存中的元数据信息也会相应地更新。
需要注意的是: fsimage文件不会针对每次写操作进行更新。
 
有人要问,如果名称节点的后台进程重启了怎么办,信息不都在内存中吗?丢失了呀!
答案是不会,下列操作会发生:
1. 从磁盘上读取fsimage文件的信息并把它加载到内存。
2. 从edits log读取所有的操作信息,并把它还原到内存中。
3. 最后把修改后的内存中的信息再写入磁盘上的fsimage文件。
 
2-4) Hadoop 1.x名称节点的弱点以及Hadoop 2.x的改进
 

a. Hadoop 1.x里的名称节点是单节点的,因此,如果该服务器宕机了的话,整个HDFS文件系统将不可使用了。

为了解决这种情况,以前管理员需要配置下,把fsimage同时写到本地磁盘和网络上的远程磁盘。

那台新备份的机器其实相当于冷备份,在名称节点宕机的时候可以临时启动。

b. Hadoop 2.x支持高可用(High Availability - HA)

部署2台名称节点的服务器, 分别是active和passive, 如果active的那台服务器宕机了, passive的那台服务器会接管

控制权,相当于双机热备份。

3. Secondary namenode(第二名称节点)

 
 

hadoop from rookie to ninja - 1. Basic Architecture(基础架构)的更多相关文章

  1. [Architecture] 系统架构正交分解法

    [Architecture] 系统架构正交分解法 前言 随着企业成长,支持企业业务的软件,也会越来越庞大与复杂.当系统复杂到一定程度,开发人员会发现很多系统架构的设计细节,很难有条理.有组织的用一张大 ...

  2. [Architecture Design] 3-Layer基础架构

    [Architecture Design] 3-Layer基础架构 三层式体系结构 只要是软件从业人员,不管是不是本科系出身的,相信对于三层式体系结构一定都不陌生.在三层式体系结构中,将软件开发所产出 ...

  3. 【原创 Hadoop&Spark 动手实践 12】Spark MLLib 基础、应用与信用卡欺诈检测系统动手实践

    [原创 Hadoop&Spark 动手实践 12]Spark MLLib 基础.应用与信用卡欺诈检测系统动手实践

  4. EDA: Event-Driven Architecture事件驱动架构

    EDA: Event-Driven Architecture事件驱动架构 2009-09-24 17:28 5 赞  异步编程      软件架构      EDA事件驱动        SOA的核心 ...

  5. Hadoop(分布式系统基础架构)---Hive与HBase区别

    对于刚接触大数据的用户来说,要想区分Hive与HBase是有一定难度的.本文将尝试从其各自的定义.特点.限制.应用场景等角度来进行分析,以作抛砖引玉之用.  Hive是什么? Apache Hive是 ...

  6. hadoop之yarn详解(基础架构篇)

    本文主要从yarn的基础架构和yarn的作业执行流程进行阐述 一.yarn的概述 Apache Yarn(Yet Another Resource Negotiator的缩写)是hadoop集群资源管 ...

  7. hadoop搭建一:虚拟机网络配置和基础(未完成)

    基于VMware 15+CentOS 7+Hadoop 2.6,hadoop的搭建主要用于个人学习,水平有限. hadoop搭建一:虚拟机网络配置和基础 hadoop搭建二:hadoop全分布搭建 h ...

  8. Hadoop(1): HDFS基础架构

    1. What's HDFS? Hadoop Distributed File System is a block-structured file system where each file is ...

  9. [转] An In-Depth Look at the HBase Architecture - HBase架构深度剖析

    [From] https://mapr.com/blog/in-depth-look-hbase-architecture/ In this blog post, I’ll give you an i ...

随机推荐

  1. python 全栈开发,Day24(复习,__str__和__repr__,__format__,__call__,__eq__,__del__,__new__,item系列)

    反射: 使用字符串数据类型的变量名来使用变量 wwwh即what,where,why,how  这4点是一种学习方法 反射 :使用字符串数据类型的变量名来使用变量 1.文件中存储的都是字符串 2.网络 ...

  2. .Net开发工程师工具箱

    Visual Studio Visual Studio Productivity Power tool:Visual Studio专业版(及以上)的扩展,具有丰富的功能,如快速查找,导航解决方案,可搜 ...

  3. 《LINQ技术详解C#》-2.查询表达式翻译为标准查询操作符

    (1)透明标识符 有些翻译步骤要使用透明标识符(*)插入枚举变量. 透明标识符只在翻译过程中存在,翻译结束将不再出现. (2)翻译步骤 ①带有into连续语句的Select和Group语句 from. ...

  4. Oracle11g 创建数据库中问题处理(必须运行Netca以配置监听程序)

    这两天学习<OCP/OCA认证考试指南>,要创建新的数据库,因为此前我的电脑上已经被折腾了好久的Mysql 和oracle10g ,所以可能导致很多环境都变了,创建数据库的过程中出现了一些 ...

  5. [转] 插件兼容CommonJS, AMD, CMD 和 原生 JS

    模块标准 CommonJS CommonJS 有三个全局变量 module.exports 和 require.但是由于 AMD 也有 require 这个全局变量,故不使用这个变量来进行检测. 如果 ...

  6. ahoi2009维护序列

    链接:https://www.luogu.org/problemnew/show/P2023 裸的线段树维护+* 代码: #include <bits/stdc++.h> using na ...

  7. NodeMCU入门(3):断线自动重连,指示灯显示连接状态

    准备工作 1.NodeMCU模块 2.ESPlorer v0.2.0-rc6 事件监听器 NodeMCU采用了事件响应的方式.也就是说,只需为事件设置一个回调函数,当事件发生时,回调函数就会被调用. ...

  8. windows server 2003 安全加固(二)

    windows server 2003 安全加固 关闭默认端口 我们知道远程桌面服务端口默认开启在3389端口,如果我们一定要用到,最好能换到另外的端口上,放到靠后的端口号上去,比如10001. 更改 ...

  9. 006.ks.cfg文件相关

    一 图形化生成ks.cfg文件 [root@server ~]# yum -y install system-config-kickstart #安装图形化kickstart工具 [root@serv ...

  10. 通过反射的方式注入自己的ShutdownHook并清除其他HOOK

    String className = "java.lang.ApplicationShutdownHooks"; Class<?> clazz = Class.forN ...