使用Linux和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 组成。
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 索引内部差不多有一万亿个链接。不过您可能不需要那么大型的系统,如果是这样的话,您可以使用 AmazonElastic Compute Cloud (EC2) 构建一个包含 20 个节点的虚拟集群。事实上,纽约时报 使用Hadoop 和 EC2 在 36 个小时内将 4TB 的 TIFF 图像 — 包括 405K 大 TIFF 图像,3.3M SGML 文章和405K XML 文件 — 转换为 800K 适合在 Web 上使用的 PNG 图像。这种处理称为云计算,它是一种展示 Hadoop的威力的独特方式。
页:
[1]