`
jameswxx
  • 浏览: 776508 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

hadoop架构

    博客分类:
  • java
阅读更多

该文章我转自IBM开发者社区

      

         Hadoop 是一个受到 Yahoo!、Google 和 IBM 等公司支持的 Apache 项目。 本文将介绍 Hadoop 框架,并展示它为什么是最重要的基于 Linux® 的分布式计算框架之一。Hadoop 由 Apache Software Foundation 公司于 2005 年秋天作为 Lucene 的子项目 Nutch 的一部分正式引入。它受到最先由 Google Lab 开发的 MapReduce 和 Google File System 的启发。2006 年 3 月份,MapReduce 和 Nutch Distributed File System (NDFS) 分别被纳入称为 Hadoop 的项目中。Hadoop 是最受欢迎的在 Internet 上对搜索关键字进行内容分类的工具,但它也可以解决许多要求极大伸缩性的问题。例如,如果您要 grep 一个 10TB 的巨型文件,会出现什么情况?在传统的系统上,这将需要很长的时间。但是 Hadoop 在设计时就考虑到这些问题,因此能大大提高效率。


          Hadoop 是一个能够对大量数据进行分布式处理的软件框架。但是 Hadoop 是以一种可靠、高效、可伸缩的方式进行处理的。Hadoop 是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。Hadoop 是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。Hadoop 还是可伸缩的,能够处理 PB 级数据。此外,Hadoop 依赖于社区服务器,因此它的成本比较低,任何人都可以使用。您可能已经想到,Hadoop 运行在 Linux 生产平台上是非常理想的,因为它带有用 Java™ 语言编写的框架。Hadoop 上的应用程序也可以使用其他语言编写,比如 C++。

 

 

Hadoop 架构

         Hadoop 有许多元素构成。最底部是 Hadoop Distributed File System(HDFS),它存储 Hadoop 集群中所有存储节点上的文件。HDFS(对于本文)的上一层是 MapReduce 引擎,该引擎由 JobTrackers 和 TaskTrackers 组成。


HDFS

         对外部客户机而言,HDFS 就像一个传统的分级文件系统。可以创建、删除、移动或重命名文件,等等。但是 HDFS 的架构是基于一组特定的节点构建的(参见图 1),这是由它自身的特点决定的。这些节点包括 NameNode (仅一个),它在 HDFS 内部提供元数据服务;DataNode ,它为 HDFS 提供存储块。由于仅存在一个 NameNode,因此这是 HDFS 的一个缺点(单点失败)。



存储在 HDFS 中的文件被分成块,然后将这些块复制到多个计算机中(DataNode)。这与传统的 RAID 架构大不相同。块的大小(通常为 64MB)和复制的块数量在创建文件时由客户机决定。NameNode 可以控制所有文件操作。HDFS 内部的所有通信都基于标准的 TCP/IP 协议。

 

NameNode

         NameNode 是一个通常在 HDFS 实例中的单独机器上运行的软件。它负责管理文件系统名称空间和控制外部客户机的访问。NameNode 决定是否将文件映射到 DataNode 上的复制块上。对于最常见的 3 个复制块,第一个复制块存储在同一机架的不同节点上,最后一个复制块存储在不同机架的某个节点上。注意,这里需要您了解集群架构。

         实际的 I/O 事务并没有经过 NameNode,只有表示 DataNode 和块的文件映射的元数据经过 NameNode。当外部客户机发送请求要求创建文件时,NameNode 会以块标识和该块的第一个副本的 DataNode IP 地址作为响应。这个 NameNode 还会通知其他将要接收该块的副本的 DataNode。

          NameNode 在一个称为 FsImage 的文件中存储所有关于文件系统名称空间的信息。这个文件和一个包含所有事务的记录文件(这里是 EditLog)将存储在 NameNode 的本地文件系统上。FsImage 和 EditLog 文件也需要复制副本,以防文件损坏或 NameNode 系统丢失。

DataNode

         NameNode 也是一个通常在 HDFS 实例中的单独机器上运行的软件。Hadoop 集群包含一个 NameNode 和大量 DataNode。DataNode 通常以机架的形式组织,机架通过一个交换机将所有系统连接起来。Hadoop 的一个假设是:机架内部节点之间的传输速度快于机架间节点的传输速度。

         DataNode 响应来自 HDFS 客户机的读写请求。它们还响应创建、删除和复制来自 NameNode 的块的命令。NameNode 依赖来自每个 DataNode 的定期心跳(heartbeat)消息。每条消息都包含一个块报告,NameNode 可以根据这个报告验证块映射和其他文件系统元数据。如果 DataNode 不能发送心跳消息,NameNode 将采取修复措施,重新复制在该节点上丢失的块。

文件操作

         可见,HDFS 并不是一个万能的文件系统。它的主要目的是支持以流的形式访问写入的大型文件。如果客户机想将文件写到 HDFS 上,首先需要将该文件缓存到本地的临时存储。如果缓存的数据大于所需的 HDFS 块大小,创建文件的请求将发送给 NameNode。NameNode 将以 DataNode 标识和目标块响应客户机。同时也通知将要保存文件块副本的 DataNode。当客户机开始将临时文件发送给第一个 DataNode 时,将立即通过管道方式将块内容转发给副本 DataNode。客户机也负责创建保存在相同 HDFS 名称空间中的校验和(checksum)文件。在最后的文件块发送之后,NameNode 将文件创建提交到它的持久化元数据存储(在 EditLog 和 FsImage 文件)。

Linux 集群

Hadoop 框架可在单一的 Linux 平台上使用(开发和调试时),但是使用存放在机架上的商业服务器才能发挥它的力量。这些机架组成一个 Hadoop 集群。它通过集群拓扑知识决定如何在整个集群中分配作业和文件。Hadoop 假定节点可能失败,因此采用本机方法处理单个计算机甚至所有机架的失败。





Hadoop 应用程序

         Hadoop 的最常见用法之一是 Web 搜索。虽然它不是惟一的软件框架应用程序,但作为一个并行数据处理引擎,它的表现非常突出。Hadoop 最有趣的方面之一是 Map and Reduce 流程,它受到 Google 开发的启发。这个流程称为创建索引,它将 Web 爬行器检索到的文本 Web 页面作为输入,并且将这些页面上的单词的频率报告作为结果。然后可以在整个 Web 搜索过程中使用这个结果从已定义的搜索参数中识别内容。

 

MapReduce

         最简单的 MapReduce 应用程序至少包含 3 个部分:一个 Map 函数、一个 Reduce 函数和一个 main 函数。main 函数将作业控制和文件输入/输出结合起来。在这点上,Hadoop 提供了大量的接口和抽象类,从而为 Hadoop 应用程序开发人员提供许多工具,可用于调试和性能度量等。

         MapReduce 本身就是用于并行处理大数据集的软件框架。MapReduce 的根源是函数性编程中的 mapreduce 函数。它由两个可能包含有许多实例(许多 Map 和 Reduce)的操作组成。Map 函数接受一组数据并将其转换为一个键/值对列表,输入域中的每个元素对应一个键/值对。Reduce 函数接受 Map 函数生成的列表,然后根据它们的键(为每个键生成一个键/值对)缩小键/值对列表。

          这里提供一个示例,帮助您理解它。假设输入域是 one small step for man, one giant leap for mankind 。在这个域上运行 Map 函数将得出以下的键/值对列表:

	(one, 1)  (small, 1)  (step, 1)  (for, 1)  (man, 1)
	(one, 1)  (giant, 1)  (leap, 1)  (for, 1)  (mankind, 1)



如果对这个键/值对列表应用 Reduce 函数,将得到以下一组键/值对:

	(one, 2)    (small, 1)  (step, 1)     (for, 2)  (man, 1)
	(giant, 1)  (leap, 1)   (mankind, 1)



结果是对输入域中的单词进行计数,这无疑对处理索引十分有用。但是,现在假设有两个输入域,第一个是 one small step for man ,第二个是 one giant leap for mankind 。您可以在每个域 上执行 Map 函数和 Reduce 函数,然后将这两个键/值对列表应用到另一个 Reduce 函数,这时得到与前面一样的结果。换句话说,可以在输入域并行使用相同的操作,得到的结果是一样的,但速度更快。这便是 MapReduce 的威力;它的并行功能可在任意数量的系统上使用。图 2 以区段和迭代的形式演示这种思想。





           现在回到 Hadoop 上,它是如何实现这个功能的?一个代表客户机在单个主系统上启动的 MapReduce 应用程序称为 JobTracker。类似于 NameNode,它是 Hadoop 集群中惟一负责控制 MapReduce 应用程序的系统。在应用程序提交之后,将提供包含在 HDFS 中的输入和输出目录。JobTracker 使用文件块信息(物理量和位置)确定如何创建其他 TaskTracker 从属任务。MapReduce 应用程序被复制到每个出现输入文件块的节点。将为特定节点上的每个文件块创建一个惟一的从属任务。每个 TaskTracker 将状态和完成信息报告给 JobTracker。图 3 显示一个示例集群中的工作分布。




Hadoop 的其他应用程序

         Hadoop 是一个用于开发分布式应用程序的多功能框架;从不同的角度看待问题是充分利用 Hadoop 的好方法。回顾一下 第二张图, 那个流程以阶梯函数的形式出现,其中一个组件使用另一个组件的结果。当然,它不是万能的开发工具,但如果碰到的问题属于这种情况,那么可以选择使用 Hadoop。Hadoop 一直帮助解决各种问题,包括超大型数据集的排序和大文件的搜索。它还是各种搜索引擎的核心,比如 Amazon 的 A9 和用于查找酒信息的 Able Grape 垂直搜索引擎。Hadoop Wiki 提供了一个包含大量应用程序和公司的列表,这些应用程序和公司通过各种方式使用 Hadoop。

         当前,Yahoo! 拥有最大的 Hadoop Linux 生产架构,共由 10,000 多个内核组成,有超过 5PB 字节的储存分布到各个 DataNode。在它们的 Web 索引内部差不多有一万亿个链接。不过您可能不需要那么大型的系统,如果是这样的话,您可以使用 Amazon Elastic Compute Cloud (EC2) 构建一个包含 20 个节点的虚拟集群。事实上,纽约时报 使用 Hadoop 和 EC2 在 36 个小时内将 4TB 的 TIFF 图像 — 包括 405K 大 TIFF 图像,3.3M SGML 文章和 405K XML 文件 — 转换为 800K 适合在 Web 上使用的 PNG 图像。这种处理称为云计算,它是一种展示 Hadoop 的威力的独特方式。

  • 大小: 5.5 KB
  • 大小: 11 KB
  • 大小: 21.9 KB
分享到:
评论

相关推荐

    异地多机房Hadoop架构实践.pdf

    "异地多机房Hadoop架构实践" 在本文中,我们将探讨异地多机房Hadoop架构实践,讨论美团点评的Hadoop多机房服务架构实践和运营实践概述。我们将深入探讨异地多机房Hadoop架构的挑战和解决方案,并讨论美团点评的...

    徐老师大数据 Hadoop架构完全分析课程 Hadoop入门学习视频教程

    -001.Hadoop介绍.mp4 -002.VMware安装.mp4 -003.Ubuntu下载与虚拟机下安装.mp4 -004.Ubuntu常用命令.mp4 -005.Ubuntu目录和权限.mp4 ...030.Hadoop架构分析之启动脚本分析(yarn.cmd与yarn-evn.cmd命令).mp4

    计算机-后端-Hadoop架构在政府采购系统中的研究与应用.pdf

    计算机-后端-Hadoop架构在政府采购系统中的研究与应用.pdf 本文研究了Hadoop架构在政府采购系统中的应用,以解决政府采购系统中的数据存储和处理问题。通过对现有政府采购系统的分析,paper提出了基于Hadoop平台的...

    Hadoop架构讲解

    Hadoop架构包含多个组件,每个组件都有独特的功能,共同协作以实现大规模数据的存储和处理。本篇文章将详细介绍Hadoop架构,包括Hadoop分布式文件系统(HDFS),MapReduce编程模型,以及Hbase等主要组件。 HDFS是...

    Hadoop架构设计文档

    ### Hadoop架构设计关键知识点解析 #### 一、Hadoop架构概述 - **定义与愿景:**Hadoop被定义为一种灵活且可用的架构,它支持大规模的数据处理和计算任务在网络中的商品硬件上运行(“Flexible and available ...

    Netflix基于AWS的大数据平台Hadoop架构解析.docx

    【Netflix基于AWS的大数据平台Hadoop架构解析】 Netflix是一个全球知名的在线流媒体服务平台,其背后的大数据处理能力至关重要。为了支持海量数据的分析和决策,Netflix构建了一个基于Amazon Web Services (AWS)的...

    Hadoop技术-Hadoop架构简介.pptx

    Hadoop技术-Hadoop架构简介 Hadoop架构简介是Hadoop技术的核心组件之一,它提供了一个分布式计算框架,能够处理大量数据,并将其存储在多个服务器上。Hadoop架构简介主要包括HDFS、MapReduce、Yarn、HBase、Hive、...

    大数据平台MPP与Hadoop架构分析.docx

    大数据平台 MPP 与 Hadoop 架构分析 大数据平台 MPP 架构分析: MPP(Massively Parallel Processing)是大规模并行处理系统,由许多松耦合的处理单元组成。每个单元内的 CPU 都有自己私有的资源,如总线、内存、...

    Netflix基于AWS的大数据平台Hadoop架构解析.pdf

    Netflix的大数据平台基于Amazon Web Services (AWS)构建,利用Hadoop架构处理PB级别的海量数据。这一平台的独特之处在于它的灵活性和可扩展性,以及利用AWS的云服务来优化大数据处理能力。以下是Netflix Hadoop架构...

    hadoop架构十年发展与应用实践

    在了解Hadoop架构和应用实践的发展中,我们可以关注以下几个关键点: 1. Hadoop的发展历程:Hadoop自2006年1月28日诞生以来,已经经历了十年的发展。这期间,Hadoop生态系统已经从一个开源项目成长为一个覆盖大数据...

    基于Hadoop架构的分布式计算和存储技术及其应用.pdf

    Hadoop架构的核心组件包括HDFS和MapReduce。HDFS是一个分布式文件系统,它具有高容错性特点,允许数据跨多个存储设备进行冗余存储,即使个别节点发生故障,数据也不会丢失。HDFS的设计目标是支持大文件的存储,能够...

    Hadoop架构下的大数据安全存储技术研究.docx

    本文将深入探讨Hadoop架构在大数据处理中的应用,以及如何在Hadoop环境下实现大数据的安全存储。 首先,Hadoop的基本概念包括其核心的两个组件:HDFS(Hadoop Distributed File System)和MapReduce。HDFS是一种...

    基于Hadoop架构的国产化分布式集群平台.pdf

    基于Hadoop架构的国产化分布式集群平台的构建,不仅是一种技术上的革新,更是适应大数据时代需求的必然选择。 Hadoop是一种开源的分布式计算框架,其核心组件是Hadoop分布式文件系统(HDFS)。HDFS基于主从(Master...

    基于Hadoop架构的多重分布式BP神经网络的短期负荷预测方法.docx

    《基于Hadoop架构的多重分布式BP神经网络的短期负荷预测方法》 摘要: 本文主要探讨了如何利用Hadoop架构和分布式BP神经网络技术,来实现电力系统的短期负荷预测。随着大数据时代的到来,Hadoop作为大数据处理的...

    基于Hadoop架构的混合型DDoS攻击分布式检测系统.docx

    "基于Hadoop架构的混合型DDoS攻击分布式检测系统" 本文探讨了基于Hadoop架构的混合型DDoS攻击分布式检测系统,旨在解决传统的基于主机检测的解决方案所面临的挑战,如大量本地防护资源消耗、难以实时检测海量数据、...

    计算机-后端-Hadoop架构下近红外光谱大数据安全机制.pdf

    在当前的IT行业中,大数据处理已经成为一个至关重要的领域,特别是在Hadoop架构下,它为海量数据的存储和分析提供了高效且可扩展的解决方案。本文主要关注的是如何在Hadoop架构下确保近红外光谱大数据的安全性。 ...

    Hadoop架构实验ppt

    ### Hadoop架构实验知识点概述 #### 一、Hadoop安装部署模式详解 Hadoop支持三种主要的部署模式:单机模式、伪分布式模式以及分布式模式。 1. **单机模式**: - **定义**:这是Hadoop默认的运行模式,无需额外...

Global site tag (gtag.js) - Google Analytics