前言
虽然大部分人对历史不是太过重视,使用软件和现有的程序的时候仅仅只是当作工具,实际上技术的发展一般都是有迹可循的,当然除了黑科技以外。了解技术的发展历史,可以帮助我们随着它的发展轨迹和思路,深入的了解这个技术。可根据个人需要跳过历史介绍,另此文只适宜初学者用于了解概念。
详细内容请观看hadoop官方网站:http://hadoop.apache.org/releases.html
发展历史
- 雏形开始于2002年的Apache的Nutch(一种搜索引擎,包括全文搜索和Web爬虫等工具)
- 2003年Google发表了一篇技术学术论文谷歌文件系统(GFS)
- 2004年Nutch创始人Doug Cutting基于Google的GFS论文创作了分布式文件存储系统NDFS
- 2004年Google又发表了一篇技术学术论文MapReduce(MapReduce是一种编程模型,用于大规模数据的并行分析运算)
- 2005年Doug Cutting又基于MapReduce,在Nutch搜索引擎实现了其功能
- 2006年,Doug Cutting将NDFS和MapReduce升级命名为Hadoop
核心
核心就是HDFS和MapReduce,两者只是理论基础,不是具体可使用的高级应用
人们提起Hadoop常说的HBase、Hive等都是基于HDFS和MapReduce发展出来的
必要概念总结
一、HDFS(Hadoop分布式文件系统)
- HDFS是Hadoop体系中数据存储管理的基础。
- 它是一个高度容错的系统,能检测和应对硬件故障,用于在低成本的通用硬件上运行。
- 简化了文件的一致性模型,通过流式数据访问,提供高吞吐量应用程序数据访问功能,适合带有大型数据集的应用程序。
- 它提供了一次写入多次读取的机制,数据以块的形式,同时分布在集群不同物理机器上。
设计特点:
- 大数据。适合TB级别的大文件存储。
- 文件分块存储。HDFS会将大文件平均分块存储到不同计算节点上,读取文件时会同时从多个计算节点上读取不同块的文件,多主机读取比单主机读取效率要高得多。
- 流式数据访问,一次写入多次读取。它不支持动态改变文件内容,而是要求让文件一次写入就不做变化,要变化也只能在文件末添加内容。
- 支持廉价硬件。可以应用在普通计算机上,仅仅用几十台廉价的计算机就可以搭建起一个大数据集群。
- 硬件故障转移。所有计算机都可能会出问题的概率,为了防止某个主机故障而读取不到该主机的块文件,它将同一个文件的块副本分配到其它某几个主机上,如果其中一台主机失效,可以迅速找另一块副本取文件。
关键元素:
-
Block: HDFS会将一个完整的文件进行分块,大小是通常是64M,可配置。默认数据块大小为64MB,可配置。若文件大小不到64MB,则单独存成一个block。类似于LVM的Block概念。
-
NameNode:保存整个文件系统的目录信息、文件信息及分块信息,就像是字典的索引。它是由唯一一台主机专门保存,这台主机如果出错,它的NameNode失效就会启动备用主机运行NameNode。
-
DataNode:分布在其他服务器上,用于存储Block块文件。文件被按大小被切分成若干个block,存储到不同节点上。
默认每个block有三个副本。
二、Mapreduce(分布式计算框架)
原理:
- MapReduce是一种分布式计算模型,用以进行大数据量的计算。
- 屏蔽了分布式计算框架细节,将计算抽象成map和reduce两部分。
- Map对数据集上的内容分布式存储,做好分类。
- Reduce则对大数据按需求按分类进行提取分析。
- MapReduce非常适合在大量计算机组成的分布式并行环境里进行数据处理。
后记
以上就是学习Hadoop的基础,即必要了解的概念。
当然Hadoop不只有这些内容,还有其他子项目,适合深入研究,但在这个基础篇就先不说了。