大数据处理框架 Hadoop
Hadoop简介
Hadoop是Apache软件基金会旗下的一个开源分布式计算平台,为用户提供了系统底层细节透明的分布式基础架构
Hadoop是基于Java语言开发的,具有很好的跨平台特性,并且可以部署在廉价的计算机集群中
Hadoop的核心是分布式文件系统HDFS(Hadoop Distributed File System)和MapReduce
Hadoop被公认为行业大数据标准开源软件,在分布式环境下提供了海量数据的处理能力
几乎所有主流厂商都围绕Hadoop提供开发工具、开源软件、商业化工具和技术服务,如谷歌、雅虎、微软、思科、淘宝等,都支持Hadoop
Hadoop发展简史
Hadoop最初是由Apache Lucene项目的创始人Doug Cutting开发的文本搜索库。Hadoop源自始于2002年的Apache Nutch项目——一个开源的网络搜索引擎并且也是Lucene项目的一部分
2004年,Nutch项目也模仿GFS开发了自己的分布式文件系统NDFS(Nutch Distributed File System),也就是HDFS的前身
2004年,谷歌公司又发表了另一篇具有深远影响的论文,阐述了MapReduce分布式编程思想
2005年,Nutch开源实现了谷歌的MapReduce
2006年2月,Nutch中的NDFS和MapReduce开始独立出来,成为Lucene项目的一个子项目,称为Hadoop,同时,Doug Cutting加盟雅虎
2008年1月,Hadoop正式成为Apache顶级项目,Hadoop也逐渐开始被雅虎之外的其他公司使用
2008年4月,Hadoop打破世界纪录,成为最快排序1TB数据的系统,它采用一个由910个节点构成的集群进行运算,排序时间只用了209秒
2009年5月,Hadoop更是把1TB数据排序时间缩短到62秒。Hadoop从此名声大震,迅速发展成为大数据时代最具影响力的开源分布式开发平台,并成为事实上的大数据处理标准
Hadoop的特性
Hadoop是一个能够对大量数据进行分布式处理的软件框架,并且是以一种可靠、高效、可伸缩的方式进行处理的,它具有以下几个方面的特性:
-
高可靠性
-
高效性
-
高可扩展性
-
高容错性
-
成本低
-
运行在Linux平台上
-
支持多种编程语言
Hadoop的应用现状
Hadoop凭借其突出的优势,已经在各个领域得到了广泛的应用,而互联网领域是其应用的主阵地
2007年,雅虎在Sunnyvale总部建立了M45——一个包含了4000个处理器和1.5PB容量的Hadoop集群系统
Facebook作为全球知名的社交网站,Hadoop是非常理想的选择,Facebook主要将Hadoop平台用于日志处理、推荐系统和数据仓库等方面
国内采用Hadoop的公司主要有百度、淘宝、网易、华为、中国移动等,其中,淘宝的Hadoop集群比较大
-
Hadoop在企业中的应用架构
Apache Hadoop版本演变
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的项目结构不断丰富发展,已经形成一个丰富的Hadoop生态系统
我们再来看一下上图中每个部分分别是什么:
-
HDFS
分布式文件系统HDFS 用于整个分布式文件的存储,它实现了怎么用成百上千台服务器完成数据的存储。
-
MapReduce
分布式并行编程模型完成具体的计算工作,进行离线计算和批处理。
-
YARN
资源管理和调度器存储的数据我们需要进行计算处理,那么YARN就是用来对计算资源进行调度,如内存,CPU,带宽。
-
Tez
运行在YARN之上的下一代Hadoop查询处理框架把MapReduce作业进行分析优化,构建成一个有向无环图,保证MapReduce获得最好的处理效率。
-
Hive
Hadoop上的数据仓库支持SQL语句,可以在Hadoop平台上对数据进行分析。Hive会把SQL语句转化为MapReduce作业。
-
HBase
Hadoop上的非关系型的分布式数据库HDFS只能实现顺序读写,但是HBASE能实现随机读写,支持几十亿行几百列的超大型数据库。
-
Pig
一个基于Hadoop的大规模数据分析平台,提供类似SQL的查询语言PigLatin轻量级的脚本编程语言, 能用简单的语句实现复杂的MapReduce代码实现的功能。
-
Sqoop
用于在Hadoop与传统数据库之间进行数据传递用于关系型数据库和Hadoop的HDFS的相互导入导出。
-
Oozie
Hadoop上的工作流管理系统 -
Zookeeper
提供分布式协调一致性服务 -
Storm
流计算框架 -
Flume
一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统收集实时数据流。
-
Ambari
Hadoop快速部署工具,支持Apache Hadoop集群的供应、管理和监控 -
Kafka
一种高吞吐量的分布式发布订阅消息系统,可以处理消费者规模的网站中的所有动作流数据 -
Spark
类似于Hadoop MapReduce的通用并行框架和MapReduce一样用Reduce函数做数据处理,但Spark是基于内存的,所以Spark效率会比MapReduce高很多。
原创作品,转载请注明来源 https://hebicheng.github.io