Hadoop学习历程[0]

引言
雲端計算正夯,其實已經夯很久了,但到底夯不夯得起來我也不知道。根據之前聽到的息,Yahoo, Google, Microsoft, IBM, Oracle, HP, Dell, Sun甚至Amazon,大家有錢的出錢,有人的出人,有機器的出機器,都想在這領域上打下一片天地。由于intel给了这次有幸接触Hadoop和云计算的机会,于是开始学习其了ubuntu和Hadoop。
2009年5月3日开始了ubuntu历程,也在这一天的晚些时候配置起了hadoop0.18.3。果然像同学说的一样,配置hadoop在单机上并不困难。但是不知道如果是分布式状态下会是如何。
首先在2009年4月下旬我大概用一个下午的时间在网络上搜索了一下关于Hadoop的相关一些资料。其实收益最大的应该还是从Hadoop的官方网站上学习到的,当然由于它是开源软件加之云计算的火爆程度,各大Blog的博主也相应记录了Hadoop的一些原理。不过班门弄斧的居多。
=====================================================
各个比较重要的网站

首先Hadoop官方网站[这里主要还是英文的文档,并且在实时更新]:http://hadoop.apache.org/core/?

开源软件 源码当然很重要,有下载的地址并且API的详尽描述:http://hadoop.apache.org/core/docs/current/api/

Hadoop的官方网站:http://www.hadoop.org/

Hadoop0.18.2的中文文档:http://hadoop.apache.org/core/docs/r0.18.2/cn/quickstart.html

=====================================================

接下来介绍一下,Hadoop的基本架构和思想

首先说一下HADOOP是怎么来的?Hadoop由Lucene和Nutch而来。

Lucene,并不是一个应用程序,而是提供了一个纯JAVA的高性能全文搜索引擎工具包,它可以非常方便的嵌入到各种实际应用中以实现全文搜索/索引的功能。

Nutch则是一个应用程序,是一个以Lucene为基础实现的搜索引擎应用,Lucene为Nutch提供了文本搜索和索引的API,Nutch不光是具有搜索的功能,同时还具有数据抓取的功能。在Nutch8.0版本之前,HADOOP还是属于Nutch的一部分,而从Nutch8.0版本较之以前的版本构架上有了根本性的变化,那就是构建在HADOOP的基础之上了。在HADOOP中实现了GOOGLE的GFS和MapReduce算法,使HADOOP成为了一个分布式的计算平台。

其实HADOOP并不仅仅是一个用于存储的分布式文件系统HDFS,而是设计用来在由通用计算设备组成的大型集群上执行分布式应用的一个框架。

HADOOP由两个部分组成——HDFS MapReduce:

1 HDFS -- Hadoop Distributed File System

HDFS具有高容错性,并且可以被部署在低价的硬件设备上。HDFS很适合有大量数据集的应用,并且提供了对数据读写的高吞吐率。HDFS是一个在master/slave的结构,就通常的部署来说,在master上运行了一个Namenode,而在每一个slave上运行一个Datanode。

HDFS支持传统的层次文件架构,同现有的一些文件系统在操作上非常类似。比如你可以创建或者删除一个文件,把一个文件从一个目录转移到另外一个目录之上,重命名等操作。Namenode管理着整个的分布式文件系统,对文件系统的操作,例如建立、删除文件和文件夹都是通过Namenode来控制的。

注意修改文件直接可以在Datanode上进行。那么当更名了Datanode的文件名之后,Namenode会不会找到相应的文件呢?采用什么样的策略来进行维护这个地址簿呢?

HDFS Architecture

 

从上图可以看出来,Namenode,Datanode, Client之间的通信都是建立在TCP/IP的基础之上的。当Client要执行一个写入操作的时候,命令并不是马上发送到Namenode,Client首先是在本机上临时文件夹/lost+found缓存这些数据,当临时文件夹中的数据达到了设定的Block的值(默认是64M)时,Client便会通知Namenode,Namenode便会相应Client的RPC请求,将文件名插入到文件系统层次中并且在Datanode中找到一块存放该数据的Block,同时将该Datanode及对应的数据块信息告诉Client,Client便会将这些本地临时文件夹中的数据块写入指定的数据节点上。

HDFS同时采取了副本策略,其目的是保证系统的可靠性,可用性。HDFS的副本放置策略是三个副本,一个放置在本节点上,一个放置在同一机架中的另一个节点上,还有一个副本则放置在另一个不同的机架的一个节点上。注意这一特性有待考证,因为0.12还没有实现

2 Map Reduce

MapReduce是Google的一项重要的技术,它是一个编程模型,用以进行大量的数据的计算。对于大数据量的计算而言,通常采用的处理方式就是并行计算。至少在现阶段,对许多开发人员来说并行计算还只是一个非常遥远的东西。MapReduce就是一种简化并行计算的编程模型。它让那些没有多少并行计算知识和经验的开发人员也可以采用并行应用。

MapReduce名字起源于这个模型中两个核心的操作:MAP和REDUCE。熟悉al Programming的人就会知道。MAP是把一组数据一对一地映射到另外一组数据上,其映射的规则由一个函数来指定,比如【1,2,3,4】 --> 【2,4,6,8】。REDUCE则是对一组数据进行规约,规约的规则也是由函数来指定。比如【1,2,3,4】进行求和规约则为:10。可以看看MapReduce:The Free Lunch Is Not Over!

 

 

下一篇将描述HADOOP单机模式和伪分布式模式的配置和部署。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值