Skip to main content
 Web开发网 » 编程语言 » Python语言

「大数据」Hadoop生态系统:分布式计算系统

2021年11月27日6070百度已收录

Apache Ignite Apache Ignite In-Memory Data Fabric是一个分布式内存平台,用于实时计算和处理大规模数据集。它包括分布式键值内存存储,SQL功能,map-reduce和其他计算,分布式数据结构,连续查询,消息和事件子系统,Hadoop和Spark集成。 Ignite是用Java构建的,提供.NET和C ++ API。

Apache IgniteApache Ignite文档Apache MapReduce MapReduce是一种编程模型,用于在群集上使用并行分布式算法处理大型数据集。 Apache MapReduce源自Google MapReduce:大群集上的简化数据处理。当前的Apache MapReduce版本是基于Apache YARN Framework构建的。 YARN代表“Yet-Another-Resource-Negotiator”。它是一个新的框架,有助于编写任意分布式处理框架和应用程序。 YARN的执行模型比早期的MapReduce实现更通用。与原始的Apache Hadoop MapReduce(也称为MR1)不同,YARN可以运行不遵循MapReduce模型的应用程序。 Hadoop YARN试图将Apache Hadoop超越MapReduce进行数据处理。

Apache MapReduce谷歌MapReduce论文编写YARN应用程序Apache Pig Pig提供了一个在Hadoop上并行执行数据流的引擎。它包括一种用于表达这些数据流的语言Pig Latin。 Pig Latin包含许多传统数据操作(连接,排序,过滤等)的运算符,以及用户开发自己的读取,处理和写入数据的功能。猪在Hadoop上运行。它利用了Hadoop分布式文件系统,HDFS和Hadoop的处理系统MapReduce。

Pig使用MapReduce来执行其所有数据处理。它编译Pig Latin脚本,用户将其写入一系列一个或多个MapReduce作业,然后执行它们。 Pig Latin看起来与您看到的许多编程语言不同。 Pig Latin中没有if语句或for循环。这是因为传统的过程和面向对象的编程语言描述了控制流,而数据流是程序的副作用。 Pig Latin专注于数据流。

1. pig.apache.org/2.Pig examples by Alan GatesJAQL JAQL是一种功能性的声明性编程语言,专门用于处理大量结构化,半结构化和非结构化数据。顾名思义,JAQL的主要用途是处理存储为JSON文档的数据,但JAQL可以处理各种类型的数据。例如,它可以支持XML,逗号分隔值(CSV)数据和平面文件。 “JAQL中的SQL”功能允许程序员使用结构化SQL数据,同时使用JSON数据模型,该模型的限制性比结构化查询语言对应项更少。

具体来说,Jaql允许您选择,加入,分组和过滤存储在HDFS中的数据,就像Pig和Hive的混合一样。 Jaql的查询语言受到许多编程和查询语言的启发,包括Lisp,SQL,XQuery和Pig。

JAQL由IBM研究实验室的工作人员于2008年创建,并发布给开源。虽然它继续作为Google Code上的项目托管,其中可下载的版本在Apache 2.0许可下可用,但围绕JAQL的主要开发活动仍然以IBM为中心。该公司提供查询语言作为与InfoSphere BigInsights及其Hadoop平台相关联的工具套件的一部分。与工作流协调器一起使用,BigInsights中使用JAQL在存储,处理和分析作业之间交换数据。它还提供外部数据和服务的链接,包括关系数据库和机器学习数据。

Google Code中的JAQL什么是Jaql?byIBMApache Spark数据分析集群计算框架最初是在加州大学伯克利分校的AMPLab中开发的。 Spark适用于Hadoop开源社区,构建于Hadoop分布式文件系统(HDFS)之上。但是,Spark为Hadoop MapReduce提供了一种更易于使用的替代方案,并且在某些应用程序中,其性能比Hadoop MapReduce等上一代系统快10倍。

Spark是一个用于编写快速分布式程序的框架。 Spark解决了与Hadoop MapReduce类似的问题,但具有快速的内存方法和干净的功能样式API。凭借其与Hadoop和内置工具集成的交互式查询分析(Shark),大规模图形处理和分析(Bagel)以及实时分析(Spark Streaming)的能力,它可以交互式地用于快速处理和查询大型数据集。

为了加快编程速度,Spark在Scala,Java和Python中提供了简洁,简洁的API。您还可以从Scala和Python shell以交互方式使用Spark来快速查询大数据集。 Spark也是Shark背后的引擎,Shark是一个完全与Apache Hive兼容的数据仓库系统,运行速度比Hive快100倍。

Apache Spark Mirror of Spark on Github RDDs - Paper Spark: Cluster Computing... - Paper Spark ResearchApache Storm Storm是一个复杂的事件处理器(CEP)和主要以Clojure编程语言编写的分布式计算框架。是一种分布式实时计算系统,用于处理快速,大量的数据流。 Storm是一种基于主工作者范式的架构。因此,Storm集群主要由主节点和工作节点组成,由Zookeeper协调完成。

Storm使用zeromq(0mq,zeromq),这是一个先进的可嵌入网络库。它提供了一个消息队列,但与面向消息的中间件(MOM)不同,0MQ系统可以在没有专用消息代理的情况下运行。该库旨在具有熟悉的套接字式API。

该项目最初由Nathan Marz和BackType团队创建,该项目在被Twitter收购后开源。 Storm最初是在2011年在BackType开发和部署的。经过7个月的开发,BackType于2011年7月被Twitter收购.Storm于2011年9月开源。

Hortonworks正在开发Storm-on-YARN版本,计划在2013年第四季度完成基础级集成。这是Hortonworks的计划。 Yahoo / Hortonworks还计划在不久的将来将github.com/yahoo/storm-yarn上的Storm-on-YARN代码转移到Apache Storm项目的子项目中。

Twitter最近发布了一款名为“Summingbird”的Hadoop-Storm Hybrid.Summingbird将这两个框架融合为一体,允许开发人员使用Storm进行短期处理,使用Hadoop进行深度数据潜水。旨在通过将批处理和流处理组合成混合系统来减轻批处理和流处理之间的权衡的系统。

Storm Project/ Storm-on-YARNApache Flink Apache Flink(以前称为Stratosphere)在Java和Scala中具有强大的编程抽象,高性能运行时和自动程序优化。它具有对迭代,增量迭代和由大型DAG操作组成的程序的本机支持。

Flink是一个数据处理系统,是Hadoop MapReduce组件的替代品。它带有自己的运行时,而不是构建在MapReduce之上。因此,它可以完全独立于Hadoop生态系统工作。但是,Flink还可以访问Hadoop的分布式文件系统(HDFS)来读取和写入数据,以及Hadoop的下一代资源管理器(YARN)来配置群集资源。由于大多数Flink用户使用Hadoop HDFS来存储他们的数据,因此它已经提供了访问HDFS所需的库。

Apache Flink incubator page Stratosphere siteApache Apex Apache Apex是一个基于Apache YARN的企业级大数据动态平台,它统一了流处理和批处理。它以高度可扩展,高性能,容错,有状态,安全,分布式和易于操作的方式处理大数据。它提供了一个简单的API,使用户能够编写或重用通用Java代码,从而降低编写大数据应用程序所需的专业知识。

Apache Apex-Malhar是Apache Apex平台的补充,它是一个运营商库,可实现希望快速开发应用程序的客户所需的通用业务逻辑功能。这些运营商提供对HDFS,S3,NFS,FTP和其他文件系统的访问; Kafka,ActiveMQ,RabbitMQ,JMS和其他消息系统; MySql,Cassandra,MongoDB,Redis,HBase,CouchDB和其他数据库以及JDBC连接器。该库还包括许多其他常见的业务逻辑模式,可帮助用户显着减少投入生产所需的时间。易于与所有其他大数据技术集成是Apache Apex-Malhar的主要任务之一。

GitHub上提供的Apex是DataTorrent商业产品DataTorrent RTS 3以及其他技术(如数据摄取工具dtIngest)所基于的核心技术。

Apache Apex from DataTorrent Apache Apex main page Apache Apex ProposalNetflix PigPen PigPen是针对Clojure的map-reduce,它编译为Apache Pig。 Clojure是Rich Hickey创建的Lisp编程语言的方言,因此是一种功能通用语言,可在Java虚拟机,公共语言运行时和JavaScript引擎上运行。在PigPen中,没有特殊的用户定义函数(UDF)。定义Clojure函数,匿名或命名,并像在任何Clojure程序中一样使用它们。该工具由美国按需互联网流媒体提供商Netflix公司开源。

GitHub上的PigPenAMPLab SIMR Apache Spark是在Apache YARN中开发的。但是,到目前为止,在Hadoop MapReduce v1集群上运行Apache Spark相对比较困难,即没有安装YARN的集群。通常,用户必须获得在某些机器子集上安装Spark / Scala的权限,这个过程可能非常耗时。 SIMR允许任何有权访问Hadoop MapReduce v1集群的人开箱即用。用户可以直接在Hadoop MapReduce v1之上运行Spark,而无需任何管理权限,也无需在任何节点上安装Spark或Scala。

GitHub上的SIMRFacebook Corona“Map-Reduce的下一个版本”,基于自己的Hadoop分支。当前的MapReduce技术的Hadoop实现使用单个作业跟踪器,这会导致非常大的数据集出现扩展问题.Apache Hadoop开发人员有他们正在创建他们自己的下一代MapReduce,名为YARN,由于公司部署Hadoop和HDFS的高度定制化特性,Facebook工程师对此进行了评估,但是折扣也很明显。像YARN一样,Corona产生了多个工作跟踪器(每个工作一个,在Corona的案例中.

在Github上的CoronaApache REEF Apache REEF™(可保留评估程序执行框架)是一个用于为Apache Hadoop™YARN或Apache Mesos™等集群资源管理器开发可移植应用程序的库。 Apache REEF通过以下功能大大简化了这些资源管理器的开发:

集中控制流程:Apache REEF将分布式应用程序的混乱转变为单个机器中的事件,即作业驱动程序。事件包括容器分配,任务启动,完成和失败。对于失败,Apache REEF尽一切努力使任务抛出的实际“异常”可用于驱动程序。

任务运行时:Apache REEF提供名为Evaluator的Task运行时。评估器在REEF应用程序的每个容器中实例化。评估者可以将数据保存在任务之间的内存中,从而在REEF上实现高效的管道。

支持多个资源管理器:Apache REEF应用程序可以轻松地移植到任何受支持的资源管理器。此外,REEF中的新资源管理器很容易支持。

.NET和Java API:Apache REEF是在.NET中编写YARN或Mesos应用程序的唯一API。此外,单个REEF应用程序可以自由混合和匹配为.NET或Java编写的任务。

插件:Apache REEF允许插件(称为“服务”)扩充其功能集,而不会向核心添加膨胀。 REEF包括许多服务,例如任务MPI启发的组通信(广播,减少,收集,...)和数据入口之间基于名称的通信。

Apache REEF网站Apache Twill Twill是ApacheHadoop®YARN的抽象,它降低了开发分布式应用程序的复杂性,使开发人员能够更专注于业务逻辑。 Twill使用一个简单的基于线程的模型,Java程序员会发现它很熟悉。 YARN可以被视为集群的计算结构,这意味着像Twill这样的YARN应用程序可以在任何Hadoop 2集群上运行。

YARN是一个开源应用程序,它允许Hadoop集群变成一组虚拟机。 Weave由Continuuity开发,最初位于Github上,是一个互补的开源应用程序,它使用类似于Java线程的编程模型,可以轻松编写分布式应用程序。为了消除与Apache上类似命名的项目(名为“Weaver”)的冲突,Weave的名称在转移到Apache孵化时更改为Twill。

斜纹作为扩展代理。 Twill是YARN和YARN上任何应用程序之间的中间件层。在开发Twill应用程序时,Twill处理YARN中的API,类似于Java熟悉的多线程应用程序。在Twill中构建多处理的分布式应用程序非常容易。

Apache Twill IncubatorDamballa Parkour图书馆使用LISP语言Clojure开发MapReduce程序。 Parkour旨在为Hadoop提供深入的Clojure集成。使用Parkour的程序是普通的Clojure程序,使用标准的Clojure函数而不是新的框架抽象。使用Parkour的程序也是完整的Hadoop程序,可以在原始Java Hadoop MapReduce中完全访问所有可能的内容。 1.跑酷GitHub项目

Apache Hama Apache顶级开源项目,允许您在MapReduce之外进行高级分析。许多数据分析技术(如机器学习和图形算法)都需要迭代计算,这就是批量同步并行模型比“普通”MapReduce更有效的地方。

Hama siteDatasalt Pangool一种新的MapReduce范例。用于MR作业的新API,其级别高于Java。

PangoolGitHub PangoolApache Tez Tez是一个开发通用应用程序的提案,该应用程序可用于处理复杂的数据处理任务DAG,并在Apache Hadoop YARN上本机运行。 Tez将MapReduce范例概括为基于将计算表示为数据流图的更强大的框架。 Tez并不直接面向最终用户 - 实际上它使开发人员能够以更好的性能和灵活性构建最终用户应用程序。传统上,Hadoop是一个用于处理大量数据的批处理平台。但是,查询处理的近实时性能有很多用例。还有一些工作负载,例如机器学习,它们不适合MapReduce范例。 Tez帮助Hadoop解决这些用例问题。 Tez框架构成了Stinger计划的一部分(基于Hive的Hadoop基于低延迟的SQL类型查询接口)。

Apache Tez孵化器Hortonworks Apache Tez页面Apache DataFu DataFu基于它提供了更高级语言的Hadoop MapReduce作业和函数的集合,以执行数据分析。它提供常见统计任务(例如分位数,采样),PageRank,流会话以及集合和包操作的功能。 DataFu还为MapReduce中的增量数据处理提供Hadoop作业。 DataFu是最初在LinkedIn开发的Pig UDF(包括PageRank,会话,集合操作,抽样等等)的集合。

DataFu Apache孵化器Pydoop Pydoop是一个用于Hadoop的Python MapReduce和HDFS API,它基于C ++管道和C libhdfs API,允许编写具有HDFS访问权限的完整MapReduce应用程序。 Pydoop与Hadoop内置的Python编程解决方案相比有几个优点,即Hadoop Streaming和Jython:它是一个CPython包,它允许您访问所有标准库和第三方模块,其中一些可能不可用。

SF Pydoop网站Pydoop GitHub项目Kangaroo来自Conductor的Kangaroo开源项目,用于编写消耗Kafka数据的MapReduce作业。介绍性帖子通过使用HFileOutputFormat的MapReduce作业解释了Conductor从Kafka到HBase的用例加载数据。与其他限制为每个Kafka分区的单个InputSplit的解决方案不同,Kangaroo可以在单个分区的流中以不同的偏移量启动多个消费者,以提高吞吐量和并行性。

Kangaroo Introduction Kangaroo GitHub ProjectTinkerPop 用Java编写的TinkerPop Graph计算框架。提供图形系统供应商可以实现的核心API。有各种类型的图形系统,包括内存中的图形库,OLTP图形数据库和OLAP图形处理器。实现核心接口后,可以使用图形遍历语言Gremlin查询基础图形系统,并使用启用TinkerPop的算法进行处理。对于许多人来说,TinkerPop被视为图形计算社区的JDBC。

Apache Tinkerpop提案TinkerPop网站Pachyderm MapReduce Pachyderm是一款全新的MapReduce引擎,构建于Docker和CoreOS之上。在Pachyderm MapReduce(PMR)中,作业是Docker容器(微服务)中的仅提供在软件容器内部署应用程序所需的最少功能,以及用于服务发现和配置共享的内置机制

Pachyderm站点Pachyderm介绍文章Apache Beam Apache Beam是一个开源的统一模型,用于定义和执行数据并行处理管道,以及一组特定于语言的SDK,用于构建管道和运行时特定的Runner以执行它们。

Beam背后的模型源于许多内部Google数据处理项目,包括MapReduce,FlumeJava和Millwheel。 该模型最初被称为“数据流模型”,最初实现为Google Cloud Dataflow,包括用于编写管道的GitHub上的Java SDK和用于在Google Cloud Platform上执行它们的完全托管服务。

2016年1月,Google和许多合作伙伴以Apache Beam(统一批量+ strEAM处理)的名义提交了数据流编程模型和SDK部分作为Apache孵化器提案。

Apache Beam ProposalDataFlow Beam和Spark Comparasion

评论列表暂无评论
发表评论
微信