Hadoop的设计特点有哪些

17次阅读
没有评论

本篇内容主要讲解“Hadoop 的设计特点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让丸趣 TV 小编来带大家学习“Hadoop 的设计特点有哪些”吧!

Hadoop 历史

        雏形开始于 2002 年的 Apache 的 Nutch,Nutch 是一个开源 Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和 Web 爬虫。

        随后在 2003 年 Google 发表了一篇技术学术论文谷歌文件系统(GFS)。GFS 也就是 google File System,google 公司为了存储海量搜索数据而设计的专用文件系统。

        2004 年 Nutch 创始人 Doug Cutting 基于 Google 的 GFS 论文实现了分布式文件存储系统名为 NDFS。

        2004 年 Google 又发表了一篇技术学术论文 MapReduce。MapReduce 是一种编程模型,用于大规模数据集(大于 1TB)的并行分析运算。

        2005 年 Doug Cutting 又基于 MapReduce,在 Nutch 搜索引擎实现了该功能。

        2006 年,Yahoo 雇用了 Doug Cutting,Doug Cutting 将 NDFS 和 MapReduce 升级命名为 Hadoop,Yahoo 开建了一个独立的团队给 Goug Cutting 专门研究发展 Hadoop。

        不得不说 Google 和 Yahoo 对 Hadoop 的贡献功不可没。

Hadoop 核心

        Hadoop 的核心就是 HDFS 和 MapReduce,而两者只是理论基础,不是具体可使用的高级应用,Hadoop 旗下有很多经典子项目,比如 HBase、Hive 等,这些都是基于 HDFS 和 MapReduce 发展出来的。要想了解 Hadoop,就必须知道 HDFS 和 MapReduce 是什么。

HDFS

HDFS(Hadoop Distributed File System,Hadoop 分布式文件系统),它是一个高度容错性的系统,适合部署在廉价的机器上。HDFS 能提供高吞吐量的数据访问,适合那些有着超大数据集(large data set)的应用程序。

HDFS 的设计特点是:

1、大数据文件,非常适合上 T 级别的大文件或者一堆大数据文件的存储,如果文件只有几个 G 甚至更小就没啥意思了。

2、文件分块存储,HDFS 会将一个完整的大文件平均分块存储到不同计算器上,它的意义在于读取文件时可以同时从多个主机取不同区块的文件,多主机读取比单主机读取效率要高得多得都。

3、流式数据访问,一次写入多次读写,这种模式跟传统文件不同,它不支持动态改变文件内容,而是要求让文件一次写入就不做变化,要变化也只能在文件末添加内容。

4、廉价硬件,HDFS 可以应用在普通 PC 机上,这种机制能够让给一些公司用几十台廉价的计算机就可以撑起一个大数据集群。

5、硬件故障,HDFS 认为所有计算机都可能会出问题,为了防止某个主机失效读取不到该主机的块文件,它将同一个文件块副本分配到其它某几个主机上,如果其中一台主机失效,可以迅速找另一块副本取文件。

HDFS 的关键元素:

Block:将一个文件进行分块,通常是 64M。

NameNode:保存整个文件系统的目录信息、文件信息及分块信息,这是由唯一一台主机专门保存,当然这台主机如果出错,NameNode 就失效了。在 Hadoop2.* 开始支持 activity-standy 模式 —- 如果主 NameNode 失效,启动备用主机运行 NameNode。

DataNode:分布在廉价的计算机上,用于存储 Block 块文件。

Hadoop 的设计特点有哪些
 

MapReduce

通俗说 MapReduce 是一套从海量·源数据提取分析元素最后返回结果集的编程模型,将文件分布式存储到硬盘是第一步,而从海量数据中提取分析我们需要的内容就是 MapReduce 做的事了。

下面以一个计算海量数据最大值为例:一个银行有上亿储户,银行希望找到存储金额最高的金额是多少,按照传统的计算方式,我们会这样:

Java 代码  Hadoop 的设计特点有哪些

Long moneys[] … 

Long max = 0L; 

for(int i=0;i moneys.length;i++){ 

 if(moneys[i] max){ 

 max = moneys[i]; 

 } 

  如果计算的数组长度少的话,这样实现是不会有问题的,还是面对海量数据的时候就会有问题。

MapReduce 会这样做:首先数字是分布存储在不同块中的,以某几个块为一个 Map,计算出 Map 中最大的值,然后将每个 Map 中的最大值做 Reduce 操作,Reduce 再取最大值给用户。

Hadoop 的设计特点有哪些
        MapReduce 的基本原理就是:将大的数据分析分成小块逐个分析,最后再将提取出来的数据汇总分析,最终获得我们想要的内容。当然怎么分块分析,怎么做 Reduce 操作非常复杂,Hadoop 已经提供了数据分析的实现,我们只需要编写简单的需求命令即可达成我们想要的数据。

到此,相信大家对“Hadoop 的设计特点有哪些”有了更深的了解,不妨来实际操作一番吧!这里是丸趣 TV 网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!