Hadoop生态圈之基础组成部分HDFS文件系统

       谷歌关于大数据的三篇文章之一就是Google File System,专门存储超大数据文件;同时,HDFS分布式文件系统,为整个生态圈提供最基础的文件存储服务。理论依据GFS与HDFS相同,Hadoop整个生态圈都是开源的。

      2002年开始创建hadoop,最初版本遇到了瓶颈,最主要是可拓展问题,不能解决数十亿的网页存储问题。2003年谷歌分布式文件系统论文发布(GFS),Nutch项目组决定完成一个开源实现;接着2004年谷歌发布了另外一个关于大数据的重要论文,分布式计算框架Map-Reduce。由于谷歌未开源分布式文件系统和分布式计算框架源代码,Nutch项目组基于两篇论文思想,开源出来NDFS和MapReduce;至2006初成为Lucene的一个子项目,成为Hadoop。

     由Hadoop来源来看,主要包含两部分内容就是(HDFS和MapReduce),一个解决大数据文件的分布式存储,另一个解决大数据文件分布式计算。重要参考设计思想是谷歌分布式文件系统论文,谷歌分布式计算框架论文。经过版本的更迭升级,Hadoop项目分割成三个独立的模块,Common、HDFS、MapReduce。

Hadoop特性:易于编程(当时确实如此,设计目标)、良好的拓展性、高容错性。

Map-Reduce计算框架,用户需要编写两个函数,map()和reduce()函数。

        Map()函数:主要是以key-value作为输入,映射成另外一种key/value作为中间输出写入本地磁盘。Map-Reduce计算框架会自动将这些中间数据按照key值(映射后的key)进行聚集,且key值相同的数据被统一交给reduce函数处理。聚集策略:默认是哈希取模。

       Reduce()函数:以key及对应的value列表作为输入,经过计算合并相同key的value值后,产生最终的key-value写入HDFS。

基础详细内容可参考中文网站:http://hadoop.apache.org/docs/r1.0.4/cn/

MapReduce能够解决的问题特点:任务可以被分解为多个子问题,且这些子问题相对独立,彼此之间不会有牵制,可并行计算处理这些问题。

其中比较复杂的应用问题:

(1)排行榜(Top K问题)热搜最高的几个词。

(2)K-means聚类(无监督学习算法),基于距离的聚类算法。认为两个对象的距离越近,其相似度就越大。首先随机选择 K 个对象作为初始中心点, 然后不断迭代计算, 直到满足终止条件(达到迭代次数上限或者数据点到中心点距离的平方和最小)。 在第 I 轮迭代中, map() 函数计算每个对象到中心点的距离, 选择距每个对象(object) 最近的中心点(center_point), 并输出 <center_point, object > 对。 reduce() 函数计算每个聚类中对象的距离均值, 并将这 K 个均值作为下一轮初始中心点。

(3)贝斯分类问题。该问题分两个步骤,1是训练样本,2是分类。

未能和不能解决的应用问题:

Fibonacci 数值计算。像这种不能分解成若干互不相干子问题,不能用MapReduce解决。

层次聚类法。
 

Map-Reduce编程模型分布式编程方法:

1)迭代。遍历输入数据并将其解析成key-value。

2)将输入Key-Value对映射成另外一种Key-value对。

3)依据key对中间数据进行分组grouping。

4)依组为单位对数据进行规约(reduce)。

5)迭代。将最终的key-value保存到输出文件。

Java基本的api主要的编程组件有,InputFormat、OutputFormat、Mapper、Reducer、Partioner。

 

Hadoop如何实现HDFS文件存储系统的呢?

 


 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值