预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10
亲,该文档总共24页,到这已经超出免费预览范围,如果喜欢就直接下载吧~
如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
hadoop学习笔记之一:初
2011年10月20日
14:54识hadoop
2010年12月14日由yedu留言»
引言
最近了解到淘宝使用hadoop的项目多了起来,hadoop对于许多测试
人员来说或许是个新鲜玩儿,因此,把自己之前整理的学习笔记整
理发上来,希望通过此系列文章快速了解Hadoop的基本概念和架构
原理,从而助于hadoop相关项目的测试理解和沟通。
Hadoop简介
Hadoop是一个实现了MapReduce计算模型的开源分布式并行编程
框架,借助于Hadoop,程序员可以轻松地编写分布式并行程序,将
其运行于计算机集群上,完成海量数据的计算。
如果你对Hadoop不熟悉,下面这些名词你或许耳熟能详,Google
FileSystem、GoogleMap/Reduce模型、lucene、Nutch、阿里云
梯、云计算等,他们都与Hadoop有着或深或浅的关系,原来Hadoop
离我们如此之近,那么花些时间继续了解它吧。
Hadoop的架构
先抛开Hadoop,简单地想想看,假设我们需要读一个10TB的数据
集,怎么办?在传统的系统上,这需要很长时间,因为硬盘的传输
速度是受限的。一个简单的办法是将数据存储在多个磁盘上,同时
从多个磁盘并行读取数据,这将大大减少读取时间。
上面的方案需要解决两个主要问题,一个是硬件故障,要保证其中
一个硬件坏了但数据仍然完整,Hadoop的文件系统HDFS(Hadoop
DistributedFilesystem)提供了一种解决方式。另外一个问题是
如何并行读取数据并合并保证正确性,通过MapReduce的编程模型
可以简化这个问题。简而言之,Hadoop提供了一个稳定的共享存储
和分析系统,存储由HDFS实现,分析由MapReduce实现,这两者构
成了Hadoop的核心功能。
•HDFS
HDFS集群有两种节点,以管理者-工作者模式运行,即1个名称节点
(NameNode)和N个数据节点(DataNode)。其底层实现是将文件
切割成块,然后将这些块存储在不同的DataNode上。为了容错容
灾,每个块还被复制多份存储在不同的DataNode上。NameNode管理
文件系统的命名空间,记录每个文件被切割成了多少块,这些块可
以从哪些DataNode上获得,以及各个DataNode的状态信息等。下图
是Hadoop集群的简化视图
HDFS内部通信都是基于标准的TCP/IP协议,NameNode依赖来自每
个DataNode的定期心跳(heartbeat)消息。每条消息都包含一
分区hadoop的
个DataNode的定期心跳(heartbeat)消息。每条消息都包含一
个块报告,NameNode可以根据这个报告验证块映射和其他文件系
统元数据。如果DataNode不能发送心跳消息,NameNode将采取
修复措施,重新复制在该节点上丢失的块。更多HDFS的架构和设计
请阅读
http://hadoop.apache.org/common/docs/current/cn/hdfs_desig
n.html
•MapReduce
上图说明了用MapReduce来处理大数据集的过程,这个
MapReduce的计算过程简而言之,就是将大数据集分解为成若干个
小数据集,每个(或若干个)数据集分别由集群中的一个结点(一般
就是一台普通的计算机)进行处理并生成中间结果,然后这些中间
结果又由大量的结点进行合并,形成最终结果。
计算模型的核心是Map和Reduce两个函数,这两个函数由用户
负责实现,功能是按一定的映射规则将输入的对转换成另一个或
一批对输出。下图是一个简单的MapReduce示例,实现字数统计功
能。
•分布式并行运算
Hadoop的分布式并行运算有一个作为主控的JobTracker,用于调
度和管理其它的TaskTracker,JobTracker可以运行于集群中任
一台计算机上。TaskTracker负责执行任务,必须运行于DataNode
上,即DataNode既是数据存储结点,也是计算结点,这样可以减
少数据在网络上的传输,降低对网络带宽的需求。JobTracker将
分区hadoop的
Map任务和Reduce任务分发给空闲的TaskTracker,让这些任务
并行运行,并负责监控任务的运行情况。如果某一个TaskTracker
出故障了,JobTracker会将其负责的任务转交给另一个空闲的
TaskTracker重新运行。
•Hadoop的其他子项目
上面介绍的MapReduce、HDFS、分布式并行运算是Hadoop最核心的
功能。还有一些子项目提供补充性服务。如hive(提供基于sql的
查询语言查询存