专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »编程综合 » hadoop:使用 Linux 和 Hadoop 进行分布式计算 »正文

hadoop:使用 Linux 和 Hadoop 进行分布式计算

来源: 发布时间:星期二, 2009年2月3日 浏览:20次 评论:0
  Hadoop 由 Apache Software Foundation 公司于 2005 年秋天作为 Lucene 子项目 Nutch 部分正式引入它受到最先由 Google Lab 开发 MapReduce 和 Google File 启发2006 年 3 月份MapReduce 和 Nutch Distributed File (NDFS) 分别被纳入称为 Hadoop 项目中

  Hadoop 是最受欢迎在 Internet 上对搜索关键字进行内容分类工具但它也可以解决许多要求极大伸缩性问题例如如果您要 grep 个 10TB 巨型文件会出现什么情况?在传统系统上这将需要很长时间但是 Hadoop 在设计时就考虑到这些问题因此能大大提高效率

  先决条件

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

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

  Hadoop 架构

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

  HDFS

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

  图 1. Hadoop 集群简化视图



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

  NameNode

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

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

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

  DataNode

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

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

  文件操作

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

  Linux 集群

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

  Hadoop 应用

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

  MapReduce

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

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

  这里提供个举例帮助您理解它假设输入域是 _disibledevent=>

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

  图 3. 显示处理和存储物理分布 Hadoop 集群



  Hadoop 这个特点非常重要它并没有将存储移动到某个位置以供处理而是将处理移动到存储这通过根据集群中节点数调节处理因此支持高效数据处理

  Hadoop 其他应用

  Hadoop 是个用于开发分布式应用多功能框架;从区别角度看待问题是充分利用 Hadoop 好思路方法回顾下 图 2那个流程以阶梯形式出现其中个组件使用另个组件结果当然它不是万能开发工具但如果碰到问题属于这种情况那么可以选择使用 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 威力独特方式

  结束语

  毫无疑问Hadoop 正在变得越来越强大从使用它应用前途是光明您可以从 参考资料 小节更多地了解 Hadoop 及其应用包括设置您自己 Hadoop 集群建议



0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: