hadoop认识总结Word文档格式.docx
《hadoop认识总结Word文档格式.docx》由会员分享,可在线阅读,更多相关《hadoop认识总结Word文档格式.docx(6页珍藏版)》请在冰豆网上搜索。
MapReduce的思想是由Google的一篇论文所提及而被广为流传的,简单的一句话解释MapReduce就是“任务的分解与结果的汇总”。
HDFS是Hadoop分布式文件系统(HadoopDistributedFileSystem)的缩写,为分布式计算存储提供了底层支持。
MapReduce从它名字上来看就大致可以看出个缘由,两个动词Map和Reduce,“Map(展开)”就是将一个任务分解成为多个任务,“Reduce”就是将分解后多任务处理的结果汇总起来,得出最后的分析结果。
这不是什么新思想,其实它的本质就是一种“分治法”的思想,把一个巨大的任务分割成许许多多的小任务单元,最后再将每个小任务单元的结果汇总,并求得最终结果。
在分布式系统中,机器集群就可以看作硬件资源池,将并行的任务拆分,然后交由每一个空闲机器资源去处理,能够极大地提高计算效率,同时这种资源无关性,对于计算集群的扩展无疑提供了最好的设计保证。
任务分解处理以后,那就需要将处理以后的结果再汇总起来,这就是Reduce要做的工作。
多任务、并行计算、云计算,这些词汇并不是新名词,在hadoop出现之前,甚至在google出现之前,就已经出现过分布式系统和分布式程序,hadoop新就新在它解决了分布式系统复杂的底层细节,程序员可以在不了解底层分布式细节的情况下编写高效的分布式程序,hadoop服务会自动将任务分配给不同的计算机节点,由这些节点计算最后汇总并处理计算结果。
利用hadoop,程序作者可以将精力放在具体的业务逻辑上,而不是繁琐的分布式底层技术细节。
另外,传统的分布式系统一般会利用若干台高性能的计算机,而hadoop则只需将大量普通的pc机连系在一起,组成一个分布式集群。
Hadoop是一个能够对大量数据进行分布式处理的软件框架。
但是Hadoop是以一种可靠、高效、可伸缩的方式进行处理的。
Hadoop是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。
Hadoop是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。
Hadoop还是可伸缩的,能够处理PB级数据。
此外,Hadoop依赖于社区服务器,因此它的成本比较低,任何人都可以使用。
Hadoop带有用Java语言编写的框架,因此运行在Linux生产平台上是非常理想的。
Hadoop上的应用程序也可以使用其他语言编写,比如C++。
Hadoop有许多元素构成。
其最底部是HadoopDistributedFileSystem(HDFS),它存储Hadoop集群中所有存储节点上的文件。
HDFS(对于本文)的上一层是MapReduce引擎,该引擎由JobTrackers和TaskTrackers组成。
二、Hadoop下几个项目构成
其中MapReduce和hdfs是hadoop的核心,在很多时候,说hadoop往往就是指MapReduce和hdfs,其它项目是与它相关的配合使用的项目。
1、HadoopCommon:
Hadoop体系最底层的一个模块,为Hadoop各子项目提供各种工具,如:
配置文件和日志操作等。
2、HDFS:
分布式文件系统,提供高吞吐量的应用程序数据访问,对外部客户机而言,HDFS就像一个传统的分级文件系统。
可以创建、删除、移动或重命名文件,等等。
但是HDFS的架构是基于一组特定的节点构建的,这是由它自身的特点决定的。
这些节点包括NameNode(仅一个),它在HDFS内部提供元数据服务;
DataNode,它为HDFS提供存储块。
由于仅存在一个NameNode,因此这是HDFS的一个缺点(单点失败)。
存储在HDFS中的文件被分成块,然后将这些块复制到多个计算机中(DataNode)。
这与传统的RAID架构大不相同。
块的大小(通常为64MB)和复制的块数量在创建文件时由客户机决定。
NameNode可以控制所有文件操作。
HDFS内部的所有通信都基于标准的TCP/IP协议。
3、MapReduce:
一个分布式海量数据处理的软件框架集计算集群,它的原理如下图所示。
4、Avro:
dougcutting主持的RPC项目,主要负责数据的序列化。
有点类似Google的protobuf和Facebook的thrift。
avro用来做以后hadoop的RPC,使hadoop的RPC模块通信速度更快、数据结构更紧凑。
5、Hive:
类似CloudBase,也是基于hadoop分布式计算平台上的提供datawarehouse的sql功能的一套软件。
使得存储在hadoop里面的海量数据的汇总,即席查询简单化。
hive提供了一套QL的查询语言,以sql为基础,使用起来很方便。
6、HBase:
基于HadoopDistributedFileSystem,是一个开源的,基于列存储模型的可扩展的分布式数据库,支持大型表的存储结构化数据。
7、Pig:
是一个并行计算的高级的数据流语言和执行框架,SQL-like语言,是在MapReduce上构建的一种高级查询语言,把一些运算编译进MapReduce模型的Map和Reduce中,并且用户可以定义自己的功能。
8、ZooKeeper:
Google的Chubby一个开源的实现。
它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:
配置维护、名字服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
9、Chukwa:
一个管理大型分布式系统的数据采集系统由yahoo贡献。
10、Cassandra:
无单点故障的可扩展的多主数据库
11、Mahout:
一个可扩展的机器学习和数据挖掘库
三、hadoop的应用场景
Hadoop项目是Lucnce搜索引擎项目的一个部分而发展以来的,也就是说,它最初是为了解决搜索引擎领域里的海量数据处理问题而诞生的,由此也不难理解它的应用场景,它是专为处理海量数据而生的。
首先,什么是海量数据?
1G算不算?
10G算不算?
可以明确的说,这个数量级的数据完全不能算是海量,hadoop是专门处理TB甚至PB级数据的。
当数据量庞大到TB级它的作用太能明显体现。
1.在线旅游:
目前全球范围内80%的在线旅游网站都是在使用Cloudera公司提供的Hadoop发行版,其中SearchBI网站曾经报道过的Expedia也在其中。
2.移动数据:
Cloudera运营总监称,美国有70%的智能手机数据服务背后都是由Hadoop来支撑的,也就是说,包括数据的存储以及无线运营商的数据处理等,都是在利用Hadoop技术。
3.电子商务:
这一场景应该是非常确定的,eBay就是最大的实践者之一。
国内的电商在Hadoop技术上也是储备颇为雄厚的。
4.能源开采:
美国Chevron公司是全美第二大石油公司,他们的IT部门主管介绍了Chevron使用Hadoop的经验,他们利用Hadoop进行数据的收集和处理,其中这些数据是海洋的地震数据,以便于他们找到油矿的位置。
那么,哪些行业不适合使用hadoop呢?
Hadoop的突出优点是利用较低性能的计算机,对海量数据的分布式处理,它的重点是对数据的处理、分析、挖掘。
因此,对于那些需要大量事务处理,实时响应等应用时不适合的,例如,银行系统等。
四、认识总结
Hadoop实际上就是一个云计算或者说分布式计算的工具,mapreduce是它的计算引擎,hdfs是它的文件系统,而其它项目如hbase、hive等都是在它基础上与它配套使用的外围软件。
以上这些是我对hadoop技术的初步认识,除了对它的基本认识之外,我自己曾经按照网上和书上的说明,搭建过一个基本的hadoop环境,运行了里面的示例程序。
至于更多的技术细节,尚未作深入了解。