Hadoop——开源分布式计算平台

起源:

Hadoop 的框架最核心的设计就是:HDFS MapReduce。HDFS 为海量的数据提供了存储,则MapReduce 为海量的数据提供了计算。

特点:

Hadoop 是一个能够对大量数据进行分布式处理的软件框架。Hadoop 以一种可靠、高效、可伸缩的方式进行数据处理。
1)高可靠性。Hadoop 按位存储和处理数据的能力值得人们信赖。

2)高扩展性。Hadoop 是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中

3)高效性。Hadoop 能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。

4)高容错性。Hadoop 能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。

5)低成本。与一体机、商用数据仓库以及QlikView、Yonghong Z-Suite等数据集市相比,hadoop 是开源的,项目的软件成本因此会大大降低。

6)成熟的生态圈(开源、社区活跃参与者众多、设计分布式存储和计算的方方面面、已得到企业界验证)。

Hadoop 版本:


Hadoop 生态系统组成:

Hadoop 生态圈(组件构架):

整个Hadoop 家族由一下几个子项组成:
Hadoop Common:Hadoop 体系最底层的支撑组件,主要提供基础工具包和RPC 框架等,如:配置文件和日志操作等。

HDFS:是Hadoop 应用程序中主要的分布式存储系统(用于存储大数据的平台,提供一个可靠性的存储服务),HDFS 针对海量数据所设计,所以相比传统文件系统在大批量小文件上的优化,HDFS 优化的则是对小批量大型文件的访问和存储。

MapReduce:是一个分布式运算程序的编程框架,是用户开发“基于hadoop 的数据分析应用”的核心框架,用以轻送编写处理海量(TB 级)数据的并行应用程序,以可靠和容错的方式连接大型集群中上万个节点。

Pig:是一个用于大型数据分析的平台,包含了一个用于数据分析应用的高级语言以及评估这些应用的基础设施。Pig 应用的闪光特性在于他们的构架经得起大量的并行,也就是说让他们支撑起非常大的数据集。

ZooKeeper:是Google 的Chubby 一个开源的实现。它是一个针对大型分布式系统的可靠协调系统。ZooKeeper 的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

HBase:是Hadoop 数据库,一个可分布式、可扩展的大数据存储。其核心是Google Big table 论文的开源实现,分布式列式存储。

Hive:是Hadoop 的一个数据仓库系统。

Sqoop:用来将Hadoop 和关系型数据库中的数据相互转移的工具。

Hadoop 内核:

HDFS 简介:
基本原理:
a. 将文件切分成等大的数据块,存储到多台机器上
b. 将数据切分、容错、负载均衡等功能透明化
c. 可将HDFS 看成一个容量巨大、具有高容错性的磁盘
基本架构:

架构说明:
        HDFS 架构采用主从架构(master/slave),一个典型的HDFS 集群包含一个NameNode 节点和多个DataNode 节点。NameNode(主服务器)节点负责整个HDFS 文件系统中的文件的元数据的保管和管理,集群中通常只有一台机器上运行NameNode 实例,DataNode 节点保存文件中的数据,集群中的机其分别运行一个DataNode 实例。
        默认情况下,每个DataNode 都保存了3 个副本,其中两个保存在同一个机架的两个不同的节点上。另一个副本放在不同机架上的节点上。

注解:
a. NameNode:中心服务器(Master | 主节点),维护文件系统树、以及整棵树内的文件目录、负责整个数据集群的管理。

b. DataNode(分布在不同的机架上(Slaver)):
i)在客户端或者NameNode 的调度下,存储并检索数据块,并且定期向NameNode 发送所存储的数据块的列表。(存储实际的数据块,并执行数据块读/写操作)
i)默认情况下,每个DataNode 都保存了3 个副本,其中两个保存在同一个机架的两个不同的节点上。另一个副本放在不同机架上的节点上。

c. HDFS Client:切分,与NameNode 交互、管理、访问HDFS;与NameNode 获取元数据;与DataNode 交互获取数据。

应用场景:
a. 海量数据的可靠性存储                          b. 数据归档

特点:
a. 高容错性                          b. 适合批处                          c. 适合大数据处理

*HDFS 读流程示意图(重点):

a. 使用HDFS 提供的客户端Client, 向远程的Namenode 发起RPC 请求;NameNode 通过查询元数据,找到文件块所在的DataNode 地址。(因为真正的block 是存在Datanode 节点上的,而namenode 里存放了block 位置信息的元数据)

b. Namenode 会视情况返回文件的部分或者全部block 列表, 对于每个block, Namenode 都会返回有该block 拷贝的DataNode 地址;

c. 客户端拿到block 的位置信息后调用FSDataInputStream API 的read 方法并行的读取block 信息,图中4 和5 流程是并发的,block 默认有3 个副本,所以每一个block 只需要从一个副本读取就可以。(客户端Client 会选取离客户端最近的DataNode 来读取block; 如果客户端本身就是DataNode, 那么将从本地直接获取数据)

d. 读取完当前block 的数据后, 关闭当前的DataNode 链接, 并为读取下一个block 寻找最佳的DataNode;

e. 当读完列表block 后, 且文件读取还没有结束, 客户端会继续向Namenode 获取下一批的block 列表;

f. 读取完一个block 都会进行checksum 验证, 如果读取datanode 时出现错误, 客户端会通知Namenode, 然后再从下一个拥有该block 拷贝的datanode 继续读。

*HDFS 写流程示意图(重点):

客户端要向HDFS 写数据,首先要跟namenode 通信以确认可以写文件并获得接收文件block 的datanode,然后,客户端按顺序将文件逐个block 传递给相应datanode,并由接收到block 的datanode 负责向其他datanode复制block 的副本。
如图:

详细步骤:
1)客户端向NameNode 请求上传文件,并告诉NameNode 上传文件的文件名、文件大小、文件拥有者。NameNode 检查目标文件是否已存在,父目录是否存在。

2)namenode 返回是否可以上传并根据以上信息算出文件需要切成多少块block,以及block 要存放在哪个datanode 上,并将这些信息返回给客户端。

3)client 会先对文件进行切分,比如一个blok 块128m,文件有300m 就会被切分成3 个块,一个128M、一个128M、一个44M 请求第一个block 该传输到哪些datanode 服务器上。

4)namenode 返回3 个datanode 节点(replication 的默认值为3),分别为dn1、dn2、dn3。

5)客户端请求dn1 上传数据,dn1 收到请求会继续调用dn2,然后dn2 调用dn3,(本质上是一个RPC 调用,建立pipeline)将这个通信管道建立完成。

6)dn1、dn2、dn3 逐级应答客户端。

7)客户端开始往dn1 上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet 为单位,dn1 收到一个packet 就会传给dn2,dn2 传给dn3;dn1 每传一个packet 会放入一个应答队列等待应答。

8)当一个block 传输完成之后,客户端再次请求namenode 上传第二个block的服务器。(重复执行3-7 步)

补充注意:
1.namenode 实际客户端只上传一个datanode,其余两个是namenode 完成的。让datenote 自己复制的。然后复制完成以后逐级返回结果给namenode.如果2,3datanode 复制失败,再有namenode 分配新的datanode 地址。对于客户端来说默认上传一个datanode 就可以了,其余的由datanode 自己复制。(这样的优势就是快。)

2.datanode 切片是由客户端完成的。datanode 第二三个副本的上传和第一个上传是异步的。

HDFS 与操作系统的文件系统-要素比较:

YARN 简介:

Yet Another Resource Negotiator(另一种资源协调者),是一种新的Hadoop资源管理器,使得多种计算机框架可以运行在一个集群中。
        YARN 的基本思想是将JobTracker 的两个主要功能(资源管理和作业调度/监控)分离,主要方法是创建一个全局的ResourceManager(RM)和若干个针对应用程序的ApplicationMaster(AM)。
        YARN 分层结构的本质是ResourceManager。
        ResourceManager:这个实体控制整个集群并管理应用程序向基础计算资源的分配。ResourceManager 将各个资源部分(计算、内存、带宽等)精心安排给基础NodeManager(YARN 的每节点代理)。ResourceManager 还与ApplicationMaster 一起分配资源,与NodeManager 一起启动和监视它们的基础应用程序。在此上下文中,ApplicationMaster 承担了以前的TaskTracker 的一些角色,ResourceManager 承担了JobTracker 的角色。(处理客户端请求、启动监控ApplicationMaster、监控NodeManager、资源分配与调度)
        ApplicationMaster 管理一个在YARN 内运行的应用程序的每个实例。ApplicationMaster 负责协调来自ResourceManager 的资源,并通过NodeManager 监视容器的执行和资源使用(CPU、内存等的资源分配)。
        NodeManager 管理一个YARN 集群中的每个节点。

核心思想:

将JobTracker 和TaskTracker 进行分离,它由下面几大构成组件:
a. 一个全局的资源管理器ResourceManager
b.ResourceManager 的每个节点代理NodeManager
c. 表示每个应用的ApplicationMaster
d. 每一个ApplicationMaster 拥有多个Container 在NodeManager 上运行

特点:

1)良好的扩展性、高可用性
2)对多种类型的应用层程序进行统一管理和调度
3)自带了多种用户调度器,适合共享集群环境

(Yarn 资源管理图)

MapReduce 简介:

MapReduce 是一种编程模型,用于大规模数据集(大于 1TB)的并行运算;是面向大数据并行处理的计算模型、框架和平台(定义)。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想。源于 Google 的 MapReduce 论文(发表于 2004 年 1 月 2),Hadoop MapReduce 是 Google MapReduce 克隆版。MapReduce 设计的一个理念是“计算向数据靠拢”,而不是“数据向计算靠拢”,因为移动数据需要大量的网络传输开销。

Job Tracter 主节点
Task Tracter 每一个从节点

核心功能:

将用户编写的业务逻辑代码和自带默认组件整合成一个完整的 分布式运算程序,并发运行在一个 hadoop 集群上。

特点:

1)良好的扩展性

2)高容错性

3)适合 PB 级以上海量数据的离线处理

执行步骤(运行机制):

Map 操作是可高度并行的

Hadoop——开源分布式计算平台简介相关推荐

  1. Hadoop大数据平台简介

    Hadoop的由来     hadoop是用于处理分布式存储和分布式计算的一个大数据处理框架.2002年,google开源了GFS论文.一个叫Doung Cutting的人根据GFS论文写了一个HDF ...

  2. 读书笔记《Hadoop开源云计算平台》

    HDFS-Hadoop Distributed File System,对大文件效率高,小文件效率低.和普通本地的文件系统区别在于HDFS中的文件是分布在多台计算机上的,并且访问文件需要通过HDFS中 ...

  3. 企业级Hadoop大数据平台实战(1)——基础知识说明

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

  4. Hadoop 大数据平台架构与实践

    初识Hadoop Hadoop是一个开源的分布式存储+分布式计算平台. Hadoop核心组成部分: HDFS:分布式文件系统,存储海量的数据. MapReduce:并行处理框架,实现任务分解和调度. ...

  5. ITTC数据挖掘平台介绍(综述)——平台简介

    数据挖掘方兴未艾,大量新事物层出不穷.本系列将介绍我们自主设计的数据挖掘软件平台.与大家共同分享对知识,微博,人际等复杂网络的分析,以及对自然语言处理的见解. 一.我们需要怎样的数据挖掘系统 一直以来 ...

  6. 大数据基础——Hadoop大数据平台搭建

    文章目录 前言 Hadoop大数据平台搭建 一.Hadoop原理和功能介绍 二.Hadoop安装部署 三.Hadoop常用操作 总结 前言 分布式机器学习为什么需求大数据呢?随着海量用户数据的积累,单 ...

  7. 初识大数据--Hadoop大数据平台架构与实践

    Hadoop大数据平台架构与实践 推荐书籍: ⭐大数据存储与处理技术的原理(理论) ⭐Hadoop的使用和开发能力(实践) 预备知识: Linux常用命令 Java基础编程 1.大数据相关概念 ​ 无 ...

  8. Hadoop大数据平台开发与案例分析

    关于举办"Hadoop大数据平台开发与案例分析 "高级工程师 一.课程介绍 1. 需求理解 Hadoop 设计之初的目标就定位于高可靠性.高可拓展性.高容错性和高效性,正是这些设计 ...

  9. 【沉淀】从网络中间件到搜索,从移动开发到分布式计算平台,阿里高级专家李睿博谈自己的折腾路...

    <沉淀>是云栖社区展示专家风采的人物栏目.它呈现每个专家独一无二的人生经历.认识和感悟的同时,也能帮助你沉淀技术,收获对技术和人生的判断.我们的想法是:"若你想精进为一个很厉害的 ...

最新文章

  1. 【CSS】多行溢出显示省略号
  2. 基于xgboost 的贷款风险预测
  3. Java程序员必会!没有返回值的构造函数是怎么完成赋值的?
  4. 大数据存在的安全隐患该如何防患
  5. docker 制作本地镜像_Docker系列-(2) 镜像制作与发布
  6. 学习OpenGL ES之法线贴图
  7. 基于Python实现的遗传算法求TSP问题
  8. 如何编写用户故事的验收标准
  9. kali安装python3.8_kali2019.4试用记录
  10. Navicat12.0.29_Premium_cs_x64激活
  11. 如何用js对url做urlencoding处理?
  12. 【Opengl】 VAO与VBO的关系
  13. CTFshow击剑杯osint——人家想玩嘛,人有点多超详细解法
  14. matlab生成高速轨道不平顺谱,国内外高速铁路轨道不平顺谱对比与思考.pdf
  15. 分析社交电商运营模式_电商代运营
  16. matlab的稀疏表示分类,基于稀疏表示的分类方法
  17. 学生护眼台灯aa和a的区别?分享适合学生的护眼台灯
  18. 低功耗能量回收时钟发生器和触发器的设计
  19. JAVA中pin什么意思_pin是什么意思用法
  20. 恐龙世界游戏-恐龙百科世界乐园游戏

热门文章

  1. Qt:QDialog 界面美化
  2. .NET Framework是什么?
  3. springboot---web---静态资源映射
  4. Go-webSocket实现广播
  5. MT360:工业级无线PDA(1维/2维条码/RFID/GPS/GSM/GPRS/WiFi/蓝牙)
  6. 兔子繁衍问题(C语言)
  7. 6.S081 lab: networking e1000 网卡驱动 附 Linux 网卡驱动编写分析
  8. 1亿妹纸大姨妈的神器美柚:上云要切合业务需求,更要货比三家
  9. 男人也来大姨妈,你不信?痛苦不堪
  10. 探索STM32F407ZET6,全套设计资料,包含原理图