2024年1月5日发(作者:)
Hadoop概述及生态组件简介
Hadoop是Apache软件基金会的顶级开源项目,是一套靠得住的,可扩展的,支持散布式计算的开源软件,由原雅虎公司Doug Cutting依照Google发布的学术论文(Google File System、MapReduce、BigTable)而创建的开源项目。Doug Cutting被称为Hadoop之父。而Hadoop是一个虚构的名字,Doug Cutting说明Hadoop的得名:“那个名字是我小孩给一个棕黄色的大象玩具命名的。我的命名标准确实是简短、容易发音和拼写,没有太多的意义,而且可不能被用于别处,小小孩恰正是这方面的高手”。因此Hadoop的logo确实是一只奔跑的棕黄色小象。
Hadoop是一个基础框架,许诺用简单的编程模型在运算机集群对大型数据集进行散布式处置。它的设计规模从单一效劳器到数千台机械,每一个都提供本地计算和存储,框架本身提供运算机集群高可用的效劳而不是依托硬件来提供高可用性。用户能够在不了解散布式底层细节的情形下,轻松地在Hadoop上开发和运行处置海量数据的应用程序,低本钱、高靠得住、高扩展、高有效、高容错等特性让Hadoop成为最流行的大数据分析系统。
Hadoop的特点
Hadoop是一个能够对大量数据进行散布式处置的软件框架,它是以一种靠得住、高效、可伸缩的方式进行数据处置。
高靠得住性:Hadoop按位存储和处置数据的能力值得人们信任。
高扩展性:Hadoop是在可用的运算机集群间分派数据并完成计算任务的,这些集群能够方便地扩展到数以千计的节点中。
高效性:Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平稳,因此处置速度超级快。
高容错性:Hadoop能够自动保留数据的多个副本,而且能够自动将失败的任务从头分派。
低本钱:Hadoop 依托于社区效劳,它的本钱比较低。
Hadoop版本演进
当前Hadoop已进展到第二代版本,最新稳固版本是。
被称为第一代Hadoop,由散布式文件系统HDFS和散布式计算框架MapReduce组成,其中,HDFS由一个NameNode和多个DataNode组成,MapReduce由一个JobTracker和多个TaskTracker组成。
第二代Hadoop被称为,是为克服Hadoop 中HDFS和MapReduce存在的各类问题而提出的。
针对中NameNode HA不支持自动切换且切换时刻太长的风险,提出了基于共享存储的HA方式,支持失败自动切换切回。
针对Hadoop 中的单NameNode制约HDFS的扩展性问题,提出了HDFS
Federation机制,它许诺多个NameNode各自分管不同的命名空间进而实现数据访问隔离和集群横向扩展。
针对Hadoop 中的MapReduce在扩展性和多框架支持方面的不足,提出了全新的资源治理框架YARN,它将JobTracker中的资源治理和作业操纵功能分开,别离由组件ResourceManager和ApplicationMaster实现。其中,ResourceManager负责所有应用程序的资源分派,而ApplicationMaster仅负责治理一个应用程序。相较于 Hadoop ,Hadoop 框架具有更好的扩展性、可用性、靠得住性、向后兼容性和更高的资源利用率和能支持除MapReduce计算框架外的更多的计算框架,Hadoop 目前是业界主流畅用的Hadoop版本。
Hadoop 生态组件
1. HDFS(Hadoop散布式文件系统)
HDFS是Hadoop体系中数据存储治理的基础。它是一个高度容错的系统,能检测和应付硬件故障,用于在低本钱的通用硬件上运行。HDFS简化了文件的一致性模型,通过流式数据访问,提供高吞吐量应用程序数据访问功能,适合带有大型数据集的应用程序。
2. YARN(集群资源治理系统)
YARN是以后对之前JobTracker和TaskTracker模型的优化而产生出来的,将JobTracker的资源分派和作业调度及监督分开。该框架要紧有ResourceManager,Applicationmatser,Nodemanager。
3. MapReduce(散布式离线计算框架)
MapReduce是一种计算模型,用以进行大数据量的计算。其中Map对数据集上的独立元素进行指定的操作,生成键-值对形式中间结果。Reduce那么对
中间结果中相同“键”的所有“值”进行规约,以取得最终结果。MapReduce如此的功能划分,超级适合在大量运算机组成的散布式并行环境里进行数据处置。
4. Tez(DAG计算框架)
Tez是基于Hadoop Yarn之上的DAG(有向无环图,Directed Acyclic
Graph)计算框架。它把Map/Reduce进程拆分成假设干个子进程,同时能够把多个Map/Reduce任务组合成一个较大的DAG任务,减少了Map/Reduce之间的文件存储。同时合理组合其子进程,减少任务的运行时刻。由Hortonworks开发并提供要紧支持。
5. Storm(流式计算框架)
Storm是一个散布式的、容错的实时计算系统,由BackType开发,后被Twitter捕捉。Storm属于流处置平台,多用于实时计算并更新数据库。Storm也可被用于“持续计算”(continuous computation),对数据流做持续查询,在计算时就将结果以流的形式输出给用户。它还可被用于“散布式RPC”,以并行的方式运行昂贵的运算。
6. Spark(内存计算框架)
Spark是个开源的数据分析集群计算框架,最初由加州大学伯克利分校AMPLab开发,成立于HDFS之上。Spark与Hadoop一样,用于构建大规模、低延时的数据分析应用。Spark采纳Scala语言实现,利用Scala作为应
用框架。 Spark采纳基于内存的散布式数据集,优化了迭代式的工作负载和交互式查询。
7. Hive(数据仓库)
Hive由facebook开源,最初用于解决海量结构化的日记数据统计问题。Hive概念了一种类似SQL的查询语言(HQL),将SQL转化为MapReduce任务在Hadoop上执行。通经常使用于离线分析。
8. Pig(数据流处置)
Pig设计动机是一种基于MapReduce的数据分析工具。概念了一种数据流语音-Pig Latin,将脚本转换为MapReduce任务在Hadoop上执行,通经常使用于进行离线分析。
9. Mahout(数据挖掘库)
Mahout最初是Apache Lucent的子项目,它在极短的时刻内取得了长足的进展,此刻是Apache的顶级项目。相关于传统的MapReduce编程方式来实现机械学习的算法时,往往需要话费大量的开发时刻,而且周期较长,而Mahout的要紧目标是创建一些可扩展的机械学习领域经典算法的实现,旨在帮忙开发人员加倍方便快捷地创建智能应用程序。
10. HBase(实时散布式数据库)
HBase是一个针对结构化数据的可伸缩、高靠得住、高性能、散布式和面向列的动态模式数据库。和传统关系数据库不同,HBase采纳了BigTable的数据模型:增强的稀疏排序映射表(Key/Value),其中,键由行关键字、列关键
字和时刻戳组成。HBase提供了对大规模数据的随机、实时读写访问,同时,HBase中保留的数据能够利用MapReduce来处置,它将数据存储和并行计算完美地结合在一路。
11. Zookeeper(散布式协作效劳)
Zookeeper要紧解决散布式环境下的数据治理问题:统一命名,状态同步,集群治理,配置同步等。Zookeeper的要紧实现两步:1)选举Leader 2)同步数据。
12. Oozie(作业流调度系统)
Oozie 是用于 Hadoop 平台的一种作业流调度引擎。利用 Oozie 和谐器增进了彼此依托的重复作业之间的和谐,能够利用预定的时刻或数据可用性来触发 Apache Oozie。
13. Ambari(安装、部署、配置和治理工具)
Ambari是一个供给、治理和监视Apache Hadoop集群的开源框架,它提供一个直观的操作工具和一个健壮的Hadoop API,能够隐藏复杂的Hadoop操作,使集群操作大大简化。
14. Flume(日记搜集工具)
Flume是Cloudera开源的日记搜集系统,具有散布式、高靠得住、高容错、易于定制和扩展的特点。它将数据从产生、传输、处置并最终写入目标的途径的进程抽象为数据流,在具体的数据流中,数据源支持在Flume中定制数据发送方,从而支持搜集各类不同协议数据。同时,Flume数据流提供对日记数据
进行简单处置的能力,如过滤、格式转换等。另外,Flume还具有能够将日记写往各类数据目标(可定制)的能力。总的来讲,Flume是一个可扩展、适合复杂环境的海量日记搜集系统。
15. Sqoop(数据库ETL工具)
Sqoop是SQL-to-Hadoop的缩写,要紧用于传统数据库和Hadoop之间传输数据。数据的导入和导出本质上是MapReduce程序,充分利用了MR的并行化和容错性。其中要紧利用的是MP中的Map任务来实现并行导入,导出。
发布者:admin,转转请注明出处:http://www.yc00.com/web/1704469681a1353324.html
评论列表(0条)