Apache Hadoop项目开发用于可靠、可扩展的分布式计算的开源软件。
Apache Hadoop软件库是一个框架,允许使用简单的编程模型跨计算机集群分布式处理大型数据集。 它旨在从单个服务器扩展到数千台计算机,每台计算机都提供本地计算和存储。 库本身不是依靠硬件来提供高可用性,而是设计用于检测和处理应用程序层的故障,从而在计算机集群之上提供高可用性服务,每个计算机都可能容易出现故障。
此文是Hadoop相关项目的简介,重点关注自由/开源软件。
相关文章
The Hadoop Ecosystem Table
HADOOP ECOSYSTEM
几个有关hadoop生态系统的架构图
你也能看懂Hadoop——Hadoop生态体系
HADOOP生态圈介绍
Hadoop分布式文件系统(HDFS)是一种分布式文件系统,设计用于在商用硬件上运行。 它与现有的分布式文件系统有许多相似之处。 但是,与其他分布式文件系统的差异很大。 HDFS具有高度容错能力,旨在部署在低成本硬件上。 HDFS提供对应用程序数据的高吞吐量访问,适用于具有大型数据集的应用程序。 HDFS放宽了一些可移植性操作系统接口(POSIX)要求,以实现对文件系统数据的流式访问。 HDFS最初是作为Apache Nutch网络搜索引擎项目的基础设施而构建的。 HDFS是Apache Hadoop Core项目的一部分。
GlusterFS是一个免费的开源可扩展网络文件系统。使用常见的现成硬件,你可以为流媒体、数据分析以及其他数据和带宽密集型任务创建大型分布式存储解决方案。
GlusterFS最初由Gluster,然后由Red Hat(2011年购买Gluster)开发。2012年6月,Red Hat Storage Server被宣布为商业支持的GlusterFS与Red Hat Enterprise Linux的集成。 Gluster文件系统,现在称为Red Hat Storage Server。
Quantcast File System (QFS) 是一个高性能、容错、分布式的文件系统,其开发是用于支持 MapReduce 处理或者需要顺序读写大文件的应用。QFS是用C++编写的,是一个开源的文件系统,和Hadoop Distributed File Syetem (HDFS)文件系统兼容,更优于HDFS。他采用Reed-Solomon 擦出编码方式,即6(数据块)+3(校验块)替代了HDFS的3倍复制策略,因此,有如下优势:
Ceph是一个免费的软件存储平台,旨在从单个分布式计算机集群中呈现对象,块和文件存储。 Ceph的主要目标是完全分发、没有单点故障、可扩展到艾字节级别(exabytes=EB,1EB=1024PB=2^60字节),并且可以自由使用。 数据被复制,使其具有容错能力。
与当今可用的许多对象存储系统相比,Ceph的对象存储系统提供了重要的功能:Ceph提供了具有POSIX语义的传统文件系统接口。 对象存储系统是一项重大创新,但它们是对传统文件系统的补充而非替代。 随着遗留应用程序的存储需求增长,组织也可以配置其遗留应用程序以使用Ceph文件系统! 这意味着你可以为对象、块和基于文件的数据存储运行在一个存储群集。
Lustre文件系统是一种高性能的分布式文件系统,适用于大型网络和高可用性环境。Lustre是源自Linux和Cluster的混成词。最早在1999年,由皮特·布拉姆(英语:Peter Braam)创建的集群文件系统公司(英语:Cluster File Systems Inc.)开始研发,于2003年发布 Lustre 1.0。采用GNU GPLv2开源码授权。
传统上,Lustre被配置为管理存储区域网络(SAN)内的远程数据存储磁盘设备,SAN是通过小型计算机系统接口(SCSI)协议进行通信的两个或多个远程连接的磁盘设备。这包括光纤通道,以太网光纤通道(FCoE),串行连接SCSI(SAS)甚至iSCSI。
使用Hadoop HDFS,该软件需要一个专用的计算机集群来运行。但是,为其他目的运行高性能计算集群的人通常不会运行HDFS,这会使他们留下一堆计算能力,几乎可以肯定受益于一些map reduce任务,并且无法将这些能力用于运行中的Hadoop。英特尔注意到了这一点,并且在其发布的Hadoop发行版2.5版本中增加了对Lustre的支持:用于Apache Hadoop软件的英特尔 HPC分发,这是一款将英特尔分布式Apache Hadoop软件与英特尔结合的新产品适用于Lustre软件的企业版。这是与Lustre集成的唯一Apache Hadoop发行版,Lustre是许多世界上最快的超级计算机使用的并行文件系统
Alluxio是世界上第一个以内存为中心的虚拟分布式存储系统,它统一了数据访问并桥接了计算框架和底层存储系统。应用程序只需与Alluxio连接即可访问存储在任何底层存储系统中的数据。此外,Alluxio以内存为中心的架构使数据访问速度比现有解决方案快几个数量级。
在大数据生态系统中,Alluxio介于计算框架或作业(如Apache Spark、Apache MapReduce或Apache Flink)和各种存储系统(如Amazon S3、OpenStack Swift、GlusterFS、HDFS、Ceph或OSS)之间。 Alluxio为堆栈带来了显著的性能提升;例如,百度使用Alluxio将其数据分析性能提高了30倍。除了性能之外,Alluxio还将新工作负载与存储在传统存储系统中的数据相结合。用户可以使用其独立群集模式运行Alluxio,例如在Amazon EC2上运行,或者使用Apache Mesos或Apache Yarn启动Alluxio。
Alluxio兼容Hadoop。这意味着现有的Spark和MapReduce程序可以在Alluxio之上运行而无需更改任何代码。该项目是开源的(Apache License 2.0),并在多家公司部署。它是增长最快的开源项目之一。 Alluxio拥有不到三年的开源历史,吸引了来自50多家机构的160多名贡献者,包括阿里巴巴、Alluxio、百度、卡内基梅隆大学、IBM、英特尔、南京大学、红帽、加州大学伯克利分校和雅虎。该项目是伯克利数据分析堆栈(BDAS)的存储层,也是Fedora发行版的一部分。
GridGain是在Apache 2.0下获得许可的开源项目。该平台的主要部分之一是内存中的Apache Hadoop加速器,旨在通过将数据和计算都带入内存来加速HDFS和Map/Reduce。这项工作是通过GGFS-Hadoop兼容的内存文件系统完成的。对于I/O密集型作业,GridGain GGFS的性能比标准HDFS快近100倍。
2014 年3月,GridGain公司将该软件90%以上的功能和代码开源,仅在商业版中保留了高端企业级功能,如安全性,数据中心复制,先进的管理和监控等。 2015年1月,GridGain通过Apache 2.0许可进入Apache的孵化器进行孵化,很快就于8月25日毕业并且成为Apache的顶级项目Apache Ignite。
从GridGain Systems转述Dmitriy Setrakyan谈论有关Tachyon的GGFS:
XtreemFS是一种通用存储系统,可满足单个部署中的大多数存储需求。 它是开源的,不需要特殊的硬件或内核模块,可以安装在Linux,Windows和OS X上.XtreemFS运行分布式并通过复制提供弹性。 XtreemFS卷可以通过用户空间文件系统(FUSE)组件访问,该组件提供与POSIX类似语义的正常文件交互。 此外,还包含Hadoops FileSystem接口的实现,使XtreemFS可以与Hadoop、Flink和Spark一起使用。 XtreemFS根据新BSD许可证授权。 XtreemFS项目由柏林Zuse研究所开发。
Apache Ignite是一个以内存为中心的分布式数据库,缓存和处理平台
事务性,分析性和流式工作负载,以PB级的速度提供内存速度。它包括分布式键值内存存储、SQL功能、map-reduce和其他计算、分布式数据结构、连续查询、消息和事件子系统、Hadoop和Spark集成。 Ignite是用Java构建的,提供.NET和C ++ API。
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 Pig是一个分析大型数据集的平台,它包含用于表达数据分析程序的高级语言,以及用于评估这些程序的基础结构。 Pig程序的显着特性是它们的结构适合于大量并行化,这反过来使它们能够处理非常大的数据集。
目前,Pig的基础设施层由生成Map-Reduce程序序列的编译器组成,已经存在大规模并行实现(例如,Hadoop子项目)。 Pig的语言层目前由一种名为Pig Latin的文本语言组成,它具有以下关键属性:
JAQL是一种功能性的声明性编程语言,专门用于处理大量结构化,半结构化和非结构化数据。顾名思义,JAQL的主要用途是处理存储为JSON文档的数据,但JAQL可以处理各种类型的数据。例如,它可以支持XML,逗号分隔值(CSV)数据和平面文件。 “JAQL内置SQL”功能允许程序员使用结构化SQL数据,同时使用比结构化查询语言更少限制的JSON数据模型。
具体来说,Jaql允许你select, join, group和filter存储在HDFS中的数据,就像Pig和Hive的混合一样。 Jaql的查询语言受到许多编程和查询语言的启发,包括Lisp,SQL,XQuery和Pig。
JAQL由IBM研究实验室的工作人员于2008年创建,并发布开源。虽然它继续作为Google Code上的项目托管,其中可下载的版本在Apache 2.0许可下可用,但围绕JAQL的主要开发活动仍然以IBM为中心。该公司提供查询语言作为与InfoSphere BigInsights(他自己的Hadoop平台)相关联的工具套件的一部分。与工作流协调器一起使用,BigInsights中使用JAQL在存储、处理和分析作业之间交换数据。它还提供外部数据和服务的链接,包括关系数据库和机器学习数据。
数据分析集群计算框架最初是在加州大学伯克利分校的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 Storm是一个免费的开源分布式实时计算系统。 Storm可以轻松可靠地处理无限数据流,实现Hadoop对批处理所做的实时处理。 Storm非常简单,可以与任何编程语言一起使用,并且使用起来很有趣!
Storm有许多用例:实时分析、在线机器学习、连续计算、分布式RPC、ETL等。 Storm很快:一个基准测试表示每个节点每秒处理超过一百万个元组。 它具有可扩展性、容错性、可确保你的数据得到处理,并且易于设置和操作。
Storm集成了你已经使用的队列和数据库技术。 Storm拓扑消耗数据流并以任意复杂的方式处理这些流,然后在计算的每个阶段之间重新划分流。
该项目最初由Nathan Marz和BackType团队创建,该项目在被Twitter收购后开源。 Storm最初是在2011年在BackType开发和部署的。经过7个月的开发,BackType于2011年7月被Twitter收购.Storm于2011年9月开源。
Apache Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。 Flink设计为在所有常见的集群环境中运行,以内存速度和任何规模执行计算。
Apache Flink(以前称为Stratosphere)在Java和Scala中具有强大的编程抽象,高性能运行时和自动程序优化。 它具有对迭代,增量迭代和由大型DAG操作组成的程序的本机支持。
Flink是一个数据处理系统,是Hadoop MapReduce组件的替代品。 它带有自己的运行时,而不是构建在MapReduce之上。 因此,它可以完全独立于Hadoop生态系统工作。 但是,Flink还可以访问Hadoop的分布式文件系统(HDFS)来读取和写入数据,以及Hadoop的下一代资源管理器(YARN)来配置群集资源。 由于大多数Flink用户使用Hadoop HDFS来存储他们的数据,因此它已经提供了访问HDFS所需的库。
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的主要任务之一。
PigPen是Clojure的map-reduce,它编译为Apache Pig。Clojure是Rich Hickey创建的Lisp编程语言的方言,因此是一种功能通用语言,可在Java虚拟机,公共语言运行时和JavaScript引擎上运行。 在PigPen中,没有特殊的用户定义函数(UDF)。 定义Clojure函数,匿名或命名,并像在任何Clojure程序中一样使用它们。 该工具由美国按需互联网流媒体提供商Netflix公司开源。
Apache Spark是在Apache YARN中开发的。 但是,到目前为止,在Hadoop MapReduce v1集群上运行Apache Spark相对比较困难,即没有安装YARN的集群。 通常,用户必须获得在某些机器子集上安装Spark/Scala的权限,这个过程可能非常耗时。 SIMR允许任何有权访问Hadoop MapReduce v1集群的人开箱即用。 用户可以直接在Hadoop MapReduce v1之上运行Spark,而无需任何管理权限,也无需在任何节点上安装Spark或Scala。
来自Facebook的“Map-Reduce的下一个版本”,基于自己的Hadoop分支。当前的MapReduce技术的Hadoop实现使用单个作业跟踪器,这会导致非常大的数据集出现扩展问题。Apache Hadoop开发人员一直在创建他们自己的下一代MapReduce,称为YARN,由于公司部署Hadoop和HDFS的高度定制化特性,Facebook工程师对此进行了评估,但对其打了折扣。Corona与YARN一样,产生了多个工作跟踪器(在Corona案例中每个作业一个)。
Apache REEF(可持续计算执行框架)是一个用于为集群资源管理器(如Apache Hadoop YARN或Apache Mesos)开发可移植应用程序的库。 Apache REEF通过以下功能大大简化了这些资源管理器的开发:
异常(Exception)
。Broadcast
, Reduce
, Gather
, …)和数据入口。Twill是ApacheHadoop®YARN的抽象,它降低了开发分布式应用程序的复杂性,使开发人员能够更专注于业务逻辑。 Twill使用一个简单的基于线程的模型,Java程序员会发现它很熟悉。 YARN可以被视为集群的计算结构,这意味着像Twill这样的YARN应用程序可以在任何Hadoop 2集群上运行。
YARN是一个开源应用程序,它允许Hadoop集群变成一组虚拟机。 Weave由Continuuity开发,最初位于Github上,是一个互补的开源应用程序,它使用类似于Java线程的编程模型,可以轻松编写分布式应用程序。为了消除与Apache上类似命名的项目(名为“Weaver”)的冲突,Weave的名称在转移到Apache孵化时更改为Twill。
Twill作为扩展代理。 Twill是YARN和YARN上任何应用程序之间的中间件层。在开发Twill应用程序时,Twill处理YARN中的API,类似于Java熟悉的多线程应用程序。在Twill中构建多处理的分布式应用程序非常容易。
用于使用类LISP语言Clojure开发MapReduce程序的库。 Parkour旨在为Hadoop提供深入的Clojure集成。 使用Parkour的程序是普通的Clojure程序,使用标准的Clojure函数而不是新的框架抽象。 使用Parkour的程序也是完整的Hadoop程序,可以完全访问原始Java Hadoop MapReduce中的所有内容。
Apache Hama是一个大数据分析框架,它使用批量同步并行(BSP)计算模型,于2012年成立,是Apache Software Foundation的顶级项目。它不仅提供了纯粹的BSP编程模型,还提供了由Google的Pregel和DistBelief启发的顶点(vertex)和神经元(neuron)中心编程模型。
Pangool是一个Java,底层MapReduce API。 它旨在替代Hadoop Java MapReduce API。 通过实现中间的基于Tuple的模式并方便地配置作业,使用Hadoop Java MapReduce API产生的许多偶然复杂性就消失了。 像二级排序(secondary)和缩减侧连接(reduce-side)这样的东西变得非常容易实现和理解。 Pangool的性能与Hadoop Java MapReduce API的性能相当。 Pangool还通过将多个输出和输入设置为头等并允许基于实例的配置来增强Hadoop的API。
Apache TEZ项目旨在构建一个应用程序框架,该框架允许处理数据的任务有复杂的有向非循环图(directed-acyclic-graph)。它目前在Apache Hadoop YARN上面构建。
通过以下方式授权最终用户:
执行性能:
通过允许像Apache Hive和Apache Pig这样的项目运行复杂的有向无环图(DAG)任务,Tez可以用来处理数据,之前需要多个MR作业,现在只要一个Tez作业。
Apache DataFu是用于在Hadoop中处理大规模数据的库的集合。 该项目的灵感来自对数据挖掘和统计数据的稳定、经过良好测试的库的需求。
DataFu基于它提供了更高级语言的Hadoop MapReduce作业和函数的集合,以执行数据分析。 它提供常见统计任务(例如分位数,采样)、PageRank、流会话以及集合和包操作的功能。 DataFu还为MapReduce中的增量数据处理提供Hadoop作业。 DataFu是最初在LinkedIn开发的Pig UDF(包括PageRank,会话,集合操作,抽样等等)的集合。
它由两个库组成:
Pydoop是一个用于Hadoop的Python MapReduce和HDFS API,它基于C ++ Pipes和C libhdfs API,允许编写具有HDFS访问权限的成熟MapReduce应用程序。 Pydoop与Hadoop内置的Python编程解决方案相比有几个优点,即Hadoop Streaming和Jython:它是一个CPython包,它允许你访问所有标准库和第三方模块,其中一些可能不可用。
Conductor的开源项目,用于编写消耗Kafka数据的MapReduce作业。 使用HFileOutputFormat的MapReduce作业从Kafka到HBase加载数据。 与其他限制为每个Kafka分区的单个InputSplit的解决方案不同,Kangaroo可以在单个分区的流中以不同的偏移量启动多个消费者,以提高吞吐量和并行性。
用Java编写的图形计算框架。 提供图形系统供应商可以实现的核心API。 有各种类型的图形系统,包括内存中的图形库,OLTP图形数据库和OLAP图形处理器。 实现核心接口后,可以使用图形遍历语言Gremlin查询基础图形系统,并使用启用TinkerPop的算法进行处理。 对于许多人来说,TinkerPop被视为图形计算社区的JDBC。
Pachyderm的基础技术是开源的。 该开源核心旨在通过与语言无关的系统实现可持续数据科学工作流,以便使用数据流水线(data pipelining)进行数据版本(data versioning)控制。
Pachyderm允许你部署和管理多级、语言无关的数据管道,同时保持完整的可重复性和出处。
Pachyderm是一款全新的MapReduce引擎,基于Docker和CoreOS构建。在Pachyderm MapReduce(PMR)中,作业是Docker容器(微服务)中的HTTP服务器。你为Pachyderm提供Docker镜像,它将自动在整个群集中将其分发到你的数据旁边。数据通过HTTP提交到容器,结果存储回文件系统。你可以使用你想要的任何语言实现Web服务器并引入任何库。 Pachyderm还为系统中的所有作业及其依赖项创建DAG,并自动调度管道,使得每个作业在依赖关系完成之前不会运行。 Pachyderm中的所有东西都“在差异中说话”,因此它确切地知道哪些数据已经改变以及管道的哪些子集需要重新运行。 CoreOS是一个基于Chrome OS的开源轻量级操作系统,实际上CoreOS是Chrome OS的一个分支。 CoreOS仅提供在软件容器内部署应用程序所需的最少功能,以及用于服务发现和配置共享的内置机制。
Apache Beam是一个开源的统一模型,用于定义和执行数据并行处理管道,以及一组特定于语言的SDK,用于构造管道和运行时特定的Runner以执行它们。
Beam背后的模型源于许多内部Google数据处理项目,包括MapReduce,FlumeJava和Millwheel。 该模型最初被称为“数据流模型”,最初实现为Google Cloud Dataflow,包括用于编写管道的GitHub上的Java SDK和用于在Google Cloud Platform上执行它们的完全托管服务。
2016年1月,Google和许多合作伙伴以Apache Beam(统一Batch + strEAM处理)的名义提交了数据流编程模型和SDK部分作为Apache孵化器提案。
Apache HBase是Hadoop数据库,是一个分布式、可扩展的大数据存储。
当你需要对大数据进行随机,实时读/写访问时,请使用Apache HBase。 该项目的目标是托管非常大的表 - 数十亿行X百万列 - 在商用硬件集群上。 Apache HBase是一个开源的、分布式的、版本化的非关系数据库,模仿Google的Bigtable:Chang等人的结构化数据分布式存储系统。 正如Bigtable利用Google文件系统提供的分布式数据存储一样,Apache HBase在Hadoop和HDFS之上提供类似Bigtable的功能。
当你需要可扩展性和高可用性而不影响性能时,Apache Cassandra数据库是正确的选择。 商用硬件或云基础架构的线性可扩展性和经过验证的容错使其成为关键任务数据的完美平台。 Cassandra对跨多个数据中心进行复制的支持是同类产品中最好的,可以为你的用户提供更低的延迟,并让你高枕无忧,因为他们知道你可以在区域停电中幸存下来。
Apache Cassandra是分布式Non-SQL DBMS,它是一个BDDB。 MR可以从Cassandra检索数据。 这个BDDB可以在没有HDFS的情况下运行,也可以在HDFS(Cassandra的DataStax分支)之上运行。 HBase及其所需的支持系统源于最初的Google BigTable和谷歌文件系统设计(从2003年谷歌发布的谷歌文件系统论文和2006年发布的BigTable论文中得知)。 另一方面,Cassandra是最近由Facebook编写的独立数据库系统的开源分支,在实现BigTable数据模型时,使用受亚马逊Dynamo启发的系统来存储数据(事实上,Cassandra的初始开发工作很多是由两名从亚马逊招募到Facebook的Dynamo工程师执行)。
HBase是基于Google的bigtable的论文实现的列式数据库,cap理论中更倾向于强调c(副本数据一致性)和p(分区容错性)。而Cassandra是号称dynamo 加上 bigtable(数据模型)的实现,cap中强调a(可用性) 和 p。而且底层都是使用lsm-tree 来做存储引擎的核心数据结构;
HBase基本上就是bigtable的开源实现,对标的bigtable的chubby(分布式锁服务)HBase有对应的zookeeper,HBase用regionserver管理region里的数据,实际上的数据副本容错的机制是交付给底层的分布式文件系统hdfs,类比bigtable的gfs,HBase有hmaster做元信息管理。Cassandra在架构上更多借鉴了dynamo,一种完全的区中心对等的分布式数据库,她的每个节点维护一份元信息,每一个节点在集群中的身份完全一样。
Hypertable在竞争中提供最高效率和卓越性能,从而节省大量成本。
数据库系统受到Google BigTable启发。 该项目基于多年来解决大规模数据密集型任务的工程师的经验。 Hypertable运行在分布式文件系统之上,例如Apache Hadoop DFS,GlusterFS或Kosmos文件系统(KFS)。 它几乎完全用C ++编写。
分布式键/值存储是一个健壮,可扩展,高性能的数据存储和检索系统。 Apache Accumulo基于Google的BigTable设计,基于Apache Hadoop,Zookeeper和Thrift。 Accumulo是由NSA创建的具有安全特征的软件。
Apache Kudu完善了Hadoop的存储层,以实现对快速数据的快速分析。分布式、列式、关系数据存储为分析用例优化,需要非常快的读和有竞争力的写速度。
Apache Parquet是一种列式存储格式,可用于Hadoop生态系统中的任何项目,无论选择何种数据处理框架,数据模型或编程语言。
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
RethinkDB用于存储JSON文档,并且可以轻松扩展到多台计算机。 它有一个令人愉快的查询语言,支持非常有用的查询,如表连接和分组,并且易于设置和学习。
RethinkDB最早是作为一个对SSD进行专门优化的MySQL存储引擎出现的,其特点在于对SSD的充分利用。而目前RethinkDB已经脱离MySQL成为一个独立的存储。
ArangoDB是一个原生多模型数据库,兼有key/value键/值对、graph图和document文档数据模型,提供了涵盖三种数据模型的统一的数据库查询语言,并允许在单个查询中混合使用三种模型。基于其本地集成多模型特性,你可以搭建高性能程序,并且这三种数据模型均支持水平扩展。
一个开源的功能数据库,支持复杂事件处理。 它为使用事件源的应用程序或存储时间序列数据的应用程序提供了持久性引擎。 Event Store使用C#,C++编写,用于在Linux或Windows上运行在Mono或 .NET CLR上的服务器。 使用Event Store的应用程序可以用JavaScript编写。 事件源(ES)是一种通过存储确定应用程序当前状态的历史记录来保持应用程序状态的方法。
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。
Redis是一个开源(BSD许可)内存数据结构存储,用作数据库、缓存和消息代理。 它支持数据结构,如字符串,散列,列表,集合,带有范围查询的排序集,位图,超级日志,带有半径查询和流的地理空间索引。 Redis具有内置复制,Lua脚本,LRU驱逐,事务和不同级别的磁盘持久性,并通过Redis Sentinel提供高可用性并使用Redis Cluster自动分区。
Voldemort是一个分布式键值存储系统。它在LinkedIn上被许多关键服务用于为网站的大部分提供动力。
RocksDB是一个可嵌入的持久键值存储,用于快速存储。 RocksDB也可以作为客户端 - 服务器数据库的基础,但我们目前的重点是嵌入式工作负载。
OpenTSDB是一个在HBase之上编写的分布式,可扩展的时间序列数据库(TSDB)。 编写OpenTSDB是为了满足一个共同的需求:存储,索引和提供从计算机系统(网络设备,操作系统,应用程序)大规模收集的指标,并使这些数据易于访问和可扩展。
一个开源数据库,具有用于文档,图形和键值的灵活数据模型。 使用方便的类似sql的查询语言或JavaScript扩展构建高性能应用程序。
Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。Neo4j因其嵌入式、高性能、轻量级等优势,越来越受到关注。
TitanDB是一个高度可扩展的图形数据库,针对存储和查询大型图形进行了优化,其中数十亿个顶点和边缘分布在多机群集中。 Titan是一个可以支持数千个并发用户的事务数据库。
NewSQL 是对各种新的可扩展/高性能数据库的简称,这类数据库不仅具有NoSQL对海量数据的存储管理能力,还保持了传统数据库支持ACID和SQL等特性。
TokuDB是MySQL和MariaDB的存储引擎,专为写入密集型工作负载的高性能而设计。 它通过分形树索引实现了这一点。 TokuDB是一个可扩展的,ACID和MVCC兼容的存储引擎。 TokuDB是在MySQL中实现大数据的技术之一。
HandlerSocket是MySQL/MariaDB(MySQL的存储引擎)的NoSQL插件。 它作为mysqld进程内的守护进程,接受TCP连接,并从客户端执行请求。 HandlerSocket不支持SQL查询。 相反,它支持对表进行简单的CRUD操作。 在某些情况下,HandlerSocket可以比mysqld/libmysql快得多,因为它具有较低的CPU,磁盘和网络开销。
Akiban Server是一个开源数据库,它将文档存储和关系数据库结合在一起。 开发人员可以获得强大的文档访问以及令人惊讶的强大SQL。
Drizzle是MySQL v6.0代码库的重新设计版本,围绕着具有微内核架构的核心概念而设计。 查询缓存和身份验证系统等功能现在是数据库的插件,它遵循MySQL 5.1中引入的“可插拔存储引擎”的一般主题。 它支持PAM,LDAP和HTTP AUTH,通过它提供的插件进行身份验证。 通过其插件系统,它目前支持记录到文件,系统日志和RabbitMQ和Gearman等远程服务。 Drizzle是一个符合ACID标准的关系数据库,通过MVCC设计支持事务。
Haeinsa是HBase的可线性扩展的多行、多表事务库。 如果你的HBase集群需要强大的ACID语义,请使用Haeinsa。 是基于谷歌Perlocator的概念。
Open-source, distributed, realtime, semi-structured database. Some Features: Full-text search, Fast realtime updates, Structured and faceted search, BQL: SQL-like query language, Fast key-value lookup, High performance under concurrent heavy update and query volumes, Hadoop integration
开源、分布式、实时、半结构化数据库。 一些功能:全文搜索,快速实时更新,结构化和分面搜索,BQL:类似SQL的查询语言,快速键值查找,并发大量更新和查询卷下的高性能,Hadoop集成
SkyDB是一个开源数据库,用于对行为数据进行灵活,高性能的分析。 对于某些类型的数据,例如点击流数据和日志数据,它可能比SQL数据库或Hadoop等传统方法快几个数量级。
BayesDB是一个贝叶斯数据库表,用户可以像查询数据本身一样轻松地查询表格数据的可能含义。 使用内置贝叶斯查询语言(BQL),没有统计学训练的用户可以解决基本的数据科学问题,例如检测变量之间的预测关系,推断缺失值,模拟可能的观察结果以及识别统计上类似的数据库条目。
InfluxDB是一个开源的分布式时间序列数据库,没有外部依赖关系。 它对记录指标,事件和执行分析非常有用。 它具有内置的HTTP API,因此您无需编写任何服务器端代码即可启动和运行。 InfluxDB旨在提供可扩展,易于安装和管理,以及快速获取数据的能力。 它旨在实时回答查询。 这意味着每个数据点在进入时都会被编入索引,并且在应该返回100毫秒以下的查询中立即可用。
Facebook开发的数据仓库基础设施。 数据汇总,查询和分析。 它提供类似SQL的语言(不符合SQL92):HiveQL。
Apache Hive数据仓库软件有助于使用SQL读取,编写和管理驻留在分布式存储中的大型数据集。 可以将结构投影到已存储的数据中。 提供了命令行工具和JDBC驱动程序以将用户连接到Hive。
HCatalog的表抽象为用户提供了Hadoop分布式文件系统(HDFS)中数据的关系视图,并确保用户无需担心其数据的存储位置或格式。 现在HCatalog是Hive的一部分。 只有旧版本可以分开下载。
HCatalog作为Hadoop集群的元数据服务,其价值可以媲美数据库管理系统 (DBMS)。HCatalog相当于Hadoop连接企业应用生态系统的接口,十分重要。
Apache Trafodion是一个网络规模的SQL-on-Hadoop解决方案,可在HBase上实现企业级事务和操作工作负载。 Trafodion是一个原生MPP ANSI SQL数据库引擎,它基于HDFS和HBase的可扩展性,弹性和灵活性,扩展了这些引擎,为所有工作负载提供有保证的事务完整性,包括多列、多行、多表和多服务器 更新。
Apache HAWQ是一个Hadoop原生SQL查询引擎,它结合了从Greenplum数据库演进的MPP数据库的关键技术优势,以及Hadoop的可扩展性和便利性。
Apache Drill是一个开源软件框架,支持数据密集型分布式应用程序,用于大规模数据集的交互式分析。 Drill是Google Dremel系统的开源版本,可作为名为Google BigQuery的基础结构服务提供。一个明确声明的设计目标是Drill能够扩展到10,000台或更多服务器,并能够在几秒钟内处理数PB的数据和数万亿条记录。 Drill是一个Apache顶级项目。
Drill支持各种NoSQL数据库和文件系统,包括HBase、MongoDB、MapR-DB、HDFS、MapR-FS、Amazon S3、Azure Blob存储、Google云端存储、Swift、NAS和本地文件。单个查询可以连接来自多个数据存储的数据。例如,您可以使用Hadoop中的事件日志目录将MongoDB中的用户配置文件集合加入。
Drill的数据存储区感知优化器会自动重构查询计划,以利用数据存储区的内部处理功能。此外,如果Drill和数据存储位于相同的节点上,Drill支持数据局部性。
Apache许可的Impala项目为Hadoop带来了可扩展的并行数据库技术,使用户能够对存储在HDFS和Apache HBase中的数据发出低延迟SQL查询,而无需数据移动或转换。 它是谷歌Dremel克隆(Big Query google)。
Facebook有一个开源的Presto,一个SQL引擎,它表示平均比Hive快10倍,用于在存储在Hadoop和其他地方的大型数据集中运行查询。
Presto是一个开源的分布式SQL查询引擎,用于针对各种大小(从千兆字节到千兆字节)的数据源运行交互式分析查询。
Presto是从头开始设计和编写的,用于交互式分析,接近商业数据仓库的速度,同时扩展到Facebook等组织的规模。
Splout提供大数据的SQL视图,具有亚秒级延迟和高吞吐量。
Splout是针对Hadoop + SQL的,Voldemort、Elephant DB是针对Hadoop + Key/Value的。
Apache Tajo是Apache Hadoop的强大的大数据关系和分布式数据仓库系统。 Tajo专为存储在HDFS(Hadoop分布式文件系统)和其他数据源上的大型数据集上的低延迟和可扩展的即席查询,在线聚合和ETL(提取 - 转换 - 加载过程)而设计。 通过支持SQL标准并利用高级数据库技术,Tajo允许跨各种查询评估策略和优化机会直接控制分布式执行和数据流。 作为参考,Apache Software Foundation于2014年4月宣布Tajo为顶级项目。
在Hadoop中为低延迟应用程序启用OLTP和运营分析,Apache Phoenix通过结合两者的优点:
Apache Phoenix与其他Hadoop产品完全集成,如Spark,Hive,Pig,Flume和Map Reduce。
MRQL是一个用于大规模分布式数据分析的查询处理和优化系统,构建于Apache Hadoop,Hama,Spark和Flink之上。
MRQL(发音为miracle)是一种用于大规模分布式数据分析的查询处理和优化系统。 MRQL(MapReduce查询语言)是一种类似SQL的查询语言,用于在计算机集群上进行大规模数据分析。
Apache Kylin是一个开源的分布式分析引擎,提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc. 开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。
Apache Kylin允许你以3个步骤以亚秒级延迟查询海量数据集。
Flume是一种分布式,可靠且可用的服务,用于有效地收集,聚合和移动大量日志数据。 它具有基于流数据流的简单灵活的架构。 它具有可靠的可靠性机制和许多故障转移和恢复机制,具有强大的容错能力。 它使用简单的可扩展数据模型,允许在线分析应用程序。
Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
Scribe是facebook开源的日志收集系统,在facebook内部已经得到大量的应用。 Scribe是基于一个使用非阻断C++服务器的Apache Thrift服务的实现。它能够从各种日志源上收集日志,存储到一个中央存储系统 (可以是NFS,分布式文件系统等)上,以便于进行集中统计分析处理。它为日志的“分布式收集,统一处理”提供了一个可扩展的,高容错的方案。
Apache Chukwa是一个用于监控大型分布式系统的开源数据收集系统。 Apache Chukwa构建于Hadoop分布式文件系统(HDFS)和Map/Reduce框架之上,并继承了Hadoop的可扩展性和健壮性。 Apache Chukwa还包括一个灵活而强大的工具包,用于显示,监控和分析结果,以充分利用收集的数据。
ApacheKafka是用于处理大量流数据的分布式发布 - 订阅系统。流平台有三个关键功能:
Kafka通常用于两大类应用:
Suro是一种分布式数据管道,支持移动,聚合,路由,存储数据的服务。 其设计侧重于轻松配置和操作多个数据源。
Suro源于Apache Chukwa,最初由Netflix采用。 是一个像Storm,Samza这样的日志聚合器。
Apache Samza是一个分布式流处理框架。 它使用Apache Kafka进行消息传递,使用Apache Hadoop YARN来提供容错,处理器隔离,安全性和资源管理。
Cloudera Morphlines是一个新的开源框架,可以减少集成,构建和更改Hadoop处理应用程序所需的时间和技能,这些应用程序可以将数据提取,转换和加载到Apache Solr,Apache HBase,HDFS,企业数据仓库或分析在线仪表板中。
该项目是一个框架,用于将不同的数据源与Apache Hadoop系统连接起来,使它们可以互操作。 HIHO将Hadoop与多个RDBMS和文件系统连接起来,以便可以将数据加载到Hadoop并从Hadoop卸载。
Apache NiFi是一个易于使用,功能强大且可靠的系统,用于处理和分发数据。NiFi基于基于流程的编程概念,具有高度可配置性。 NiFi使用基于组件的扩展模型来快速添加复杂数据流的功能。 开箱即用的NiFi有几个扩展,用于处理基于文件的数据流,如FTP,SFTP和HTTP集成以及与HDFS的集成。 NiFi的独特功能之一是用于设计,控制和监控数据流的丰富的基于Web的界面。
Apache NiFi支持强大且可扩展的数据路由,转换和系统中介逻辑的有向图。
Apache ManifoldCF提供了一个框架,用于将源内容存储库(如文件系统,数据库,CMIS,SharePoint,FileNet …)连接到目标存储库或索引,例如Apache Solr或ElasticSearch。 它是多内容存储库的一种爬虫,通过Apache Tika Content Extractor转换过滤器支持大量源和多格式转换以进行索引。
用于服务创建的跨语言RPC框架。 它是Facebook技术的服务基础(最初的Thrift贡献者)。 Thrift提供了开发和访问远程服务的框架。 它允许开发人员创建可以由任何以Thrift绑定语言编写的应用程序使用的服务。 Thrift管理与服务之间的数据序列化,以及描述方法调用,响应等的协议。你可以直接使用服务逻辑,而不是编写所有RPC代码。 Thrift使用TCP,因此给定的服务绑定到特定端口。
Apache Thrift软件框架,用于可扩展的跨语言服务开发,将软件堆栈与代码生成引擎相结合,构建可在C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml,Delphi和其他语言之间高效无缝地工作的服务。
ZooKeeper是一种集中式服务,用于维护配置信息,命名,提供分布式同步和提供组服务。所有这些类型的服务都以分布式应用程序的某种形式使用。每次实施它们都需要做很多工作来修复不可避免的错误和竞争条件。由于难以实现这些类型的服务,应用程序最初通常会吝啬它们,这使得它们在变化的情况下变得脆弱并且难以管理。即使正确完成,这些服务的不同实现也会在部署应用程序时导致管理复杂性。
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
Apache Avro是一个用于建模,序列化和制作远程过程调用(RPC)的框架。 Avro数据由模式描述,一个有趣的特性是模式存储在与其描述的数据相同的文件中,因此文件是自描述的。 Avro不需要代码生成。 该框架可以与其他类似工具竞争:Apache Thrift,Google Protocol Buffers,ZeroC ICE等。
Apache Curator是Apache ZooKeeper的Java/JVM客户端库。 它包括一个高级API框架和实用程序,使Apache ZooKeeper更容易,更可靠。 它还包括常见用例和扩展(如服务发现和Java 8异步DSL)的配方。
Karaf是一个轻量级,功能强大且企业就绪的应用程序运行时。 它提供了应用程序所需的所有生态系统和引导选项。 通过多态,这意味着Karaf可以托管任何类型的应用程序:WAR,OSGi,Spring等等。。
Elephant Bird是Twitter的LZO,Thrift和/或Protocol Buffer相关的Hadoop输入格式,输出格式,可写入,Pig LoadFuncs,Hive SerDe,HBase杂记等的开源库。其中大部分都在Twitter上生成,每个数据都在运行 天。
Norbert是一个提供简单的集群管理和工作负载分配的库。 使用Norbert,你可以快速分发简单的客户端/服务器体系结构,以创建能够处理大量流量的高度可扩展的体系结构。 在Scala中实现,Norbert包含ZooKeeper,Netty并使用Protocol Buffers进行传输,以便轻松构建群集感知应用程序。 提供了一个Java API,并且可以通过循环和一致的哈希策略支持可插拔的负载平衡策略。
Oozie是一个用于管理Apache Hadoop作业的工作流程调度程序系统。
Oozie Workflow作业是动作的定向非循环图(DAG)。
Oozie Coordinator工作是由时间(频率)和数据可用性触发的经常性的Oozie Workflow工作。
Oozie与Hadoop堆栈的其余部分集成,支持多种类型的Hadoop作业(例如Java map-reduce,Streaming map-reduce,Pig,Hive,Sqoop和Distcp)以及系统特定的工作(例如 Java程序和shell脚本)。
Oozie是一个可扩展,可靠和可扩展的系统。
Azkaban是在LinkedIn上创建的批处理工作流作业调度程序,用于运行Hadoop作业。 Azkaban通过作业依赖性解决订单,并提供易于使用的Web用户界面来维护和跟踪您的工作流程。
Apache Falcon是一个数据管理框架,用于简化Apache Hadoop上的数据生命周期管理和处理管道。它使用户能够配置,管理和协调数据运动,流水线处理,灾难恢复和数据保留工作流程。 Hadoop应用程序现在可以依靠经过充分测试的Apache Falcon框架来实现这些功能,而不是硬编码复杂的数据生命周期功能。 Falcon简化数据管理对于在Hadoop上构建应用程序的任何人都非常有用。 Hadoop上的数据管理包括数据运动,流程编排,生命周期管理,数据发现等,以及ETL之外的其他问题。 Falcon是Hadoop的一个新的数据处理和管理平台,可以解决这个问题,并通过构建Hadoop生态系统中的现有组件(例如Apache Oozie,Apache Hadoop DistCp等)创造更多机会,而无需重新发明轮子。
Schedoscope是一个调度框架,用于无痛敏捷开发,测试,(重新)加载和监视你的datahub,datalake,或者你最近选择调用Hadoop数据仓库的任何内容。
Schedoscope让你远离头疼,当你不得不经常推出并使用传统的ETL作业调度程序(如Oozie)将更改应用于datahub中的计算逻辑和数据结构时,你肯定会遇到麻烦。
Apache Mahout是一个分布式线性代数框架和数学表达的Scala DSL,旨在让数学家,统计学家和数据科学家快速实现他们自己的算法。 Apache Spark是推荐的开箱即用的分布式后端,或者可以扩展到其他分布式后端。
Weka 3是Java中的数据挖掘软件。Weka是用于数据挖掘任务的机器学习算法的集合。 它包含用于数据准备,分类,回归,聚类,关联规则挖掘和可视化的工具。可以应用Weka处理大数据并执行深度学习。
Oryx开源项目提供简单,实时的大规模机器学习/预测分析基础架构。 它实现了业务应用程序中常用的几类算法:协同过滤/推荐,分类/回归和聚类。
Apache Spark、Apache Kafka上的Lambda架构,用于实时大规模机器学习。
Eclipse Deeplearning4j是第一个为Java和Scala编写的商业级开源分布式深度学习库。 DL4J与Hadoop和Apache Spark集成,可将AI引入业务环境,以便在分布式GPU和CPU上使用。
Deeplearning4j开源项目是JVM最广泛使用的深度学习框架。 DL4J包括深度神经网络,如递归神经网络,长期短期记忆网络(LSTM),卷积神经网络,各种自动编码器和前馈神经网络,如受限制的玻尔兹曼机器和深信号网络。 它还具有自然语言处理算法,如word2vec,doc2vec,GloVe和TF-IDF。 所有Deeplearning4j网络都在多个CPU和GPU上运行。 它们作为Hadoop作业工作,并与Slace级别的Spark集成,用于主机线程编排。 Deeplearning4j的神经网络应用于欺诈和异常检测,推荐系统和预测性维护等用例。
Apache MADlib项目利用RDBMS的数据处理功能来分析数据。 该项目的目标是将统计数据分析整合到数据库中。 MADlib项目被自称为SQL数据科学家的大数据机器学习。 MADlib软件项目于次年开始,由加州大学伯克利分校的研究人员与EMC / Greenplum(现为Pivotal)的工程师和数据科学家合作开展。
H2O是用于大数据分析的统计、机器学习和数学运行时工具。 H2O由预测分析公司H2O.ai开发,与R和Databricks的Spark一起在ML场景中建立了领导地位。 据该团队称,H2O是世界上最快的内存平台,用于机器学习和大数据预测分析。 它旨在帮助用户在大型数据集上扩展机器学习,数学和统计。
除了H2O的点击式Web-UI之外,它的REST API还可以轻松集成到各种客户端中。 这意味着数据的探索性分析可以在R,Python和Scala中以典型的方式完成; 整个工作流程可以编写为自动脚本。
Sparkling Water结合了两种开源技术:Apache Spark和H2O(一种机器学习引擎)。 它使H2O的高级算法库包括可从Spark工作流程访问的Deep Learning, GLM, GBM, KMeans, PCA, and Random Forest。 Spark用户可以选择从任一平台中选择最佳功能以满足其机器学习需求。 用户可以将Sparks的RDD API和Spark MLLib与H2O的机器学习算法结合起来,或者在模型构建过程中使用独立于Spark的H2O,并在Spark中对结果进行后处理。
Sparkling Water通过共享相同的执行空间以及为H2O数据结构提供类似RDD的API,将H2O的框架和数据结构透明地集成到Spark的基于RDD的环境中。
Apache SystemML由IBM开源,与Apache Spark非常相关。 如果你将Apache Spark视为分析大量流数据的任何应用程序的分析操作系统。 MLLib是Spark的机器学习库,为开发人员提供了丰富的机器学习算法。 SystemML使开发人员能够翻译这些算法,以便他们可以轻松地消化不同类型的数据并在不同类型的计算机上运行。
SystemML允许开发人员编写单个机器学习算法,并使用Spark或Hadoop自动扩展它。
SystemML使用高性能优化器技术进行大数据分析,并使用户能够使用简单的特定于域的语言(DSL)编写定制的机器学习算法,而无需学习复杂的分布式编程。 它是Spark MLlib的可扩展补充框架。
Apache SystemML为使用大数据的机器学习提供了最佳工作场所。 它可以在Apache Spark之上运行,它可以逐行自动扩展数据,确定您的代码是应该在驱动程序还是Apache Spark集群上运行。 未来的SystemML开发包括利用GPU功能进行额外的深度学习,例如导入和运行神经网络架构以及用于训练的预训练模型。
为了帮助维护大型且断开连接的提交程序集的一致性,Hadoop的开发过程中添加了自动补丁测试。 这种自动补丁测试(现在作为Apache Yetus的一部分包含在内)的工作原理如下:当补丁上传到错误跟踪系统时,自动化过程会下载补丁,执行一些静态分析并运行单元测试。 这些结果将发布回错误跟踪器,并通过警报通知相关方有关补丁状态的信息。
然而,Apache Yetus项目解决的问题远不止传统的补丁测试,它是一种更好的方法,包括大量重写Hadoop中使用的补丁测试工具。
Sentry是企业级大数据安全的下一步,可为存储在Apache Hadoop中的数据提供细粒度的授权。 Sentry是一个独立的安全模块,与开源SQL查询引擎Apache Hive和Cloudera Impala集成,提供高级授权控制,支持企业数据集的多用户应用程序和跨功能流程。 Sentry是Cloudera开发的。
Apache Sentry™是一个用于对存储在Hadoop集群上的数据和元数据实施细粒度角色授权的系统。
Apache Knox™网关是一个应用程序网关,用于与Apache Hadoop部署的REST API和UI交互。
Knox Gateway为Apache Hadoop集群的所有REST和HTTP交互提供单一访问点。目标是简化用户(即访问群集数据和执行作业的人)和操作员(即谁控制访问和管理群集)的Hadoop安全性。 网关作为服务于一个或多个Hadoop集群的服务器(或服务器集群)运行。
Knox提供三组面向用户的服务:
Apache Argus Ranger(以前称为Apache Argus或HDP高级安全性)提供全面的中央安全策略管理方法,跨越核心企业的身份验证,授权,计费和数据保护安全要求。 它扩展了基准功能,可以跨批处理,交互式SQL和实时跨Hadoop工作负载协调执行,并利用可扩展体系结构针对其他Hadoop生态系统组件(HDFS,Hive和HBase之外)(包括Storm,Solr,Spark和 更多。
Apache Ranger是一个在Hadoop平台上启用,监控和管理全面数据安全性的框架。
Ranger的愿景是为Apache Hadoop生态系统提供全面的安全性。 随着Apache YARN的出现,Hadoop平台现在可以支持真正的数据湖架构。 企业可以在多租户环境中运行多个工作负载。 Hadoop中的数据安全性需要发展以支持数据访问的多个用例,同时还为安全策略的集中管理和用户访问监控提供框架。
Apache Ambari项目旨在通过开发用于配置,管理和监控Apache Hadoop集群的软件来简化Hadoop管理。 Ambari提供了一个由RESTful API支持的直观,易用的Hadoop管理Web UI。
Ambari使系统管理员能够:
Ambari使应用程序开发人员和系统集成商能够:
用于与Apache Hadoop交互的Web应用程序。 它不是一个开发工具,是一个支持Apache Hadoop及其生态系统的开源Web界面,在Apache v2许可下获得许可。 HUE用于Hadoop及其生态系统用户操作。 例如,HUE为Hive,Impala,Oozie,Pig提供编辑器,为Spark提供笔记本,Solr Search仪表板,HDFS,YARN,HBase浏览器。
Mesos是一个集群管理器,可跨集群应用程序提供资源共享和隔离。 像HTCondor,SGE或Troque一样可以做到。 然而,Mesos是以hadoop为中心的设计。
Mesos使用与Linux内核相同的原理构建,仅在不同的抽象级别上构建。 Mesos内核在每台机器上运行,并为API提供应用程序(例如,Hadoop,Spark,Kafka,Elasticsearch),用于整个数据中心和云环境的资源管理和调度。
Apache Myriad支持在同一物理基础架构上共存Apache Hadoop和Apache Mesos。 通过将Hadoop YARN作为Mesos框架运行,YARN应用程序和Mesos框架可以并行运行,动态共享集群资源。
Marathon是一个用于长期运行服务的Mesos框架。 鉴于您将Mesos作为数据中心的内核运行,Marathon是init或upstart守护程序。
Marathon是Mesosphere的数据中心操作系统(DC/OS)和Apache Mesos的生产级容器编排平台。
Brooklyn是一个简化应用程序部署和管理的库。 对于部署,它旨在与其他工具配合使用,提供单击部署并添加可管理群集和结构的概念:许多常见的软件实体可立即使用。 与Apache Whirr(以及Chef和Puppet)集成以部署Hadoop和elasticsearch等着名服务(或使用POBS,普通旧bash脚本)使用PaaS(如OpenShift)和自建集群, 最大的灵活性
HOYA被定义为“在YARN上运行HBase”。 Hoya工具是一个Java工具,目前是CLI驱动的。 它采用集群规范 - 根据区域服务器的数量,HBASE_HOME的位置,ZooKeeper仲裁主机,新HBase集群实例应使用的配置等等。
所以HOYA使用在YARN上开发的工具进行HBase部署。 群集启动后,可以使用Hoya命令使群集增长或缩小。 群集也可以停止并稍后恢复。 Hoya通过YARN API和HBase的shell脚本实现功能。 原型的目标是进行最少的代码更改,在撰写本文时,它要求HBase中的代码更改为零。
最近,Apache Slider成为了Apache二级孵化项目,该项目是YARN之外的孵化项目,目的是将用户的已有服务或者应用直接部署到YANR上。
随着YARN的完善,目前已经能够直接部署服务,比如HBase,Storm等,而Apache Slider直接源自于Hoya,一个尝试将HBase部署到YARN上的项目。将HBase运行在YARN上将带来众多好处,包括:
(1)在一个物理集群中可同时部署多个HBase集群实例
(2)为HBase集群提供资源隔离(这一点HBase本身做不到)
(3)将多个版本的HBase集群部署到一个物理集群中
当然,以上几个好处也是将其他服务部署到YARN上的好处。
随着Slider项目的发布,用户可以在不对已存在服务进行任何修改的前提下将之部署到YARN集群中。
Apache Helix是一种通用的集群管理框架,用于自动管理托管在节点集群上的分区,复制和分布式资源。 Helix在面对节点故障和恢复,集群扩展和重新配置时自动重新分配资源。
Bigtop最初由Cloudera开发并作为开源打包基础设施发布。 BigTop用于某些供应商基于Apache Hadoop(CDH,Pivotal HD,Intel的发行版)构建自己的发行版,但Apache Bigtop执行更多任务,例如持续集成测试(使用Jenkins,maven,…)并且非常有用 用于打包(RPM和DEB),使用Puppet进行部署等。 BigTop还具有用于旋转“n节点”hadoop集群的vagrant配方,以及用于演示具有ETL,机器学习和数据集生成的完整堆栈hadoop应用程序的bigpetstore蓝图应用程序。 Apache Bigtop可以被视为一个主要关注的社区工作:将Hadoop生态系统的所有部分作为一个整体,而不是单个项目。
Bigtop是一个Apache Foundation项目,面向基础架构工程师和数据科学家,他们正在寻找对领先的开源大数据组件的全面打包,测试和配置。 Bigtop支持广泛的组件/项目,包括但不限于Hadoop、HBase和Spark。
Bigtop支持许多操作系统,包括Debian,Ubuntu,CentOS,Fedora,openSUSE和许多其他操作系统。
Bigtop包括用于初始部署的各个级别(打包,平台,运行时等)的测试工具和框架,以及整个数据平台的升级方案,而不仅仅是单个组件。
Cloudbreak是在云,Docker容器或裸机中启动和运行Hadoop集群的多个实例和版本的有效方法。 它是一种与云和基础架构无关且具有成本效益的Hadoop即服务平台API。 提供自动扩展,安全多租户和完整的云生命周期管理。
Cloudbreak利用云基础架构平台创建主机实例,使用Docker技术以云为基础部署必需的容器,并使用Apache Ambari(通过Ambari Blueprints)安装和管理Hortonworks群集。 这是HDP生态系统中的一个工具。
Apache Eagle是一种开源分析解决方案,用于在大数据平台上即时识别安全性和性能问题,例如: Hadoop,Spark等。它分析数据活动,yarn应用程序,jmx指标和守护进程日志等,提供最先进的报警引擎,以识别安全漏洞,性能问题并显示见解。 大数据平台通常会实时生成大量的操作日志和指标。 Apache Eagle的成立旨在通过确保指标,日志始终可用以及即使在大量流量下立即发出警报来解决大数据平台安全和调整性能方面的难题。
Apache Nutch是一个高度可扩展和可伸缩的开源Web爬虫软件项目。源自Apache Lucene,该项目已经多样化,现在包含两个代码库,即:
可插拔和模块化当然有它的好处,Nutch提供可扩展的接口,如Parse,Index和ScoringFilter,用于自定义实现,例如: Apache Tika用于解析。此外,Apache Solr,Elastic Search等存在可插入索引。
Nutch可以在一台机器上运行,但通过在Hadoop集群中运行可以获得很大的优势
Sphinx允许您批量索引和搜索存储在SQL数据库、NoSQL存储库中的数据,或者只是快速,轻松地搜索数据 - 或者联机动态索引和搜索数据,运行在Sphinx就好像是在一个数据库服务器一样。
Sphinx是一款免费的双许可搜索服务器。 Sphinx是用C ++编写的,专注于查询性能和搜索相关性。
主客户端API目前是SphinxQL,SQL的一种方言。 几乎任何MySQL连接器都能运行。 此外,还提供了基本的HTTP/JSON API和许多语言(PHP、Python、Ruby、C、Java)的原生API。
OODT最初是在美国宇航局喷气推进实验室开发的,用于支持NASA科学档案的数据采集,处理和共享。
严格的数据管理
Apache面向对象数据技术(OODT)是集成和归档流程,数据及其元数据的智能方式。 OODT允许您:
允许集成数据,计算,可视化和其他组件。
巩固你的数据处理
传统的处理管道通常由自定义UNIX shell脚本和脆弱的自定义编写的粘合代码组成。 Apache OODT使用基于结构化XML的处理管道捕获,非程序员可以理解和修改处理管道,以创建,编辑,管理和提供工作流和任务执行。
OODT还允许在可扩展计算基础架构上远程执行作业,以便使用云计算和高性能计算环境将计算和数据密集型处理集成到OODT的数据处理管道中。
HIPI是一个图像处理库,旨在与Apache Hadoop MapReduce并行编程框架一起使用。 HIPI利用通常在集群上执行的MapReduce样式并行程序来促进高效和高吞吐量的图像处理。 它提供了一种解决方案,用于在Hadoop分布式文件系统(HDFS)上存储大量图像,并使其可用于高效的分布式处理。 HIPI还提供与OpenCV的集成,OpenCV是一个流行的开源库,包含许多计算机视觉算法(请参阅covar示例程序以了解有关此集成的更多信息)。
1 .HIPI
PivotalR是一个软件包,它使R(最流行的开源统计编程语言和环境)的用户能够与Pivotal(Greenplum)数据库以及Pivotal HD / HAWQ以及用于大数据分析的开源数据库PostgreSQL进行交互。 R是一种编程语言和数据分析软件:您可以通过使用R编程语言编写脚本和函数来在R中进行数据分析。 R是一种完整的,交互式的,面向对象的语言:由统计学家为统计学家设计。 该语言提供了对象,操作符和函数,使得数据的探索,建模和可视化过程成为一种自然的过程。
Jumbune是一个开源产品,位于任何Hadoop发行版之上,并协助开发和管理MapReduce解决方案。 该产品的目标是帮助分析解决方案提供商在生产Hadoop环境中移植无故障应用程序。
Jumbune支持Apache Hadoop的所有活动主要分支,即1.x,2.x,0.23.x和Hadoop的商业MapR,HDP 2.x和CDH 5.x发行版。 它能够兼容Yarn和non-Yarn版本的Hadoop。
它有四个主要模块MapReduce Debugger,HDFS Data Validator,按需集群监视器和MapReduce作业分析器。 Jumbune可以部署在任何远程用户计算机上,并在群集的NameNode上使用轻量级代理来传递相关信息。
Spring XD(Xtreme Data)是Spring Java应用程序开发框架的演变,用于帮助Pivotal提供大数据应用程序。 SpringSource是由Spring Framework的创始人创建的公司。 SpringSource是由VMware购买的,在VMware中作为一个单独的部门维护了一段时间。后来,VMware及其母公司EMC Corporation正式成立了一家名为Pivotal的合资企业。 Spring XD不仅仅是开发框架库,是一个分布式,可扩展的系统,用于数据摄取,实时分析,批处理和数据导出。在某些情况下,它可以被视为Apache Flume / Sqoop / Oozie的替代品。 Spring XD是Apache Hadoop(SHDP)的Pivotal Spring的一部分。与Spring,Spring Batch和Spring Data集成的SHDP是Spring IO Platform的一部分,作为基础库。 Spring IO平台构建于此基础之上,并扩展了该基础,它将Spring XD作为大数据运行时提供。 Spring for Apache Hadoop(SHDP)旨在通过在各种Hadoop生态系统项目(如Pig,Hive和Cascading)中提供一致的配置和API,以及为Spring编排提供扩展来帮助简化基于Hadoop的应用程序的开发。基于Hadoop的工作流程。
Cask Data Application Platform是Hadoop生态系统的开源应用程序开发平台,为开发人员提供数据和应用程序虚拟化,以加速应用程序开发,解决一系列实时和批处理用例,并将应用程序部署到生产环境中。 部署由Cask Coopr完成,Cask Coopr是一种基于开源模板的集群管理解决方案,可为公共云和私有云上的多层应用程序堆栈提供,管理和扩展集群。 另一个组件是Tigon,一个基于Apache Hadoop和Apache HBase构建的分布式框架,用于实时,高吞吐量,低延迟的数据处理和分析应用程序。
Apache Fluo是一个分布式处理系统,允许用户进行增量更新大型数据集
使用Apache Fluo,用户可以设置工作流,在数据更改时执行跨节点事务。这些工作流允许用户在不重新处理所有数据的情况下,连续地将新数据连接到大型现有数据集中。Apache Fluo是在Apache Accumulo上构建的。
Summingbird是一个库,它允许您编写看起来像本机Scala或Java集合转换的MapReduce程序,并在许多着名的分布式MapReduce平台上执行它们,包括Storm和Scalding。
Summingbird旨在通过将批处理和流处理组合成混合系统来减轻批处理和流处理之间的权衡的系统。 在Twitter,Hadoop处理批处理,Storm处理流处理,混合系统称为Summingbird。
Java开发人员的应用程序框架,可在Apache Hadoop上简单地开发强大的数据分析和数据管理应用程序。
支持在Apache Hadoop上进行快速简单的大数据应用程序开发。 提供ANSI标准SQL技术的项目,可以轻松构建新的并将现有应用程序集成到Hadoop上。
Cascading Pattern为Apache Hadoop上的应用程序提供机器学习评分算法和预测模型标记语言(PMML)。
Apache Giraph是一个为高可扩展性而构建的迭代图处理系统。 例如,它目前在Facebook上用于分析用户及其连接形成的社交图。 Giraph起源于Pregel的开源对手,Pregel是谷歌开发的图形处理架构,在2010年的论文中有所描述。 这两个系统都受到Leslie Valiant引入的分布式计算的批量同步并行模型的启发。 Giraph增加了基本Pregel模型之外的几个功能,包括主计算,分片聚合器,边缘导向输入,核外计算等。
Akka是一个用于为Java和Scala构建高度并发,分布式和弹性的消息驱动应用程序的工具包。
Akka处理并发的方法基于Actor模型。在Akka里,Actor之间通信的唯一机制就是消息传递。
Finagle是JVM的可扩展RPC系统,用于构建高并发服务器。 Finagle为多种协议实现统一的客户端和服务器API,旨在实现高性能和并发性。 Finagle的大多数代码都是协议无关的,简化了新协议的实现。
Finagle是用Scala编写的,但提供了Scala和Java惯用API。
随着捕获数据量的爆炸,通过图形分析发现隐藏的关系和连接将实现从大数据中实现价值的突破。 在执行分析之前,数据科学家必须首先格式化和准备用于分析的原始数据,通常需要80%以上的工作量。
英特尔的图形生成器对于Apache Hadoop 2减少了这项工作并加快了洞察时间,使数据科学家能够花费宝贵的时间使用分析来解决业务挑战,而不是格式化数据。 使用流行且方便的Apache Pig脚本可以简化集群计算编程。 Graph Builder例程与内置Pig函数一起工作,以简化围绕数据导入,解析,清理,特征工程和图形构建的繁琐“数据争论”。 广泛支持的数据格式的输出可用于广泛的图形数据库,可视化和分析工具。
Apache Tika工具包可从超过一千种不同的文件类型(如PPT,XLS和PDF)中检测和提取元数据和文本。 所有这些文件类型都可以通过单一界面进行解析,使Tika对搜索引擎索引,内容分析,翻译等非常有用。
Zeppelin是一个基于Web的现代工具,供数据科学家在大规模数据探索和可视化项目上进行协作。 它是一种笔记本式的解释器,可以在用户之间共享协作分析会话。 Zeppelin独立于执行框架本身。 当前版本在Apache Spark之上运行,但它具有可插入的解释器API以支持其他数据处理系统。 可以在以后添加更多的执行框架,即Apache Flink,Crunch以及类似SQL的后端,如Hive,Tajo,MRQL。
Hydrosphere Mist是Spark集群的无服务器代理。 Mist为Spark应用程序提供了新的函数式编程框架和部署模型。
Hydrosphere Mist是一种服务,用于将Apache Spark分析作业和机器学习模型公开为实时,批处理或反应式Web服务。 它充当Apache Spark与机器学习堆栈和面向用户的应用程序之间的中间件。