Apache Hadoop项目开发用于可靠、可扩展的分布式计算的开源软件。
Apache Hadoop软件库是一个框架,允许使用简单的编程模型跨计算机集群分布式处理大型数据集。 它旨在从单个服务器扩展到数千台计算机,每台计算机都提供本地计算和存储。 库本身不是依靠硬件来提供高可用性,而是设计用于检测和处理应用程序层的故障,从而在计算机集群之上提供高可用性服务,每个计算机都可能容易出现故障。
此文是Hadoop相关项目的简介,重点关注自由/开源软件。
相关文章
The Hadoop Ecosystem Table
HADOOP ECOSYSTEM
几个有关hadoop生态系统的架构图
你也能看懂Hadoop——Hadoop生态体系
HADOOP生态圈介绍
文章目录
- Distributed Filesystem 分布式文件系统
- Distributed Programming 分布式编程
-
- Apache Ignite 内存为中心的分布式数据库
- Apache MapReduce 在群集上使用并行分布式算法处理大型数据集的编程模型
- Apache Pig 并行执行数据流的引擎
- JAQL 处理大量结构化、半结构化和非结构化数据的功能性、声明性编程语言
- Apache Spark 用于大规模数据处理的统一分析引擎。
- Apache Storm 分布式实时计算系统
- Apache Flink 分布式数据流处理引擎
- Apache Apex 企业级统一流和批处理引擎
- Netflix PigPen Clojure的map-reduce
- AMPLab SIMR 允许在Hadoop v1上运行Spark
- Facebook Corona 类似YARN
- Apache REEF 可持续计算执行框架
- Apache Twill 简化分布式开发,YARN的代理
- Damballa Parkour 使用类LISP语言Clojure开发MapReduce的程序库
- Apache Hama 批量同步并行(BSP)大数据分析框架
- Datasalt Pangool 底层MapReduce API
- Apache Tez 运行在YARN之上支持DAG作业的计算框架
- Apache DataFu 处理大规模数据的库集合
- Pydoop 用于Hadoop的Python MapReduce和HDFS API
- Kangaroo Kafka数据流批处理
- TinkerPop 用Java编写的图形计算框架
- Pachyderm MapReduce 基于Docker和CoreOS构建的全新MapReduce引擎
- Apache Beam 批处理和流数据处理作业统一模型
- NoSQL Databases 非关系型数据库
- NewSQL Databases 新型数据库
- SQL-On-Hadoop Hadoop上的SQL
-
- Apache Hive 数据仓库基础设施
- Apache HCatalog Hadoop集群的元数据服务
- Apache Trafodion 事务性SQL-on-Hadoop数据库
- Apache HAWQ Hadoop原生大规模并行SQL分析引擎
- Apache Drill 用于Hadoop、NoSQL和云存储的无模式SQL查询引擎
- Cloudera Impala 实时查询引擎
- Facebook Presto 分布式SQL查询引擎
- Datasalt Splout SQL 大数据SQL视图
- Apache Tajo 大数据关系和分布式数据仓库系统
- Apache Phoenix OLTP和运营分析。
- Apache MRQL 大规模分布式数据分析的查询处理和优化系统
- Apache Kylin 极大型数据集OLAP引擎
- Data Ingestion 数据接入
- Service Programming 服务编程
- Scheduling & DR 调度与分布式资源
- Machine Learning 机器学习
- Benchmarking And QA Tools 基准测试和QA工具
- Security 安全
- System Deployment 系统部署
-
- Apache Ambari Hadoop管理Web UI
- Cloudera HUE 开发和访问数据应用程序的Workbench。
- Apache Mesos 集群资源管理调度
- Apache Myriad 使用Apache Mesos部署Apache YARN应用程序
- Marathon 生产级容器编排平台
- Apache Brooklyn 简化应用程序部署和管理的库
- Hortonworks HOYA (Apache Slider) 在YARN上运行HBase
- Apache Helix 通用的集群管理框架
- Apache Bigtop 大数据组件全面打包测试和配置
- Cloudbreak 部署Hadoop集群
- Apache Eagle 分析大数据平台安全性和性能
- Applications 应用程序
- Development Frameworks 开发框架
- Categorize Pending ... 分类待定
-
- Apache Fluo 增量更新大型数据集
- Twitter Summingbird 将批处理和流处理组合成混合系统
- Concurrent Cascading 数据分析和数据管理
- Concurrent Lingual 为大数据提供标准SQL
- Concurrent Pattern 机器学习评分算法和预测模型标记语言(PMML)
- Apache Giraph 高可扩展性图处理系统
- Akka Toolkit 为Java和Scala构建高度并发、分布式和弹性的消息驱动应用程序的工具包
- Twitter Finagle 高性能RPC框架
- Intel GraphBuilder 大数据可视化工具
- Apache Tika 内容分析工具包
- Apache Zeppelin 基于Web的笔记本式解释器
- Hydrosphere Mist Spark集群的无服务器代理
Distributed Filesystem 分布式文件系统
Apache HDFS Hadoop分布式文件系统
Hadoop分布式文件系统(HDFS)是一种分布式文件系统,设计用于在商用硬件上运行。 它与现有的分布式文件系统有许多相似之处。 但是,与其他分布式文件系统的差异很大。 HDFS具有高度容错能力,旨在部署在低成本硬件上。 HDFS提供对应用程序数据的高吞吐量访问,适用于具有大型数据集的应用程序。 HDFS放宽了一些可移植性操作系统接口(POSIX)要求,以实现对文件系统数据的流式访问。 HDFS最初是作为Apache Nutch网络搜索引擎项目的基础设施而构建的。 HDFS是Apache Hadoop Core项目的一部分。
Red Hat GlusterFS 可扩展网络文件系统
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 高性能、容错、分布式的文件系统
Quantcast File System (QFS) 是一个高性能、容错、分布式的文件系统,其开发是用于支持 MapReduce 处理或者需要顺序读写大文件的应用。QFS是用C++编写的,是一个开源的文件系统,和Hadoop Distributed File Syetem (HDFS)文件系统兼容,更优于HDFS。他采用Reed-Solomon 擦出编码方式,即6(数据块)+3(校验块)替代了HDFS的3倍复制策略,因此,有如下优势:
- 和HDFS文件系统相比,能够节省50%的磁盘空间
- 比HDFS提高一倍读写速度。
- 由于使用C++编写的,更容易和系统软件相兼容。
- 实现了命令行式的终端,比HDFS更加便捷
Ceph Filesystem 可靠地、自动重均衡、自动恢复的分布式存储系统
Ceph是一个免费的软件存储平台,旨在从单个分布式计算机集群中呈现对象,块和文件存储。 Ceph的主要目标是完全分发、没有单点故障、可扩展到艾字节级别(exabytes=EB,1EB=1024PB=2^60字节),并且可以自由使用。 数据被复制,使其具有容错能力。
与当今可用的许多对象存储系统相比,Ceph的对象存储系统提供了重要的功能:Ceph提供了具有POSIX语义的传统文件系统接口。 对象存储系统是一项重大创新,但它们是对传统文件系统的补充而非替代。 随着遗留应用程序的存储需求增长,组织也可以配置其遗留应用程序以使用Ceph文件系统! 这意味着你可以为对象、块和基于文件的数据存储运行在一个存储群集。
Lustre file system 高性能的分布式文件系统
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以内存为中心的架构使数据访问速度比现有解决方案快几个数量级。
在大数据生态系统中,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 内存计算平台,Hadoop加速器
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:
- GGFS允许对底层HDFS或任何其他Hadoop兼容文件系统进行直接读和直接写,而无需更改代码。从本质上讲,GGFS完全从集成中删除了ETL步骤。
- GGFS能够选择和保留内存中的文件夹,光盘上的文件夹,以及同步或异步与底层(HD)FS同步的文件夹。
- GridGain正致力于添加原生MapReduce组件,该组件将提供原生完整的Hadoop集成而无需更改API,就像Spark目前强迫你做的那样。基本上,GridGain MR+GGFS将允许以即插即用的方式将Hadoop完全或部分驻留内存,而无需任何API更改。
XtreemFS 容错的分布式文件系统
XtreemFS是一种通用存储系统,可满足单个部署中的大多数存储需求。 它是开源的,不需要特殊的硬件或内核模块,可以安装在Linux,Windows和OS X上.XtreemFS运行分布式并通过复制提供弹性。 XtreemFS卷可以通过用户空间文件系统(FUSE)组件访问,该组件提供与POSIX类似语义的正常文件交互。 此外,还包含Hadoops FileSystem接口的实现,使XtreemFS可以与Hadoop、Flink和Spark一起使用。 XtreemFS根据新BSD许可证授权。 XtreemFS项目由柏林Zuse研究所开发。
Distributed Programming 分布式编程
Apache Ignite 内存为中心的分布式数据库
Apache Ignite是一个以内存为中心的分布式数据库,缓存和处理平台
事务性,分析性和流式工作负载,以PB级的速度提供内存速度。它包括分布式键值内存存储、SQL功能、map-reduce和其他计算、分布式数据结构、连续查询、消息和事件子系统、Hadoop和Spark集成。 Ignite是用Java构建的,提供.NET和C ++ API。
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 Pig 并行执行数据流的引擎
Apache Pig是一个分析大型数据集的平台,它包含用于表达数据分析程序的高级语言,以及用于评估这些程序的基础结构。 Pig程序的显着特性是它们的结构适合于大量并行化,这反过来使它们能够处理非常大的数据集。
目前,Pig的基础设施层由生成Map-Reduce程序序列的编译器组成,已经存在大规模并行实现(例如,Hadoop子项目)。 Pig的语言层目前由一种名为Pig Latin的文本语言组成,它具有以下关键属性:
- 易于编程。实现简单,“令人尴尬的并行”数据分析任务的并行执行是微不足道的。由多个相互关联的数据转换组成的复杂任务被明确编码为数据流序列,使其易于编写,理解和维护。
- 优化机会。任务编码的方式允许系统自动优化其执行,允许用户专注于语义而不是效率。
- 可扩展性。用户可以创建自己的功能来进行专用处理。
JAQL 处理大量结构化、半结构化和非结构化数据的功能性、声明性编程语言
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在存储、处理和分析作业之间交换数据。它还提供外部数据和服务的链接,包括关系数据库和机器学习数据。
Apache 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倍。
- 高速:以100倍的速度运行工作负载。Apache Spark使用最先进的DAG调度程序,查询优化器和物理执行引擎,实现批处理和流数据的高性能。
- 便于使用:使用Java、ScalaPython、R和SQL快速编写应用程序。Spark提供80多个高级操作,可以轻松构建并行应用程序。你可以从Scala,Python,R和SQL shell中以交互方式使用它。
- 概括:结合SQL,流媒体和复杂的分析。Spark支持一堆库,包括SQL和DataFrames,用于机器学习的MLlib,GraphX和Spark Streaming。你可以在同一个应用程序中无缝地组合这些库。
- 到处运行:Spark可以运行在Hadoop、Apache Mesos、Kubernetes、单机或云端。你可以使用其独立群集模式、在EC2上、在Hadoop YARN上、在Mesos上或在Kubernetes上运行Spark。访问HDFS、Alluxio、Apache Cassandra、Apache HBase、Apache Hive和数百个其他数据源中的数据。
Apache Storm 分布式实时计算系统
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 分布式数据流处理引擎
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 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的主要任务之一。
Netflix PigPen Clojure的map-reduce
PigPen是Clojure的map-reduce,它编译为Apache Pig。Clojure是Rich Hickey创建的Lisp编程语言的方言,因此是一种功能通用语言,可在Java虚拟机,公共语言运行时和JavaScript引擎上运行。 在PigPen中,没有特殊的用户定义函数(UDF)。 定义Clojure函数,匿名或命名,并像在任何Clojure程序中一样使用它们。 该工具由美国按需互联网流媒体提供商Netflix公司开源。
AMPLab SIMR 允许在Hadoop v1上运行Spark
Apache Spark是在Apache YARN中开发的。 但是,到目前为止,在Hadoop MapReduce v1集群上运行Apache Spark相对比较困难,即没有安装YARN的集群。 通常,用户必须获得在某些机器子集上安装Spark/Scala的权限,这个过程可能非常耗时。 SIMR允许任何有权访问Hadoop MapReduce v1集群的人开箱即用。 用户可以直接在Hadoop MapReduce v1之上运行Spark,而无需任何管理权限,也无需在任何节点上安装Spark或Scala。
Facebook Corona 类似YARN
来自Facebook的“Map-Reduce的下一个版本”,基于自己的Hadoop分支。当前的MapReduce技术的Hadoop实现使用单个作业跟踪器,这会导致非常大的数据集出现扩展问题。Apache Hadoop开发人员一直在创建他们自己的下一代MapReduce,称为YARN,由于公司部署Hadoop和HDFS的高度定制化特性,Facebook工程师对此进行了评估,但对其打了折扣。Corona与YARN一样,产生了多个工作跟踪器(在Corona案例中每个作业一个)。
Apache REEF 可持续计算执行框架
Apache REEF(可持续计算执行框架)是一个用于为集群资源管理器(如Apache Hadoop YARN或Apache Mesos)开发可移植应用程序的库。 Apache REEF通过以下功能大大简化了这些资源管理器的开发:
- 集中控制流程:Apache REEF将分布式应用程序的混乱转变为单个机器中的事件,即作业驱动。事件包括容器分配、任务启动、完成和失败。对于失败,Apache REEF尽一切努力驱动可用任务抛出实际的
异常(Exception)
。 - 任务运行时(Task runtime):Apache REEF提供名为计算器(Evaluator)的任务(Task)运行时。计算器在REEF应用程序的每个容器中实例化。计算器可以将数据保存在任务之间的内存中,从而在REEF上实现高效的管道。
- 支持多个资源管理器:Apache REEF应用程序可以轻松地移植到任何受支持的资源管理器。此外,REEF中的新资源管理器很容易支持。
- .NET和Java API:Apache REEF是在.NET中编写YARN或Mesos应用程序的唯一API。此外,单个REEF应用程序可以自由混合和匹配为.NET或Java编写的任务。
- 插件:Apache REEF允许插件(称为“服务(Services)”)扩充其功能集,而不会向核心添加膨胀。 REEF包括许多服务,例如任务之间基于名称的通信,受MPI启发的群组通信(
Broadcast
,Reduce
,Gather
, …)和数据入口。
Apache Twill 简化分布式开发,YARN的代理
Twill是ApacheHadoop®YARN的抽象,它降低了开发分布式应用程序的复杂性,使开发人员能够更专注于业务逻辑。 Twill使用一个简单的基于线程的模型,Java程序员会发现它很熟悉。 YARN可以被视为集群的计算结构,这意味着像Twill这样的YARN应用程序可以在任何Hadoop