首页 > 编程知识 正文

hadoop发展历程,hadoop生态圈搭建

时间:2023-05-05 11:18:07 阅读:56970 作者:684

Hadoop是一个可以分布式处理大量数据的软件框架。 具有良好的可靠性、效率和伸缩性。

Hadoop的核心是HDFS和Mapreduce,HDFS还包括YARN。

1,HDFS(hadoop分布式文件系统)

是hadoop系统中数据存储管理的基础。 他是一个高度容错的系统,能够检测并应对硬件故障。

client )剪切文件,访问HDFS,与那么刁难的东西进行交互,获取文件的位置信息,与DataNode进行交互,读写数据。

namenode:Hadoop1.x中只有一个主节点。 管理HDFS的命名空间和块映射信息,配置复制策略,并处理客户端请求。

DataNode:slave节点,保存实际数据,并将保存的信息报告给namenode。

辅助命名:辅助命名并分担其工作量:定期整合fsimage和fsedits,推送至命名; 紧急情况和辅助恢复namenode,但不是namenode热备盘。

2,mapreduce(分布式计算框架)

mapreduce是处理大数据量计算的计算模型。 其中,map根据数据集上的独立元素执行指定操作,生成键-值对格式的中间,reduce对中间结果中同一键的所有值进行规约化,得到最终结果。

job tracker :只有一个主节点管理所有任务、任务/任务监视、错误处理等,将任务分解为一系列任务,并分配给tasktracker。

tack tracker :执行slave节点、map task和reducetask; 与jobtracker交互并报告任务状态。

传递给map task (分析每个数据记录,并将其传递给用户创建的map )运行,并将输出结果写入本地磁盘(对于map—only作业,直接写入HDFS )。

reduce task :从map深入执行的结果中,远程读取输入数据,对数据进行排序,将数据包传递给用户创建的reduce函数后执行。

3, hive(基于hadoop的数据仓库)

Facebook开源,最先用于解决大量结构化日志数据的统计问题。

hive由类似sql的查询语言(hql )确定,将sql转换为mapreduce的任务在hadoop中执行。

4,hbase(分布式列存数据库)

hbase是结构化数据的可伸缩、可靠、高性能、分布式、面向列的动态模式数据库。 与传统的关系数据库不同,hbase采用了bigtable的数据模型。 稀疏排序映射表(key/value )得到增强。 其中,密钥由行密钥、列密钥、时间戳构成,hbase提供对大数据的随机实时读写访问,并且hbase中存储的数据可以由mapreduce处理,可以与数据存储和

5,zookeeper(分布式协作服务)

解决分布式环境中的数据管理问题:统一命名、状态同步、集群管理、配置同步等。

6,sqoop(数据同步工具)

sqoop是sql-to-hadoop的缩写,主要用于传统数据库和hadoop之间的数据传输。

数据导入和导出本质上是一个mapreduce程序,利用了MR的并行化和容错。

7,pig(基于hadoop的数据流系统)

定义了一种名为-pig latin的数据流语言,它将脚本转换为mapreduce任务并在hadoop中运行。

通常用于离线分析。

8,mahout(数据挖掘算法库)

mahout的主要目标是创建可扩展机器学习领域的经典算法实现,目的是帮助开发人员更容易、更快地只创建APP应用程序。 mahout目前包括聚类、分类、推荐引擎(协同过滤)和频繁聚集挖掘等广泛使用的数据挖掘方法。 除了算法外,mahout还包括数据输入/输出工具,以及数据挖掘支持体系结构,如与其他存储系统(如数据库、mongoDB和Cassandra )的集成。

9,flume(日志收集工具)

cloudera开源日志收集系统具有分布式、高可靠性、容错性、易于定制和扩展的特点。 他将数据生成、传输、处理和将路径写入目标的过程抽象为数据流。 在特定的数据流中,数据源支持在flume中自定义数据发送源,并支持收集各种协议数据。

10,资源管理器的简单介绍(YARN和mesos)

随着互联网的飞速发展,基于数据密集型APP应用的计算框架层出不穷,从支持离线处理的mapreduce,到支持在线处理的storm,再到迭代计算框架例如,搜索引擎公司可以采用以下技术方法

下:网页建索引采用mapreduce框架,自然语言处理/数据挖掘采用spark,对性能要求到的数据挖掘算法用mpi等。公司一般将所有的这些框架部署到一个公共的集群中,让它们共享集群的资源,并对资源进行统一使用,这样便诞生了资源统一管理与调度平台,典型的代表是mesos和yarn。 

 

11. Oozie(工作流调度器)

Oozie是一个可扩展的工作体系,集成于Hadoop的堆栈,用于协调多个MapReduce作业的执行。它能够管理一个复杂的系统,基于外部事件来执行,外部事件包括数据的定时和数据的出现。

Oozie工作流是放置在控制依赖DAG(有向无环图 Direct Acyclic Graph)中的一组动作(例如,Hadoop的Map/Reduce作业、Pig作业等),其中指定了动作执行的顺序。

Oozie使用hPDL(一种XML流程定义语言)来描述这个图。

12. Yarn(分布式资源管理器)

YARN是下一代MapReduce,即MRv2,是在第一代MapReduce基础上演变而来的,主要是为了解决原始Hadoop扩展性较差,不支持多计算框架而提出的。

Yarn是下一代 Hadoop 计算平台,yarn是一个通用的运行时框架,用户可以编写自己的计算框架,在该运行环境中运行。

用于自己编写的框架作为客户端的一个lib,在运用提交作业时打包即可。该框架为提供了以下几个组件:

  - 资源管理:包括应用程序管理和机器资源管理

  - 资源双层调度

  - 容错性:各个组件均有考虑容错性

  - 扩展性:可扩展到上万个节点

13. Mesos(分布式资源管理器)

  Mesos诞生于UC Berkeley的一个研究项目,现已成为Apache项目,当前有一些公司使用Mesos管理集群资源,比如Twitter。

  与yarn类似,Mesos是一个资源统一管理和调度的平台,同样支持比如MR、steaming等多种运算框架。

14. Tachyon(分布式内存文件系统)

Tachyon(/'tæki:ˌɒn/ 意为超光速粒子)是以内存为中心的分布式文件系统,拥有高性能和容错能力,

能够为集群框架(如Spark、MapReduce)提供可靠的内存级速度的文件共享服务。

Tachyon诞生于UC Berkeley的AMPLab。

15. Tez(DAG计算模型)

Tez是Apache最新开源的支持DAG作业的计算框架,它直接源于MapReduce框架,核心思想是将Map和Reduce两个操作进一步拆分,

即Map被拆分成Input、Processor、Sort、Merge和Output, Reduce被拆分成Input、Shuffle、Sort、Merge、Processor和Output等,

这样,这些分解后的元操作可以任意灵活组合,产生新的操作,这些操作经过一些控制程序组装后,可形成一个大的DAG作业。

目前hive支持mr、tez计算模型,tez能完美二进制mr程序,提升运算性能。

16. Spark(内存DAG计算模型)

Spark是一个Apache项目,它被标榜为“快如闪电的集群计算”。它拥有一个繁荣的开源社区,并且是目前最活跃的Apache项目。

最早Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架。

Spark提供了一个更快、更通用的数据处理平台。和Hadoop相比,Spark可以让你的程序在内存中运行时速度提升100倍,或者在磁盘上运行时速度提升10倍

spark是个开源的数据 分析集群计算框架,最初由加州大学伯克利分校AMPLab,建立于HDFS之上。spark与hadoop一样,用于构建大规模,延迟低的数据分析应用。spark采用Scala语言实现,使用Scala作为应用框架。

spark采用基于内存的分布式数据集,优化了迭代式的工作负载以及交互式查询。

与hadoop不同的是,spark与Scala紧密集成,Scala象管理本地collective对象那样管理分布式数据集。spark支持分布式数据集上的迭代式任务,实际上可以在hadoop文件系统上与hadoop一起运行(通过YARN,MESOS等实现)。

17. Giraph(图计算模型)

Apache Giraph是一个可伸缩的分布式迭代图处理系统, 基于Hadoop平台,灵感来自 BSP (bulk synchronous parallel) 和 Google 的 Pregel。

最早出自雅虎。雅虎在开发Giraph时采用了Google工程师2010年发表的论文《Pregel:大规模图表处理系统》中的原理。后来,雅虎将Giraph捐赠给Apache软件基金会。

目前所有人都可以下载Giraph,它已经成为Apache软件基金会的开源项目,并得到Facebook的支持,获得多方面的改进。

18. GraphX(图计算模型)

Spark GraphX最先是伯克利AMPLAB的一个分布式图计算框架项目,目前整合在spark运行框架中,为其提供BSP大规模并行图计算能力。

19. MLib(机器学习库)

Spark MLlib是一个机器学习库,它提供了各种各样的算法,这些算法用来在集群上针对分类、回归、聚类、协同过滤等。

20. Streaming(流计算模型)

Spark Streaming支持对流数据的实时处理,以微批的方式对实时数据进行计算

21. Kafka(分布式消息队列)

Kafka是Linkedin于2010年12月份开源的消息系统,它主要用于处理活跃的流式数据。

活跃的流式数据在web网站应用中非常常见,这些数据包括网站的pv、用户访问了什么内容,搜索了什么内容等。

这些数据通常以日志的形式记录下来,然后每隔一段时间进行一次统计处理。

22. Phoenix(hbase sql接口)

Apache Phoenix 是HBase的SQL驱动,Phoenix 使得Hbase 支持通过JDBC的方式进行访问,并将你的SQL查询转换成Hbase的扫描和相应的动作。

23. ranger(安全管理工具)

Apache ranger是一个hadoop集群权限框架,提供操作、监控、管理复杂的数据权限,它提供一个集中的管理机制,管理基于yarn的hadoop生态圈的所有数据权限。

24. knox(hadoop安全网关)

Apache knox是一个访问hadoop集群的restapi网关,它为所有rest访问提供了一个简单的访问接口点,能完成3A认证(Authentication,Authorization,Auditing)和SSO(单点登录)等

25. falcon(数据生命周期管理工具)

Apache Falcon 是一个面向Hadoop的、新的数据处理和管理平台,设计用于数据移动、数据管道协调、生命周期管理和数据发现。它使终端用户可以快速地将他们的数据及其相关的处理和管理任务“上载(onboard)”到Hadoop集群。

26.Ambari(安装部署配置管理工具)

Apache Ambari 的作用来说,就是创建、管理、监视 Hadoop 的集群,是为了让 Hadoop 以及相关的大数据软件更容易使用的一个web工具。

11,其他的一些开源组件:

 1)cloudrea impala:

  一个开源的查询引擎。与hive相同的元数据,SQL语法,ODBC驱动程序和用户接口,可以直接在HDFS上提供快速,交互式SQL查询。impala不再使用缓慢的hive+mapreduce批处理,而是通过与商用并行关系数据库中类似的分布式查询引擎。可以直接从HDFS或者Hbase中用select,join和统计函数查询数据,从而大大降低延迟。

2)storm

storm是一个分布式的,容错的计算系统,storm属于流处理平台,多用于实时计算并更新数据库。storm也可被用于“连续计算”,对数据流做连续查询,在计算时将结果一流的形式输出给用户。他还可被用于“分布式RPC”,以并行的方式运行昂贵的运算。

3)kafka

 kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息

4)redis

 Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。