什么是Hadoop?
Hadoop 是⼀个适合大数据的分布式存储和计算平台。 如前所述,狭义上说Hadoop就是⼀个框架平台,广义上讲Hadoop代表大数据的⼀个技术⽣态圈,包括很多其他软件框架。
hadoop起源
Hadoop 的发展历程可以用如下过程概述: Nutch —> Google论文(GFS、MapReduce) —> Hadoop产生—> 成为Apache顶级项⽬—> Cloudera公司成立(Hadoop快速发展)
- Hadoop最早起源于Nutch,Nutch 的创始人是Doug Cutting
- Nutch 是一个开源 Java 实现的搜索引擎。它提供了我们运行⾃己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫,但随着抓取⽹页数量的增加,遇到了严重的可扩展性问题——如何解决数⼗亿⽹页的存储和索引问题
- 2003年、2004年⾕歌发表的两篇论⽂为该问题提供了可行的解决⽅案。GFS,可⽤于处理海量⽹页的存储;MapReduce,可⽤于处理海量⽹页的索引计算问题。
Google的三篇论文(三驾⻢车)
GFS:Google的分布式⽂件系统(Google File System)
MapReduce:Google的分布式计算框架
BigTable:⼤型分布式数据库
发展演变关系:
GFS —> HDFS
Google MapReduce —> Hadoop MapReduce
BigTable —> HBase
- 随后,Google公布了部分GFS和MapReduce思想的细节,Doug Cutting等⼈用2年的业余时间实现了DFS和MapReduce机制,使Nutch性能飙升。
- 2005年,Hadoop 作为Lucene的⼦项目Nutch的一部分引入Apache
- 2006年,Hadoop从Nutch剥离出来独立
- 2008年,Hadoop成为Apache的顶级项⽬
Hadoop这个名字来源于Hadoop之父Doug Cutting⼉子的⽑绒玩具象
Hadoop的特点
Hadoop的发行版本
⽬前Hadoop发行版⾮常多,有Cloudera发行版(CDH)、Hortonworks发行版、华为发行版、 Intel发行版等,所有这些发行版均是基于Apache Hadoop衍⽣出来的,之所以有这么多的版本,是由 Apache Hadoop的开源协议决定的(任何⼈可以对其进行修改,并作为开源或商业产品发布/销售)。
企业中主要⽤到的三个版本分别是:Apache Hadoop版本(最原始的,所有发行版均基于这个版本进行改进)、Cloudera版本(Cloudera’s Distribution Including Apache Hadoop,简称“CDH”)、 Hortonworks版本(Hortonworks Data Platform,简称“HDP”)。
- Apache Hadoop 原始版本
官⽹地址:http://hadoop.apache.org/
优点:拥有全世界的开源贡献,代码更新版本比较快
缺点:版本的升级,版本的维护,以及版本之间的兼容性,学习非常⽅便
Apache所有软件的下载地址(包括各种历史版本):http://archive.apache.org/dist/
- 软件收费版本ClouderaManager CDH版本 —⽣产环境使用
官⽹地址:https://www.cloudera.com/
Cloudera主要是美国一家⼤数据公司在Apache开源Hadoop的版本上,通过⾃己公司内部的各种补丁,实现版本之间的稳定运行,⼤数据⽣态圈的各个版本的软件都提供了对应的版本,解决了版本的升级困难,版本兼容性等各种问题,⽣产环境强烈推荐使⽤
- 免费开源版本HortonWorks HDP版本—⽣产环境使⽤
官⽹网地址:https://hortonworks.com/
hortonworks主要是雅⻁主导Hadoop开发的副总裁,带领 ⼆十⼏个核心成员成立Hortonworks,核⼼产品软件HDP(ambari),HDF免费开源,并且提供一整套的web管理界面,供我们可以通过web界⾯管理我们的集群状态,web管理界面软件HDF⽹址(http://ambari.apache.org/)
Apache Hadoop版本更迭
0.x 系列版本:Hadoop当中最早的⼀个开源版本,在此基础上演变而来的1.x以及2.x的版本
1.x 版本系列:Hadoop版本当中的第二代开源版本,主要修复0.x版本的一些bug等
2.x 版本系列:架构产⽣重大变化,引⼊了yarn平台等许多新特性
3.x 版本系列:EC技术、YARN的时间轴服务等新特性
Hadoop的优缺点
Hadoop的优点
- Hadoop具有存储和处理数据能力的⾼可靠性。
- Hadoop通过可⽤的计算机集群分配数据,完成存储和计算任务,这些集群可以⽅便地扩展到数以千计的节点中,具有⾼扩展性。
- Hadoop能够在节点之间进⾏动态地移动数据,并保证各个节点的动态平衡,处理理速度⾮常快,具有⾼效性。
- Hadoop能够自动保存数据的多个副本,并且能够⾃动将失败的任务重新分配,具有⾼容错性。
Hadoop的缺点
- Hadoop不适⽤于低延迟数据访问。
- Hadoop不能⾼效存储⼤量⼩文件。
- Hadoop不支持多用户写⼊并任意修改文件。