What's Hadoop

来源:互联网 发布:淘宝网法院司法拍卖 编辑:程序博客网 时间:2024/06/06 02:47

What's Hadoop?

一、hadoop起源

hadoop的发起者是Doug Cutting,同时他也是Lucene、Nutch的发起者。此人伟大之处在于一生致力于开源产品的研发,“把高深莫测的搜索技术,贡献给普罗大众”,被人们称为盗火者。

从时间顺序上,Lucene->Nutch->hadoop,每个项目在逻辑上都是前一个项目的演进。Lucene是第一个提供全文文本搜索的开源函数库,是一个功能全面的文本索引和查询库。而Nutch应该是落后于同是Web所有引擎的Google,hadoop则是在Google文件系统和Mapreduce框架基础上加以扩展形成的。

从产品功能上,Lucene是一个功能全面的文本索引和查询库。给定一个文本集合,开发者就可以使用lucene引擎方便地在文档上添加所有功能。桌面搜索、企业搜索,以及许多领域特定的搜索引擎使用的都是lucene。作为lucene的扩展,Nutch以lucene为核心建立了一个完整的Web搜索引擎。Nutch为html提供了解析器,还具有网页抓取工具、链接图形数据库和其他网络搜索引擎的额外组件,除了增加了像抓取器和解析器这样的组件,网络搜索引擎与文档搜索引擎的区别在于规模。Lucene的目标是索引数百万的文档,但Nutch应该能够处理数十亿的网页,而不会带来过度的操作开销。通过借鉴了Google的GFS和Mapreduce框架,Nutch进一步扩展,开始能够运行在几十个节点的集群上处理数十亿的网页,实现了分布式存储与计算处理,同时增加了冗余、自动故障恢复和负载均衡等功能。Cutting的目标是将hadoop发展成云计算领域的Redhat。

二、hadoop组成

hadoop的组成要从架构组件、构造模块两个层面来看。

架构组件来讲,hadoop主要由HDFS和MapReduce组成。

HDFS是Google File System(GFS)的开源实现,MapReduce是Google MapReduce的开源实现。

HDFS实现对大数据的分布式(集群节点)存储、备份,所以HDFS可以看做是为海量数据提供的稳定的、安全的数据容器。MapReduce则实现对这些分布式数据进行并行处理。

构造模块来讲,hadoop包括:NameNode;DataNode;JobTracker;TaskTracker;后来还引入了SecondNameNode。

NameNode:指导各DataNode执行底层的I/O任务,是HDFS的书记员,它跟踪文件如何被分割成文件块,而这些块分别被哪些DataNode存储,以及HDFS整体运行状态是否正常。由于运行NameNode消耗大量的内存和I/O资源,所以部署NameNode的服务器通常不会存储用户数据或者执行MapReduce计算任务。

DataNode:作为大数据文件块的数据容器,实现将HDFS数据块读取或者写入到本容器中。每个DataNode存储若干个数据块,而每个数据块同时存储在若干个DataNode,以实现每个数据块的分节点备份。DataNode响应来自HDFS客户机的读写请求,同时还响应来自NameNode的创建、删除和复制数据块的命令,而每个DataNode的存储变化都会记录在NameNode中。NameNode依赖每个DataNode的定期心跳(heartbeat)消息,每条消息都包含一个块报告,NameNode根据这个报告验证块映射和其他文件系统元数据。如果DataNode不能发送心跳消息,NameNode将采取修复措施,重新复制在该节点丢失的块。

JobTracker:每个hadoop集群只有一个JobTracker,它通常运行在服务器集群的主节点上,是应用程序和hadoop之间的纽带,一旦部署代码到集群上,JobTracker就会确定执行计划,包括决定处理那些文件、为不同的任务分配节点以及监控所有任务的运行。如果任务失败,JobTracker将自动重启任务。

TaskTracker:部署于每个DataNode节点上,管理该节点上任务的执行情况。每个TaskTracker负责执行由JobTracker分配的单项任务,虽然每个节点仅有一个TaskTracker,但每个TaskTracker可以生成多个JVM来并行处理许多map或reduce任务。

SecondeNameNode(SNN):像NameNode一样,每个集群有一个SNN,它通常也独占一台服务器,该服务器不会运行其他的DataNode或TaskTracker,SNN与NameNode的不同在于它不接收或者记录HDFS的任何实时变化,它只与NameNode通讯,根据配置的时间间隔获取HDFS元数据的快照,这样就可以有助于减少停机的时间并降低数据丢失的风险。

三、hadoop特点

hadoop是一个能够让用户轻松搭建和使用的分布式计算平台,用户可以轻松地在hadoop上开发和运行处理海量数据的应用程序。它主要由以下几个优点:

1.高可靠性。hadoop按位存储和处理数据的能力值得人们信赖。

2.高扩展性。hadoop是在可用的计算机集群间分配数据并完成计算任务的,这些集群可以方便地扩展到数以千计的节点中。

3.高效性。hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。

4.高容错性。hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。

5.低成本。与一体机、商用数据仓库以及数据集市相比,hadoop是开源的,项目的软件成本会大大降低。

hadoop带有用Java语言编写的框架,因此运行在Linux生产平台上是非常理想的。hadoop上的应用程序也可以使用其他语言编写,比如C++。

四、hadoop应用

hadoop主要应用在两个方面:Web搜索以及大数据处理。

hadoop最常见的应用之一是Web搜索,它将Web爬行器检索到的文本Web页面作为输入,并且将这些页面上的单次的频率报告作为结果,然后可以在整个Web搜索过程中使用这个结果从已定义的搜索参数中识别内容。

hadoop得以在大数据处理应用中广泛应用得益于其自身在数据提取、转换和加载(ETL)方面的天然优势,数据挖掘、数据仓库等可基于hadoop平台加以实现。

 

参考:

1.百度百科:hadoop

2.Hadoop in Action[美]Chuck Lam等 人民邮电出版社

0 0
原创粉丝点击