看看我是怎么学习大数据的 https://pan.baidu.com/s/16GwFh17fihySHvEVt02OkQ
提取码:86ir
什么是 Hadoop
1、Hadoop 简介
Hadoop 是 Apache 软件基金会 旗下的一个 开源分布式计算平台。以分布式文件系统 HDFS(Hadoop Distributed File System) 和 MapReduce(Google MapReduce 的开源实现) 为核心的 Hadoop,为用户提供了系统底层透明的分布式基础构架。
HDFS 的高容错性、高伸缩性、高性能等优点允许用户将 Hadoop 部署在廉价的硬件上,形成分布式系统,它负责数据的分布式存储和备份,文件写入后只能读取,不能修改;MapReduce 分布式编程模型允许用户在不了解分布式系统底层细节的情况下开发并行应用程序,包括 Map(映射)和 Reduce(规约)两个过程。
用户可以利用 Hadoop 轻松地组织计算机资源,从而搭建自己的分布式计算平台,并且可以充分利用集群的计算和存储能力,完成海量数据的处理。
简而言之,Hadoop 是适合大数据的分布式存储和计算的平台。狭义上来说,hadoop 就是单独指代 hadoop 这个软件;广义上来说,hadoop 指代大数据的一个生态圈,包括很多其他的软件。从上面的 Hadoop 介绍可以总结出 Hadoop 具有如下几个概念。
Hadoop 是一个框架。
Hadoop 适合处理大规模数据。
Hadoop 被部署在一个集群上。
看看我是怎么学习大数据的 https://pan.baidu.com/s/16GwFh17fihySHvEVt02OkQ
提取码:86ir
2、Hadoop 的发展历史
Hadoop 的发展距今不足 20 年,不能算是一个有丰厚底蕴或是新兴的技术,但是为大数据做出的贡献是巨大的。下面介绍 Hadoop 的发展历史。
(1)Hadoop 的起源
Hadoop 最早起源于 Lucene 的子项目 Nutch。Nutch 的设计目标是构建一个大型的全网搜索引擎,包括网页抓取、索引、查询等功能,但随着抓取网页数量的增加,遇到了严重的可扩展性问题——如何解决数十亿网页的存储和索引问题。2003年、2004年谷歌发表的三篇论文为该问题提供了可行的解决方案:
1、分布式文件系统(GFS),可用于处理海量网页的存储。
2、分布式计算框架(MapReduce),可用于处理海量网页的索引计算问题。
3、分布式数据存储系统(BigTable),用来处理海量的数据的一种非关系型的数据库。
谷歌虽然没有将其核心技术开源,但是这三篇论文已经向开源社区的 大牛们 指明了方向,一位大牛:Doug Cutting,使用 Java 语言对 Google 的云计算核心技术(主要是 GFS 和 MapReduce )做了开源的实现,使 Nutch 性能飙升。随后 Yahoo 招聘 Doug Cutting 继续完善 Hadoop 项目。2005年,Hadoop 作为 Lucene 的子项目 Nutch 的一部分正式引入 Apache 基金会。2006年2月被分离出来,成为一套完整独立的软件,起名为 Hadoop。到2008年1月,Hadoop 成为 Apache 顶级项目(同年,cloudera 公司成立,全球知名企业级数据管理和数据分析平台提供商),迎来了它的快速发展期。
Hadoop 的成长过程为:Lucene ⇒ Nutch ⇒ Hadoop
Hadoop的核心组件的演变关系:
GFS–>HDFS
Google MapReduce–>Hadoop MapReduce
BigTable–>Hbase
(2)Hadoop的发展历程。Hadoop 的发展历程如下图所示:
接下来看一下 Hadoop 的发行版,什么叫发行版呢?举一个大家接触比较多的例子,目前手机操作系统有两大阵营,一个是苹果的 IOS,还有一个是谷歌的 Android。IOS 是闭源的,也就不存在多个发行版了,如果你基于 IOS 改造一下,弄一个新的手机系统出来,会被苹果告破产的。所以 IOS 是没有其它发行版的,只有官方这一个版本。
Android 是开源的,所以基于这个系统,很多手机厂商都会对它进行封装改造,因为这些手机厂商会感觉原生的 Android 系统的界面看起来比较 low,或者某一些功能不太适合中国人的使用习惯,所以他们就会进行改造,例如国内的魅族、小米、锤子这些手机厂商都基于 Android 打造了自己的手机操作系统,那这些就是 Android 系统的一些发行版。
那针对 Hadoop 也是一样的,目前 Hadoop 已经演变为大数据的代名词,形成了一套完善的大数据生态系统,并且 Hadoop 是 Apache 开源的,它的开源协议决定了任何人都可以对其进行修改,并作为开源或者商业版进行发布/销售。
所以目前 Hadoop 发行版非常的多,有华为发行版、Intel 发行版、Cloudera 发行版 CDH、Hortonworks 发行版 HDP,这些发行版都是基于 Apache Hadoop 衍生出来的。在这里我们挑几个重点的分析一下:
首先是官方原生版本:Apache Hadoop。Apache 是一个 IT 领域的公益组织,类似于红十字会,Apache 这个组织里面的软件都是开源的,大家可以随便使用,随便修改,后续博主博文中的学习笔记 99% 的大数据技术框架都是 Apache 开源的,所以在这里我们会学习原生的 Hadoop,只要掌握了原生 Hadoop 使用,后期想要操作其它发行版的 Hadoop 也是很简单的,其它发行版都是会兼容原生 Hadoop 的,这一点读者不用担心。 原生 Hadoop 的缺点是没有技术支持,遇到问题需要自己解决,或者通过官网的社区提问,但是回复一般比较慢,也不保证能解决问题, 还有一点就是原生 Hadoop 搭建集群的时候比较麻烦,需要修改很多配置文件,如果集群机器过多的话,针对运维人员的压力是比较大的,这块等后面读者自己在搭建集群的时候大家就可以感受到了。
那接着往下面看 Cloudera Hadoop(CDH)。注意了,CDH 是一个商业版本,它对官方版本做了一些优化,提供收费技术支持,提供界面操作,方便集群运维管理 CDH 目前在企业中使用的还是比较多的,虽然 CDH 是收费的,但是 CDH 中的一些基本功能是不收费的,可以一直使用,高级功能是需要收费才能使用的,如果不想付费,也能凑合着使用。
还有一个比较常用的是 HortonWorks(HDP)。它呢,是开源的,也提供的有界面操作,方便运维管理,一般互联网公司偏向于使用这个。注意了,再爆一个料,最新消息,目前 HDP 已经被 CDH 收购,都是属于一个公司的产品,后期 HDP 是否会合并到 CDH 中,还不得而知,具体还要看这个公司的运营策略了。
最终的建议:建议在实际工作中搭建大数据平台时选择 CDH 或者 HDP,方便运维管理,要不然,管理上千台机器的原生 Hadoop 集群,运维同学是会哭的。注意了,学习过程中我们使用原生 Hadoop,在最后博主会说一下 CDH 和 HDP 的使用。
目前 Hadoop 经历了三个大的版本
从 1.x 到 2.x 再到 3.x。每一个大版本的升级都带来了一些质的提升,下面我们先从架构层面分析一下这三大版本的变更:
从 Hadoop1.x 升级到 Hadoop2.x,架构发生了比较大的变化,这里面的 HDFS 是分布式存储,MapRecue 是分布式计算,咱们前面说了 Hadoop 解决了分布式存储和分布式计算的问题,对应的就是这两个模块。在 Hadoop2.x 的架构中,多了一个模块 YARN,这个是一个负责资源管理的模块,那在 Hadoop1.x 中就不需要进行资源管理吗?也是需要的,只不过是在 Hadoop1.x 中,分布式计算和资源管理都是 MapReduce 负责的,从 Hadoop2.x 开始把资源管理单独拆分出来了,拆分出来的好处就是,YARN 变成了一个公共的资源管理平台,在它上面不仅仅可以跑 MapReduce 程序,还可以跑很多其他的程序,只要你的程序满足 YARN 的规则即可。Hadoop 的这一步棋走的是最好的,这样自己摇身一变就变成了一个公共的平台,由于它起步早,占有的市场份额也多,后期其它新兴起的计算框架一般都会支持在 YARN 上面运行,这样 Hadoop 就保证了自己的地位。后面学习笔记中的Spark、Flink 等计算框架都是支持在 YARN 上面执行的,并且在实际工作中也都是在 YARN 上面执行。Hadoop3.x 的架构并没有发生什么变化,但是它在其他细节方面做了很多优化。在这里我挑几个常见点说一下:
最低 Java 版本要求从 Java7 变为 Java8
在 Hadoop 3.x 中,HDFS 支持纠删码,纠删码是一种比副本存储更节省存储空间的数据持久化存储方法,使用这种方法,相同容错的情况下可以比之前节省一半的存储空间。详细介绍在这里: https://hadoop.apache.org/docs/r3.0.0/hadoop-project-dist/hadoop-hdfs/HDFSErasureCoding.html
Hadoop 2.x 中的 HDFS 最多支持两个 NameNode,一主一备,而 Hadoop3.x 中的 HDFS 支持多个 NameNode,一主多备,详细介绍在这里: https://hadoop.apache.org/docs/r3.0.0/hadoop-project-dist/hadoop-hdfs/HDFSErasureCoding.html
MapReduce 任务级本地优化,MapReduce 添加了映射输出收集器的本地化实现的支持。对于密集型的洗牌操作(shuffle-intensive)jobs,可以带来 30% 的性能提升,详细介绍在这里: https://issues.apache.org/jira/browse/MAPREDUCE-2841
修改了多重服务的默认端口,Hadoop 2.x 中一些服务的端口和 Hadoop3 中是不一样的
总结: Hadoop 3.x 和 2.x 之间的主要区别在于新版本提供了更好的优化和可用性。详细的优化点也可以参考官网内容: https://hadoop.apache.org/docs/r3.0.0/index.html
(3)Hadoop 的名字起源。Hadoop 名字不是一个缩写的单词,而是一个人为造出来的词。是以 Hadoop 之父 Doug Cutting 儿子的毛绒玩具象命名的。所以 Hadoop 的标志为一头小象,如下图所示:
所以我们需要不断努力地学习,等以后我们也达到这种高度的时候,在实现一个框架的时候用自己的名字来命名那就很炫酷了。
3、Hadoop 的特点
Hadoop 是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在 Hadoop 上开发和运行处理海量数据的应用程序。它主要有以下几个优点:
高可靠性。数据存储不仅有多个备份,而且集群设置在不同机器上,可以防止一个节点宕机而造成的机器损坏。
高扩展性。Hadoop 是在可用的计算机集群间分配数据并完成计算任务。为集群添加新的节点并不复杂,所以集群可以很容易进行节点的扩展,扩大集群。
高效性。Hadoop 能够在节点之间动态地移动数据,在数据所在节点进行并发处理,并保证各个节点的动态平衡,因此处理速度非常快。
高容错性。Hadoop 的分布式文件系统 HDFS 在存储文件时会在多个节点或多台机器上存储文件的备份副本,当读取该文档出错或某一台机器宕机了,系统会调用其他节点上的备份文件,保存程序顺利运行。如果启动的任务失败,Hadoop 会重新运行该任务或启用其他任务来完成这个任务没有完成的部分。
低成本。Hadoop 是开源的,不需要支付任何费用即可下载安装使用,节省了购买软件的成本。此外,Hadoop 依赖于社区服务,因此它的成本比较低,任何人都可以使用。
可构建在廉价机器上。Hadoop 对机器的配置要求不高,大部分普通商用服务器就可以满足要求。
————————————————
看看我是怎么学习大数据的 https://pan.baidu.com/s/16GwFh17fihySHvEVt02OkQ
提取码:86ir
原文链接:https://blog.csdn.net/xw1680/article/details/115426714



