使用Linux 和Hadoop 进行分布式计算
人们每天都依赖搜索引擎以从 Internet 的海量数据中找到特定的内容,但您曾经想过这些搜索是如何执行的吗?一种方法是 Apache 的 Hadoop,它是一个能够对海量数据进行分布式处理的软件框架.Hadoop 的一个应用是并行索引 Internet Web 页面.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 运行在 Linux 生产平台上是非常理想的, Hadoop 架构 Hadoop 有许多元素构成.最底部是 Hadoop Distributed File System(HDFS),它存储 Hadoop 集群中所有存储节点上的文件.HDFS(对于本文)的上一层是 MapReduce 引擎,该引擎由 JobTrackers 和 TaskTrackers 组成. HDFS 对外部客户机而言,HDFS 就像一个传统的分级文件系统.可以创建、删除、移动或重命名文件,等等.但是 HDFS 的架构是基于一组特定的节点构建的(参见图 1),这是由它自身的特点决定的.这些节点包括 NameNode(仅一个),它在 HDFS 内部提供元数据服务;DataNode,它为 HDFS 提供存储块. 图 1. Hadoop 集群的简化视图
存储在 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 的本地文件系统上.FsIm |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |