What Is Apache Hadoop?
The Apache™ Hadoop® project develops open-source software for reliable, scalable, distributed computing.
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
起源:
1. HADOOP最早起源于Nutch。Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取、索引、查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问题——如何解决数十亿网页的存储和索引问题。
2. 2003年、2004年谷歌发表的两篇论文为该问题提供了可行的解决方案。
——分布式文件系统(GFS),可用于处理海量网页的存储
——分布式计算框架MAPREDUCE,可用于处理海量网页的索引计算问题。
3. Nutch的开发人员完成了相应的开源实现HDFS和MAPREDUCE,并从Nutch中剥离成为独立项目HADOOP,到2008年1月,HADOOP成为Apache顶级项目,迎来了它的快速发展期。
为了解决以下问题:
•海量数据的存储(HDFS)
•海量数据的分析(MapReduce)
•资源管理调度(YARN)
hadoop的核心组件:
HDFS: Hadoop Distributed File System 分布式文件系统
YARN: Yet Another Resource Negotiator 资源管理调度系统
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算
MAPREDUCE:分布式运算程序开发框架
HIVE:基于大数据技术(文件系统+运算框架)的SQL数据仓库工具
HBASE:基于HADOOP的分布式海量数据库
ZOOKEEPER:分布式协调服务基础组件
Mahout:基于mapreduce/spark/flink等分布式运算框架的机器学习算法库
Oozie:工作流调度框架
Sqoop:数据导入导出工具
Flume:日志数据采集框架
hadoop的各个版本:
目前Hadoop的发行版除了Apache的开源版本之外,还有华为发行版、Intel发行版、Cloudera发行版(CDH)、Hortonworks发行版(HDP)、MapR等,所有这些发行版均是基于Apache Hadoop衍生出来的,因为Apache Hadoop的开源协议允许任何人对其进行修改并作为开源或者商业产品发布。
Apache社区版本
内大多数公司发行版是收费的,比如Intel发行版、华为发行版等。不收费的Hadoop版本主要有国外的四个,分别是Apache基金会hadoop、Cloudera版本(CDH)、Hortonworks版本(HDP)、MapR版本
第三方发行版本(如CDH,HDP,MapR等)
Apache Hadoop版本分为两代,我们将第一代Hadoop称为Hadoop 1.0,第二代Hadoop称为Hadoop 2.0。第一代Hadoop包含三个大版本,分别是0.20.x,0.21.x和0.22.x,其中,0.20.x最后演化成1.0.x,变成了稳定版,而0.21.x和0.22.x则NameNode HA等新的重大特性。第二代Hadoop包含两个版本,分别是0.23.x和2.x,它们完全不同于Hadoop 1.0,是一套全新的架构,均包含HDFS Federation和YARN两个系统,相比于0.23.x,2.x增加了NameNode HA和Wire-compatibility两个重大特性
经过上面的大体解释,大家可能明白了Hadoop以重大特性区分各个版本的,总结起来,用于区分Hadoop版本的特性有以下几个:
(1)Append 支持文件追加功能,如果想使用HBase,需要这个特性。
(2)RAID 在保证数据可靠的前提下,通过引入校验码较少数据块数目。详细链接: https://issues.apache.org/jira/browse/HDFS/component/12313080
(3)Symlink 支持HDFS文件链接,具体可参考: https://issues.apache.org/jira/browse/HDFS-245
(4)Security Hadoop安全,具体可参考:https://issues.apache.org/jira/browse/HADOOP-4487
(5) NameNode HA 具体可参考:https://issues.apache.org/jira/browse/HDFS-1064
(6) HDFS Federation和YARN
更多新的版本信息可在官网查看:
http://hadoop.apache.org/releases.html
在部署的时候,需要注意hadoop版本与其它生态圈组件例如hbase的版本匹配。
因为hadoop的版本与其它组件并不是版本向上兼容向下兼容那么简单。
有些版本不对应直接就不能使用。
哪个版本对应哪个版本的组件 需要在组件官网中查询。
例如hbase:http://hbase.apache.org/book.html#configuration
更多组件官网入口可查看:
http://hadoop.apache.org/releases.html#Release+Notes
在组件getStart页面 一般都会有说明 或者在组件的 release 页面可查看到相关版本信息。例如 hive: