热线电话:13121318867

登录
首页大数据时代大数据分析师教程-2.1 Hadoop入门-Hadoop 1.0 的局限与 Hadoop 2.0(YARN)的革新
大数据分析师教程-2.1 Hadoop入门-Hadoop 1.0 的局限与 Hadoop 2.0(YARN)的革新
2024-10-23
收藏

大数据分析师培训教程-2.1 Hadoop入门-Hadoop 1.0 的局限与 Hadoop 2.0(YARN)的革新

Hadoop简介

Apache Hadoop存储和处理大数据的开源软件框架 Hadoop项目

Hadoop能够在上千台机器组成的集群上运行大规模集群可靠性,不能仅仅靠硬件来保证,因为节点的失败、网络的失败等状况不可避免,为了能够在大规模集群上顺利运行,Hadoop的所有模块,其设计原则基于这样的基本假设,即**硬件的失败在所难免,每个节点都没有那么可靠,可能发生节点失败状况,软件框架应该能够自动检测和处理这些失败情况。 Hadoop通过软件,在大规模集群上提供高度的可用性(High Availability)

Hadoop 的生态系统

  1. HiveHadoop平台上的数据仓库,用于对数据进行离线分析。它提供了一种类 似于SQL的查询语言HQL (Hive Query Language)。HiveSQL转化为 MapReduce作业(Job)在Hadoop上执行。

  2. HBase是Google Big Table在Hadoop平台上的开源实现。它是一个针对结构化数 据处理的、面向列分组(Column Family)的、可伸缩的、高度可靠的、高性能的分 布式数据库。一般用于数据服务(Data Serving)应用场合。

  3. Pig实现了数据查询脚本语言Pig Latin。用Pig Latin脚本语言编写的应用程序,翻 译为MapReduce作业,在Hadoop上运行

  4. Flume是一个可扩展的、高度可靠的、高可用的分布式海量日志收集系统,一般 用于把众多服务器上的大量日志,聚合到某一个数据中心。Flume提供对日志数 据进行简单处理的能力,比如过滤、格式转换等。同时,Flume可以将日志写往 各种目标(本地文件、分布式文件系统)。

  5. Sqoop是SQL to Hadoop的缩写,主要用于在关系数据库或者其它结构化数据源 和Hadoop之间交换数据

  6. Mahout是Hadoop平台上的机器学习软件包,它的主要目标是实现高度可扩展的 机器学习算法,以便帮助开发人员利用大数据进行机器学习模型训练。Mahout现 在已经包含聚类、分类、推荐引擎(协同过滤)、频繁集挖掘等经典数据挖掘和机 器学习算法。

  7. Oozie是一个工作流调度器(Scheduler)。Oozie协调运行的作业,属于一次性非 循环的作业,比如MapReduce作业、Pig脚本、Hive查询、Sqoop数据导入/导出 作业等。Oozie基于时间、和数据可用性进行作业调度,根据作业间的依赖关 系,协调作业的运行

  8. Zookeeper是模仿Google公司的Chubby系统的开源实现,Chubby是一个分布式 的锁(Lock)服务

HDFS 的原理及其读写过程

原理:

  1. HDFS,是一个分布式的、高度可扩展的文件系统。
  2. 一个HDFS集群,一般由一个NameNode和若干DataNode组成,分别负责元信息 的管理和数据块的管理 . HDFS支持TB级甚至PB级大小文件的存储;
  3. 它把文件划分成数据块(Block),分布到多台机器上进行存储;
  4. 为了保证系统的可靠性,HDFS把数据块在多个节点上进行复制(Replicate)
  5. 采用心跳机制确认节点可用:
  6. DataNode默认每秒像NameNode汇报一次,向NameNode汇报状态信息,并且返 回NameNode对DataNode的操作命令
  7. 如果某一时刻DataNode不汇报,可能宕机 . NameNode超过十分钟没有收到DataNode的心跳,则认为该节点不可用 写文件
  8. 客户端通过Distributed FileSystem模块向NameNode请求上传文件,NameNode检 查目标文件是否已存在,父目录是否存在。
  9. NameNode返回是否可以上传。 . 客户端请求第一个 Block上传到哪几个DataNode服务器上。
  10. NameNode返回个DataNode节点,分别为DataNode1、DataNode2、DataNode。 5. 客户端通过FSDataOutputStream模块请求DataNode1上传数据,DataNode1收到 请求会继续调用DataNode2,然后DataNode2调用DataNode,将这个通信管道建立 完成。
  11. DataNode1、DataNode2、DataNode逐级应答客户端。
  12. 客户端开始往DataNode1上传第一个Block(先从磁盘读取数据放到一个本地内存 缓存),以Packet为单位,DataNode1收到一个Packet就会传给DataNode2, DataNode2传给DataNode;DataNode1每传一个packet会放入一个应答队列等待应 答。
  13. 当一个Block传输完成之后,客户端再次请求NameNode上传第二个Block的服务 器。(重复执行-7步)。

读文件

  1. 客户端通过DistributedFileSystem向NameNode请求下载文件,NameNode通过 查询元数据,找到文件块所在的DataNode地址。
  2. 挑选一台DataNode(就近原则,然后随机)服务器,请求读取数据。 . DataNode开始传输数据给客户端(从磁盘里面读取数据输入流,以Packet为单 位来做校验)。
  3. 客户端以Packet为单位接收,先在本地缓存,然后写入目标文件。

Hadoop 1.0 的局限与 Hadoop 2.0(YARN)的原理是什么?

在大数据处理的领域中,Hadoop 可谓是一位 “重量级选手”。然而,就像任何技术一样,Hadoop 1.0 也有它的不足之处。

Hadoop 1.0 存在着明显的单点故障问题。这就好比一个团队中,如果关键人物出了问题,整个团队的运作可能就会陷入混乱。在 Hadoop 1.0 中,一旦 NameNode 这个关键节点出现故障,整个系统就可能面临崩溃的风险。

而且,它的资源管理方式也不够灵活。就好像分配房间,如果只有一种固定的分配方式,很难满足各种不同的需求。

不过,技术总是在不断进步的。Hadoop 2.0(YARN)的出现,给我们带来了新的希望。

YARN 的原理就像是一个更聪明的 “管家”。它把资源管理和任务调度分开了。ResourceManager 就像是大管家,负责整体资源的分配和监控。而 ApplicationMaster 则像是每个任务的小管家,专门负责自己任务的资源申请和调度。

这种分离的方式,让系统的扩展性大大增强。就好比原来的房子不够住了,现在可以很方便地加盖新的房间,而不会影响原来的居住者。

同时,容错性也得到了提高。即使某个 “小管家” 出了问题,也不会让整个 “家” 乱了套。

资源利用率也因为这种更精细的管理而得到了提升,不再有资源浪费或者分配不均的情况。

Hadoop 1.0 的局限

  1. 它仅仅支持一种计算模型,即MapReduce。MapReduce计算模型的表达能力有 限,尤其是复杂的数据处理任务
  2. MapReduce作业通过磁盘进行数据交换,效率低下,影响了查询的执行效率。
  3. Hadoop 1.0的任务调度方法,远未达到优化资源利用率的效果。

Hadoop 2.0(YARN)的原理

YARN(Yet Another Resource Negotiator)

  1. 在新的架构里,包含ResourceManager和NodeManager两个重要的组件。 ResourceManager运行在Master节点上,NodeManager运行在Slave节点上,一起负 责分布式应用程序的调度和运行
  2. ResourceManager是为应用程序分配资源的最高权威。ResourceManager包含两个组件,包括Scheduler和ApplicationManager

总的来说,Hadoop 2.0(YARN)的出现,解决了 Hadoop 1.0 的很多痛点,让大数据处理变得更加高效、可靠和灵活。相信在未来,它还会不断进化,为我们处理大数据带来更多的便利和惊喜!

Hadoop 2.0 的主要优势有哪些?

    1. 扩展性:

ResourceManager的主要功能,是资源的调度工作。所以它能够轻松地 管理更大规模的集群系统,适应了数据量增长对数据中心的扩展性提出的挑战。

    1. 更高的集群使用效率:

ResourceManager是一个单纯的资源管理器,它根据资源 预留要求、公平性、服务水平协议(Service Level Agreement, SLA)等标准,优化 整个集群的资源,使之得到很好的利用。

Hadoop1.0平台上开发的 MapReduce应用程序,无需修 改,直接在YARN上运行。

    1. 支持更多的负载类型:

数据存储HDFS以后,用户希望能够对数据以不同的 方式进行处理。除了MapReduce应用程序(主要对数据进行批处理),YARN支持 更多的编程模型,包括图数据的处理、迭代式计算模型、实时流数据处理、交互 式查询等。一般来讲,机器学习算法需要在数据集上,经过多次迭代,才能获得 最终的计算结果。

    1. 灵活性: MapReduce等计算模型可以独立于资源管理层,单独演化和改进。使 得系统各个部件的演进和配合,更加具有灵活性
最新资讯
更多
客服在线
立即咨询