Hadoop 起源于Google Lab开发的Google File System (GFS)存储系统和MapReduce数据处理框架。2008年,Hadoop成了Apache上的顶级项目,发展到今天,Hadoop已经成了主流的大数据处理平台,与Spark、HBase、Hive、Zookeeper等项目一同构成了大数据分析和处理的生态系统。Hadoop是一个由超过60个子系统构成的系统集合。实际使用的时候,企业通过定制Hadoop生态系统(即选择相应的子系统)完成其实际大数据管理需求。Hadoop生态系统由两大核心子系统构成∶HDFS分布式文件系统和MapReduce数据处理系统。

HDFS分布式文件系统

HDFS是一个可扩展的分布式文件系统,它为海量的数据提供可靠的存储。HDFS的架构是构建在一组特定的节点上,其中包括一个NameNode 节点和数个DataNode 节点。NameNode 主要负责管理文件系统名称空间和控制外部客户机的访问,它对整个分布式文件系统进行总控制,记录数据分布存储的状态信息。DataNode则使用本地文件系统来实现HDFS的读写操作。每个DataNode都保存整个系统数据中的一小部分,通过心跳协议定期向NameNode报告该节点存储的数据块的状况。为了保证系统的可靠性,在DataNode发生宕机时不致文件丢失,HDFS会为文件创建复制块, 用户可以指定复制块的数目, 默认情况下, 每个数据块拥有额外两个复制块, 其中一个存储在与该数据块同一机架的不同节点上, 而另一复制块存储在不同机架的某个节点上。

所有对HDFS文件系统的访问都需要先与NameNode通信来获取文件分布的状态信息,再与相应的DataNode节点通信来进行文件的读写。由于NameNode处于整个集群的中心地位,当NameNode节点发生故障时整个HDFS 集群都会崩溃,因此HDFS中还包含了一个Secondary NameNode,它与NameNode之间保持周期通信,定期保存NameNode上元数据的快照,当NameNode发生故障而变得不可用时,Secondary NameNode 可以作为备用节点顶替NameNode,使集群快速恢复正常工作状态。

NameNode的单点特性制约了HDFS的扩展性,当文件系统中保存的文件过多时NameNode会成为整个集群的性能瓶颈。因此在Hadoop 2.0 中,HDFS Federation被提出,它使用多个NameNode分管不同的目录,使得HDFS具有横向扩展的能力。

MapReduce 数据处理系统

MapReduce是位于HDFS文件系统上一层的计算引擎,它由JobTracker 和 TaskTracker 组成。JobTracker是运行在 Hadoop 集群主节点上的重要进程,负责MapReduce的整体任务调度。同NameNode 一样,JobTracker在集群中也具有唯一性。TaskTracker进程则运行在集群中的每个子节点上,负责管理各自节点上的任务分配。

当外部客户机向MapReduce引擎提交计算作业时,JobTracker将作业切分成一个个小的子任务,并根据就近原则,把每个子任务分配到保存了相应数据的子节点上,并由子节点上的TaskTracker负责各自子任务的执行,并定期向JobTracker发送心跳来汇报任务执行状态。

Hadoop 2.0对MapReduce的架构加以改造,对JobTracker所负担的任务分配和资源管理两大职责进行分离,在原本的底层HDFS文件系统和MapReduce计算框架之间加入了新一代架构设计——YARN。

YARN 是一个通用的资源管理系统,为上层的计算框架提供统一的资源管理和调度。 NodeManager 运行于每个子节点上, 对不同的节点进行自管理,任务分配的职责也从原本的JobTracker中独立出来,由ApplicationMaster来负责,并在NodeManager控制的资源容器中运行。应用程序负责向资源管理器索要适当的资源容器, 运行任务以及跟踪应用程序执行状态。

YARN 新架构采用的责任下放思路使得 Hadoop 2.0拥有更高的扩展性,资源的动态分配也极大提升了集群资源利用率。不仅如此,ApplicationMaster的加入使得用户可以将自己的编程模型运行于Hadoop 集群上,加强了系统的兼容性和可用性,HDFS和MapReduce是Hadoop生态系统中的核心组件,提供基本的大数据存储和处理能力,以上述两个核心组件为基础,Hadoop 社区陆续开发出一系列子系统完成其他大数据管理需求,这些子系统和HDFS、MapReduce一起共同构成了Hadoop生态系统。下图显示了HortonWorks公司发布的Hadoop生态系统的系统架构。

综上概括,Hadoop生态系统为用户提供的是一套可以用来组装自己的个性化数据管理系统的工具,用户根据自己的数据特征和应用需求,对一系列的部件进行有机地组装和部署,就能得到一个完整可用的管理平台。传统数据库软件采用的理念在大数据时代已经不再适用,大数据处理对系统架构的灵活性、数据处理伸缩性、数据处理效率提出了更高的要求。Hadoop 生态系统是开源社区对大数据挑战的解决方案,为大数据管理系统的后续发展奠定了良好的基础。

大数据管理系统架构Hadoop的更多相关文章

  1. hadoop大数据技术架构详解

    大数据的时代已经来了,信息的爆炸式增长使得越来越多的行业面临这大量数据需要存储和分析的挑战.Hadoop作为一个开源的分布式并行处理平台,以其高拓展.高效率.高可靠等优点越来越受到欢迎.这同时也带动了 ...

  2. 量化派基于Hadoop、Spark、Storm的大数据风控架构--转

    原文地址:http://www.csdn.net/article/2015-10-06/2825849 量化派是一家金融大数据公司,为金融机构提供数据服务和技术支持,也通过旗下产品“信用钱包”帮助个人 ...

  3. Laxcus大数据管理系统单机集群版

    Laxcus大数据管理系统是我们Laxcus大数据实验室历时5年,全体系全功能设计研发的大数据产品,目前的最新版本是2.1版本.从三年前的1.0版本开始,Laxcus大数据系统投入到多个大数据和云计算 ...

  4. Laxcus大数据管理系统2.0(5)- 第二章 数据组织

    第二章 数据组织 在数据的组织结构设计上,Laxcus严格遵循数据和数据描述分离的原则,这个理念与关系数据库完全一致.在此基础上,为了保证大规模数据存取和计算的需要,我们设计了大量新的数据处理技术.同 ...

  5. Laxcus大数据管理系统2.0(9)- 第七章 分布任务组件

    第七章 分布任务组件 Laxcus 2.0版本的分布任务组件,是在1.x版本的基础上,重新整合中间件和分布计算技术,按照新增加的功能,设计的一套新的.分布状态下运行的数据计算组件和数据构建组件,以及依 ...

  6. Laxcus大数据管理系统2.0(10)- 第八章 安全

    第八章 安全 由于安全问题对大数据系统乃至当前社会的重要性,我们在Laxcus 2.0版本实现了全体系的安全管理策略.同时我们也考虑到系统的不同环节对安全管理的需求是不一样的,所以有选择地做了不同的安 ...

  7. Laxcus大数据管理系统2.0(3)- 第一章 基础概述 1.2 产品特点

    1.2 产品特点 Laxcus大数据管理系统运行在计算机集群上,特别强调软件对分布资源可随机增减的适应性.这种运行过程中数据动态波动和需要瞬时感知的特点,完全不同与传统的集中处理模式.这个特性衍生出一 ...

  8. Laxcus大数据管理系统2.0 (1) - 摘要和目录

    Laxcus大数据管理系统 (version 2.0) Laxcus大数据实验室 摘要 Laxcus是Laxcus大数据实验室全体系全功能设计研发的多用户多集群大数据管理系统,支持一到百万台级节点,提 ...

  9. 知名大厂如何搭建大数据平台&架构

    今天我们来看一下淘宝.美团和滴滴的大数据平台,一方面进一步学习大厂大数据平台的架构,另一方面也学习大厂的工程师如何画架构图.通过大厂的这些架构图,你就会发现,不但这些知名大厂的大数据平台设计方案大同小 ...

随机推荐

  1. Django序列化组件与数据批量操作与简单使用Forms组件

    目录 SweetAlert前端插件 Django自带的序列化组件 批量数据操作 分页器与推导流程 Forms组件之创建 Forms组件之数据校验 Forms组件之渲染标签 Forms组件之信息展示 S ...

  2. 在vue中路径中的@

    1.在Vue的路径中@等于src 2.在css的路径中~@等于src

  3. Kafka 消费者解析

    一.消费者相关概念 1.1 消费组&消费者 消费者: 消费者从订阅的主题消费消息,消费消息的偏移量保存在Kafka的名字是__consumer_offsets的主题中 消费者还可以将⾃⼰的偏移 ...

  4. JavaSE_多线程入门 线程安全 死锁 状态 通讯 线程池

    1 多线程入门 1.1 多线程相关的概念 并发与并行 并行:在同一时刻,有多个任务在多个CPU上同时执行. 并发:在同一时刻,有多个任务在单个CPU上交替执行. 进程与线程 进程:就是操作系统中正在运 ...

  5. 图解 Apache SkyWalking UI 的使用

    Apache SkyWalking的UI界面主要分为以下几个区域: 功能选择区:这里列出了主要的UI功能,包括仪表盘.拓扑图.追踪.性能刨析.告警等功能 重新加载区:控制重新加载机制,包括定期重新加载 ...

  6. Linux安装netstat命令

    Linux安装netstat命令 1.查找netstat命令所属的依赖包 [root@localhost ~]# yum provides netstat netstat命令的安装包为net-tool ...

  7. JAVA 异常 基本知识

    异常 异常定义 异常是运行过程中出现的错误 人为错误:填写错误等 随机错误:网络中断.内存耗尽等 一个健壮的程序必须处理各种各样的错误 Java的异常是class Object Throwable E ...

  8. 纯css就能实现可点击切换的轮播图,feel起来很丝滑

    前言 轮播图经常会在项目里用到,但是实际上用到的轮播图都是比较简单的,没有复杂的特效,这个时候如果去引入swiper那些库的话,未免就有点杀鸡焉用牛刀了. 所以不如自己手写一个,而今天我要分享的一种写 ...

  9. Gitlab + Gitlab runner + Window powershell

    需求说明 根据领导要求,要把python 项目移到Gitlab 进行管理,并利用Gitlab CI/CD 进行自动化测试,打包,部署.(听起来很简单吧) 比较头大,完全没有经验,python 也是刚上 ...

  10. SAP -SE30 程序运行时间分析

    运行SE30 选中Program,点击Excute 点击运行 分析结果