先决条件
        Hadoop 是一个能够对大量数据进行分布式处理的软件框架。但是 Hadoop 是以一种可靠、高效、可伸缩的方式进行处理的。Hadoop 是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。Hadoop 是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。Hadoop 还是可伸缩的,能够处理 PB 级数据。此外,Hadoop 依赖于社区服务器,因此它的成本比较低,任何人都可以使用。

        您可能已经想到,Hadoop 运行在 Linux 生产平台上是非常理想的,因为它带有用 Java™ 语言编写的框架。Hadoop 上的应用程序也可以使用其他语言编写,比如 C++。

Hadoop架构

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

Hadoop 集群的简化视图

Hadoop 应用程序

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

MapReduce 流程的概念流

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

显示处理和存储的物理分布的 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 的威力的独特方式。


转载于:https://blog.51cto.com/hadoop/489906