前言
提到大数据,大抵逃不过两个问题,一个是海量的数据该如何存储,另外一个就是那么多数据该如何进行查询计算呢。好在这些问题前人都有了解决方案,而Hadoop就是其中的佼佼者,是目前市面上最流行的一个大数据软件,那它包括哪些内容呢?有什么特点呢?
Hadoop介绍
提到Hadoop,大家的理解是什么?
狭义上理解,Hadoop指的是Apache软件基金会的一款用java语言实现,开源的软件,允许用户使用简单的编程模型实现跨机器集群对海量数据进行分布式计算处理。
广义上,Hadoop指的是围绕Hadoop打造的大数据生态圈,如下图所示, 其中Hadoop是整个生态圈的底座、地基,构建出整个大数据的生态系统。
Hadoop怎么来的?
Hadoop之父:Doug Cutting
《The Google file system》:谷歌分布式文件系统GFS
《MapReduce: Simplified Data Processing on Large Clusters》:谷歌分布式计算框架MapReduce
《Bigtable: A Distributed Storage System for Structured Data》:谷歌结构化数据存储系统
Hadoop三大核心组件
hadoop主要由3大部分组成,俗称Hadoop三剑客:
Hadoop HDFS(分布式文件存储系统)
全称分布式文件系统,本质是一个文件系统,由于数据量很大,总不能将将所有数据存储到一台"电脑"上,哪有那么大磁盘的电脑,那么是不是可以存储到多个不同的"电脑"上,也就是分布式的,把文件存储在不同的节点中,主要是为了解决海量数据存储的问题,它处在生态圈的底层与核心地位。
Hadoop MapReduce(分布式计算框架)
MapReduce作为大数据生态圈第一代分布式计算框架,主要是解决了海量数据的计算问题。
传统的计算方式一般都是将数据从各个节点上加载过来,然后统一计算。这样有个最大的弊端就是计算十分慢,只有一个节点工作。而MapReduce计算框架可以分布在各个节点上并行计算,最后进行归并。
注意,MapReduce只是一个计算框架,或者说编程模型,不是一个软件,无需部署。
Hadoop YARN(集群资源管理和任务调度平台)
YARN是分布式通用的集群资源管理系统和任务调度平台,怎么理解呢?
大数据的很多计算任务,比如MapReduce任务、或者其他的Spark任务等等,他们在计算的时候需要CPU、内存、磁盘等资源,那么多个任务进行运算的时候需要有个管理者去给他们进行资源分配、调度等,这个管理员就是YARN。
Hadoop优点
Hadoop为什么这么流行,这和它的众多优点分不开。
- 扩容能力
Hadoop是在可用的计算机集群间分配数据并完成计算任务的,这些集群可方便灵活的方式扩展到数以千计的节点。
- 成本低
Hadoop集群允许通过部署普通廉价的机器组成集群来处理大数据,以至于成本很低。看重的是集群整体能力。
- 效率高
通过并发数据,Hadoop可以在节点之间动态并行的移动数据,使得速度非常快。
- 可靠性
能自动维护数据的多份复制,并且在任务失败后能自动地重新部署(redeploy
)计算任务。所以Hadoop的按位存储和处理数据的能力值得人们信赖。
- 开源
由于Hadoop开源,所以整个社区活跃度很高,很多企业都是基于Hadoop构建他们的大数据平台。
Hadoop架构变迁
Hadoop也一直在迭代升级,如今已经到了3.0时代了,那么每个大版本有什么差别呢?
1.Hadoop 1.0时代
Hadoop1.0时代只有HDFS
(分布式文件存储)和MapReduce
(资源管理和分布式数据处理)两部分。
2.Hadoop 2.0时代
Hadoop2.0时代引入了YARN作为统一的集群资源管理和任务调度平台,它不仅可以提交自己的任务,还可以提交其他的一些任务,是一个很大的变革,也是保证Hadoop的统治地位的一大原因。
3.Hadoop 3.0时代
Hadoop 3.0架构组件和Hadoop 2.0类似, 但是3.0着重于性能优化。
Hadoop初体验
好了,上面基本讲清楚Hadoop的基本内容,那Hadoop究竟长啥样呢?至于安装这边就不介绍了。
Hadoop分布式文件系统
我们可以在web上看到hadoop的文件系统,其实和我们的目录没啥差别。
YARN集群资源管理和任务调度平台
我们也可以在浏览器输入指定的地址看到之前都提交过上面样的计算任务。
至于MapReduce是看不到的,它只是一个计算框架,提交到这个Yarn上。
总结
本文讲解了大数据开发中最流行的软件Hadoop, 它主要分为3部分,管理文件存储的hdfs, 统一管理资源和任务的调度平台Yarn,以及提供了一种计算引擎MapReduce, 基于这三个"磐石",可以构建出整个大数据生态。
如果本文对你有帮助的话,请留下一个赞吧
更多技术干活欢迎关注公众号——JAVA旭阳