文章资料-情感.机器.认知-电子AI 游客
大数据技术体系分类
【8800】by1 2022-09-21 最后编辑2022-09-21 11:12:13 浏览666

一、目录:

系统平台 (Hadoop、CDH、HDP)

监控管理 (CM、Hue、Ambari、Dr.Elephant、Ganglia、Zabbix、Eagle)

文件系统 (HDFS、GPFS、Ceph、GlusterFS、Swift 、BeeGFS、Alluxio)

资源调度 (YARN、Mesos、)

协调框架 (ZooKeeper 、Etcd、Consul)

数据存储 (HBase、Cassandra、ScyllaDB 、MongoDB、Accumulo 、Redis 、Ignite、Arrow 、Geode、CouchDB、Kudu、CarbonData)

数据处理 (MapReduce、Spark、Flink、Storm、Tez、Samza、Apex、Beam、Heron)

查询分析(Hive、SparkSQL、Presto、Kylin、Impala、Druid、ElasticSearch、HAWQ、Lucene、Solr、 Phoenix)

数据收集 (Flume、Filebeat、Logstash、Chukwa )

数据交换 (Sqoop 、Kettle、DataX 、NiFi)

消息系统 (Pulsar、Kafka、RocketMQ、ActiveMQ、RabbitMQ)

任务调度 (Azkaban、Oozie、Airflow)

数据治理 (Ranger 、Sentry、Atlas)

可视化    (Kibana 、D3.js、ECharts)

数据挖掘 (Mahout 、MADlib 、Spark ML、TensorFlow、Keras)

云平台    (Amazon S3、GCP、Microsoft Azure)

存储体系:Hadoop-HDFS、HBase、MongoDB、Cassandra


计算体系:Hadoop-MapReduce、Spark、Storm、Flink


数据同步:Sqoop、DataX


资源调度:YARN、Oozie、Zookeeper


日志收集:Flume、Logstash、Kibana


分析引擎:Hive、Impala、Presto、Phoenix、SparkSQL


集群监控:Ambari、Ganglia、Zabbix

二、大数据Hadoop框架

Dingtalk_20220921110706.jpg

1、Hadoop简介

注意这里基于Hadoop2.X版本描述。后续如果没有特别说明,都是2.7版本。

Hadoop是一个由Apache基金会所开发的分布式系统基础架构;

提供海量的数据存储能力,和分析计算能力;

作为Apache的顶级项目,包含众多子项目是一个生态圈;

2、框架特点

可靠性:Hadoop按位存储和存储多个数据副本,提供可靠服务;

扩展性:Hadoop利用计算机集群分配数据并完成计算任务,可以方便地扩展到数以千计的节点中;

高效性:基于MapReduce思想,为海量的数据提供高效的并行计算;

容错性:自动保存数据的多个副本,并且能够自动将失败的任务重新分配;

3、组成结构

HDFS存储

NameNode

存储文件相关的元数据,例如:文件名,文件目录,创建时间,权限副本数等。

DataNode

文件系统存储文件块数据,以及和数据块ID的映射关系。

Yarn调度

负责资源管理和作业调度,将系统资源分配给在Hadoop集群中运行的各种应用程序,并调度要在不同集群节点上执行的任务。

MapReduce计算

MapReduce将计算过程分为两个阶段:Map阶段并行处理输入数据,Reduce阶段对Map结果进行汇总。

三、大数据技术栈

8016799-87166f81ad6384d4.png

1、Kafka中间件

开源组织: Apache软件

应用场景:

Kafka是一种高吞吐量的分布式发布订阅消息系统,通过磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。高吞吐量:即使是非常普通的硬件Kafka也可以支持每秒数百万的消息。支持通过Kafka服务器和消费机集群来分区消息。支持Hadoop并行数据加载。

2、Flume日志系统

开源组织: Cloudera公司

应用场景:

Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。

3、Sqoop同步工具

开源组织: Apache软件

应用场景:

Sqoop是一款开源的工具,主要用于在Hadoop、Hive与传统的数据库例如:MySql间进行数据的传递,可以将一个关系型数据库(例如:MySQL,Oracle 等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

4、HBase数据库

开源组织: Apache软件

应用场景:

HBase是一个分布式的、面向列的开源数据库,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库,并且基于列的而不是基于行的存储模式。

5、Storm实时计算

开源组织: Apache软件

应用场景:

Storm用于实时计算,对数据流做连续查询,在计算时就将结果以流的形式输出给用户。Storm相对简单,可以与任何编程语言一起使用。

6、Spark计算引擎

开源组织: Apache软件

应用场景:

Spark是专为大规模数据处理而设计的快速通用的计算引擎,拥有Hadoop的MapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。Spark是在Scala 语言中实现的,它将Scala用作其应用程序框架。

7、R语言

开源组织: 微软公司

应用场景:

R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。

8、Hive数仓工具

开源组织: 脸书公司

应用场景:

hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。

9、Oozie组件

开源组织: Apache软件

应用场景:

Oozie是一个管理Hdoop作业(job)的工作流程调度管理系统。

10、Azkaban组件

开源组织: Linkedin公司

应用场景:

批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪的工作流。

11、Mahout组件

开源组织: Apache软件

应用场景:

Mahout提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。

12、ZooKeeper组件

开源组织: Apache软件

应用场景:

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。


五、源代码地址

GitHub·地址

https://github.com/cicadasmile/big-data-parent

GitEE·地址

https://gitee.com/cicadasmile/big-data-parent


三、系统平台

Hadoop:Apache Hadoop是一个开源的分布式系统基础框架,离线数据的分布式存储和计算的解决方案。Hadoop最早起源于Nutch,Nutch基于2003 年、2004年谷歌发表的两篇论文分布式文件系统GFS和分布式计算框架MapReduce的开源实现HDFS和MapReduce。2005年推出,2008年1月成为Apache顶级项目。Hadoop分布式文件系统(HDFS)是革命性的一大改进,它将服务器与普通硬盘驱动器结合,并将它们转变为能够由Java应用程序兼容并行IO的分布式存储系统。Hadoop作为数据分布式处理系统的典型代表,形了成完整的生态圈,已经成为事实上的大数据标准,开源大数据目前已经成为互联网企业的基础设施。Hadoop主要包含分布式存储HDFS、离线计算引擎MapRduce、资源调度Apache YARN三部分。Hadoop2.0引入了Apache YARN作为资源调度。Hadoop3.0以后的版本对MR做了大量优化,增加了基于内存计算模型,提高了计算效率。比较普及的稳定版本是2.x,目前最新版本为3.2.0。

相关网站:Apache Hadoop

CDH:Cloudera CDH是Cloudera基于稳定版Hadoop及相关项目最成型的发行版本。CDH中提供的各种组件能让用户在一个可视化的UI界面中方便地管理,配置和监控Hadoop以及其它所有相关组件。Cloudera成立于2008年,在2009年Cloudera发行了第一个Hadoop集成版本CDH,到目前为止,因为其易用、易于升级、安装组件和减少维护成本等特性,成为企业部署最广泛的大数据系统。在Hadoop的世界中,规模最大、知名度最高的公司就是Cloudera。CDH提供强大的部署、管理和监控工具,通过Cloudera Manager的Web UI安装和管理集群,并且通过Hue浏览器端的Web控制台上与Hadoop集群进行交互来分析处理数据。随着云计算的发展,催生了亚马逊AWS等巨头,他们也会提供托管的Hadoop/Spark服务,如AWS的Elastic Map Reduce(EMR),不仅集成在云平台内部而且成本也更低。而对象存储服务,如AWS S3,Azure Blob存储和Google云端存储,从成本上来说,也低于Hadoop的存储成本。但是,对于重视数据资产的企业来说依旧需要Cloudera产品。Cloudera也一直致力于向云计算转型。2018年10月Cloudera合并Hortonworks,表示新的公司将成为行业领导者,为客户提供更好的平台,创建世界首个企业数据云,并将在云计算、物联网和容器技术等领域继续发力。这对Hadoop的发展方向是一个打击,但也意味着Hadoop的标准将更加统一,将有更多资金投入新技术的研究。CDH目前最新版本为6.2.0。

相关网站:Cloudera CDH

HDP:HDP是Hortonworks在基于Hadoop的发行版本。2014年Hortonworks上市,是企业级全球数据管理平台,同时也是服务和解决方案的领先供应商,为100强企业中的一多半提供“任何类型数据”的可操作信息,已经成为世界第二大数据服务商。Hortonworks是第一家使用了Apache HCatalog的元数据服务特性的提供商。Hortonworks为入门提供了一个非常好的,易于使用的沙盒。Hortonworks开发了很多增强特性并提交至核心主干,这使得Apache Hadoop能够在包括Windows Server和Windows Azure在内的Microsft Windows平台上本地运行,相比于CDH只能运行在Linux系统中。使用Ambari提供Web UI管理集群。HDP好处是完全开源,可以在其基础上进行二次开发,但对于技术比较薄弱中小型企业来说稳定性没有CDH高。2018年10月Cloudera合并Hortonworks,方向暂时未知。HDP目前最新版本为3.1。

相关网站:Hortonworks HDP

集群管理与监控

Clodera Manager:CM是Cloudera开发的一个基于Web的用于部署和管理CDH集群的软件。它具有集群自动化安装、中心化管理、集群监控、报警等功能,大大节省集群部署时间,降低了运维成本,极大的提高集群管理的效率。(非开源)

相关网站:Clodera Manager

Hue:Hue是由Cloudera贡献给开源社区的Hadoop UI系统(Hadoop User Experience),最早是由Cloudera Desktop演化而来,它是基于Python Web框架Django实现的。Hue是一个可快速开发和调试Hadoop生态系统各种应用的一个基于浏览器的图形化用户接口。使用Hue可以在浏览器端的Web控制台上与Hadoop集群进行交互来分析处理数据,例如操作HDFS上的数据、运行MapReduce Job、执行Hive的SQL语句、浏览HBase数据库、运行Sqoop,编写Oozie工作流等等大量工作。Hue是Hadoop平台大数据分析开发的可视化分析利器。

网站:Hue

Ambari:Apache Ambari是Hortonworks贡献给Apache基金会的Hadoop平台管理软件,2013年11月20日成为Apache顶级项目。它具备Hadoop组件的安装、管理、运维等基本功能,提供Web UI进行可视化的集群管理,简化了大数据平台的安装、使用难度。

相关网站:Apache Ambari

Dr.Elephant:Dr.elephant是一款对Hadoop和Spark任务进行性能监控和调优的工具,它由LinkedIn的团队于2016年开源,开源之前已经在公司运行使用2年。它能自动采集作业的度量指标并分析,然后以简单明了的方式展现出来。Dr.elephant的设计思想是通过作业分析结果来指导开发者进行作业调优,从而提升开发者效率和集群资源的利用率。

相关网址:Dr.Elephant

Ganglia:Ganglia是UC Berkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点。Ganglia的核心包含gmond、gmetad以及一个Web前端。主要是用来监控系统性能,如:cpu 、mem、硬盘利用率, I/O负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用。

相关网站:Ganglia

Zabbix:Zabbix是一个的基于Web界面的开源的分布式企业级监控解决方案。于2004年zabbix 1.0 正式发布,由Alexei Vladishev团队维护更新,Zabbix SIA提供支持。Zabbix通过C/S模式采集数据,通过B/S模式在web端展示和配置。它能够实时监控从成千上万台服务器、虚拟机和网络设备中收集到的数以百万计的指标。Zabbix能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。还能够利用存储数据提供杰出的报表及实时的图形化数据处理,实现对监控主机7x24小时集中监控。

相关网站:Zabbix

Eagle:Apache Eagle是一个开源监视和警报解决方案,用于智能实时地识别大数据平台上的安全和性能问题,例如Apache Hadoop,Apache Spark等。Eagle起源于eBay,最早用于解决大规模Hadoop集群的监控问题,于2015年10月提交给Apache孵化器,2016年12月21日成为Apache顶级项目。Eagle 主要包括:高可扩展、高可伸缩、低延时、动态协同等特点,支持数据行为实时监控,能立即监测出对敏感数据的访问或恶意的操作,并立即采取应对的措施。Eagle 提供一套高效分布式的流式策略引擎,具有高实时、可伸缩、易扩展、交互友好等特点,同时集成机器学习对用户行为建立Profile以实现实时智能实时地保护 Hadoop 生态系统中大数据的安全。

相关网站:Apache Eagle

文件系统

HDFS:HDFS(Hadoop Distributed File System)分布式文件系统,是分布式计算中数据存储管理的基础。是Hadoop Core项目的核心子项目。HDFS是基于流数据模式访问和处理超大文件的需求而开发的,效仿谷歌文件系统(GFS),数据在相同节点上以复制的方式进行存储以实现将数据合并计算的目的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。它有很多的优点,但也存在有一些缺点,包括:不适合低延迟数据访问、无法高效存储大量小文件、不支持多用户写入及任意修改文件。

相关网站:Hadoop HDFS

GPFS:GPFS(General Parallel File System)是IBM推出的基于Hadoop的并行分布式集群文件系统。IBM认为GPFS不共享集群版本比HDFS快得多,因为它在内核级别中运行,而不是像HDFS在操作系统中运行。GPFS是一个共享磁盘的文件系统,集群内的所有节点可以并行地访问所有共享磁盘,并通过分布式的Token管理机制和条带化技术来管理和优化节点的访问。GPFS支持完整的Posix文件系统语义。GPFS的应用范围非常广泛,从多节点文件共享服务、实时多媒体处理、到大型的高性能计算集群,我们都可以看到GPFS的优秀表现。GPFS在这些应用里面都表现出了非常出色的性能和高可用性。

相关网站:GPFS

Ceph:Ceph是一个开源的统一的分布式存储系统,是高性能的并行文件系统。Ceph是加州大学Santa Cruz分校的Sage Weil(DreamHost的联合创始人)专为博士论文设计的新一代自由软件分布式文件系统。自2007年毕业之后,Sage开始全职投入到Ceph开发之中,使其能适用于生产环境。Ceph的主要目标是设计成基于POSIX的没有单点故障的分布式文件系统,使数据能容错和无缝的复制。2010年3月,Linus Torvalds将Ceph client合并到内核2.6.34中。它基于CRUSH算法,没有中心节点,可以无限扩展。Ceph提供三种存储方式分别是对象存储,块存储和文件系统。在虚拟化领域里,比较常用到的是Ceph的块设备存储。Ceph以其稳定、高可用、可扩展的特性,乘着开源云计算管理系统OpenStack的东风,迅速成为最热门的开源分布式存储系统。Ceph是目前最火的分布式存储软件,Ceph开源存储项目已经成为全球众多海量存储项目的主要选择。Ceph现在是云计算、虚拟机部署的最火开源存储解决方案,是私有云事实上的标准。

相关网站:Ceph、Ceph中文网

GlusterFS:GlusterFS(GNU ClusterFile System)是一种全对称的开源分布式文件系统,所谓全对称是指GlusterFS采用弹性哈希算法,没有中心节点,所有节点全部平等。GlusterFS配置方便,稳定性好,可轻松达到PB级容量,数千个节点。2011年被红帽收购,之后推出了基于GlusterFS的Red Hat Storage Server,增加了针对KVM的许多特性,可用作为KVM存储image存储集群,也可以为LB或HA提供存储。

相关网站:GlusterFS

Swift:Swift 最初是由 Rackspace 公司开发的高可用分布式对象存储服务。于 2010 年贡献给OpenStack开源社区作为其最初的核心子项目之一,为其 Nova 子项目提供虚机镜像存储服务。Swift构筑在比较便宜的标准硬件存储基础设施之上,无需采用 RAID(磁盘冗余阵列),通过在软件层面引入一致性散列技术和数据冗余性,牺牲一定程度的数据一致性来达到高可用性和可伸缩性,支持多租户模式、容器和对象读写操作,适合解决互联网的应用场景下非结构化数据存储问题。Swift是一种比较通用的存储解决方案,能够可靠地存储数量非常多的大小不一的文件。

相关网站:OpenStack Swift

BeeGFS:BeeGFS(原FhGFS)既是一个网络文件系统也是一个并行文件系统。是由Fraunhofer Institute为工业数学计算而设计开发,由于在欧洲和美国的中小型HPC系统性能表现良好,在2014年改名注册为BeeGFS并受到科研和商业的广泛应用。客户端通过网络与存储服务器进行通信(具有TCP/IP或任何具有RDMA功能 的互连,如InfiniBand,RoCE或Omni-Path,支持native verbs 接口)。通过BeeGFS添加更多的服务器, 其容量和性能被聚合在单个命名空间中。BeeGFS是遵循GPL的“免费开源”产品,文件系统没有许可证费用。 由ThinkParQ提供专业支持,系统集成商可以为客户构建使用BeeGFS的解决方案。

相关网站:BeeGFS

Alluxio:Alluxio(原Tachyon)是以内存为中心的虚拟的分布式存储系统。诞生于UC Berkeley的AMPLab,它统一了数据访问的方式,为上层计算框架和底层存储系统构建了桥梁, 应用只需要连接Alluxio即可访问存储在底层任意存储系统中的数据。此外,Alluxio的以内存为中心的架构使得数据的访问速度能比现有方案快几个数量级。Alluxio介于计算框架(如Apache Spark,Apache MapReduce,Apache HBase,Apache Hive,Apache Flink)和现有的存储系统(如Amazon S3,OpenStack Swift,GlusterFS,HDFS,MaprFS,Ceph,NFS,OSS)之间。

相关网站:Alluxio

资源调度

YARN:(Yet Another Resource Negotiator)是Hadoop的资源管理和作业调度系统。作为Apache Hadoop的核心组件之一,YARN负责将系统资源分配给在Hadoop集群中运行的各种应用程序,并调度在不同集群节点上执行的任务。YARN是Hadoop2.x 版本中的一个新特性。它的出现其实是为了解决第一代 MapReduce 编程框架的不足,提高集群环境下的资源利用率,这些资源包括内存,磁盘,网络,IO等。YARN的基本思想是将资源管理和作业调度/监视的功能分解为单独的 daemon(守护进程),其拥有一个全局ResourceManager、每个应用程序的ApplicationMaster及每台机器框架代理NodeManager。ResourceManager负责所有应用程序之间资源分配。NodeManager负责Containers,监视其资源使用情况(CPU,内存,磁盘,网络)并将其报告给 ResourceManager。ApplicationMaster负责是协调来自ResourceManager的资源,并与NodeManager一起执行和监视任务。

相关网址:Hadoop Yarn

Mesos:Apache Mesos是一个集群管理器,可跨分布式应用程序或框架提供有效的资源隔离和共享。Mesos最初是由加州大学伯克利分校的AMPLab开发的,Mesos项目发布于是2009年,2010年12月进入Apache孵化器,2013年6月19日成为Apache顶级项目。Twitter公司则是 Mesos 项目的早期支持者和使用者之一。它位于应用程序层和操作系统之间,可以更加轻松地在大规模集群环境中更有效地部署和管理应用程序。它可以在动态共享节点池上运行许多应用程序。对数据中心而言它就像一个单一的资源池,从物理或虚拟机器中抽离了CPU、内存、存储以及其它计算资源,很容易建立和有效运行具备容错性和弹性的分布式系统。2019年5月,Twitter宣布放弃Mesos,基础设施从Mesos全面转向Kubernetes。

相关网址:Apache Mesos

协调框架

Zookeeper:Apache ZooKeeper 是一个开源的分布式协调服务,是Google的Chubby一个开源的实现,是Hadoop,HBase和其他分布式框架使用的有组织服务的标准。由雅虎开源并于2010年11月成为Apache顶级项目。ZooKeeper是一个典型的分布式数据一致性解决方案,分布式应用程序可以基于ZooKeeper实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。ZooKeeper是以Fast Paxos算法为基础的,Paxos 算法存在活锁的问题,即当有多个proposer交错提交时,有可能互相排斥导致没有一个proposer能提交成功,而Fast Paxos作了一些优化,通过选举产生一个leader (领导者),只有leader才能提交proposer。ZooKeeper使用 ZAB 协议作为其保证数据一致性的核心算法。ZAB(ZooKeeper Atomic Broadcast 原子广播)协议是为分布式协调服务 ZooKeeper 专门设计的一种支持崩溃恢复的原子广播协议。

相关网址:Apache Zookeeper

Etcd:Etcd是一个高可用的键值存储系统,主要用于共享配置和服务发现。Etcd是一种分布式kv存储设施,由CoreOS于2013年6月发起的开源并维护的项目,它感来自于ZooKeeper和Doozer,基于Go语言实现。它类似的Zookeeper,但没有Zookeeper那么重型,功能也没有覆盖那么多,通过Raft一致性算法处理日志复制以保证强一致性。Raft是一个新的一致性算法,适用于分布式系统的日志复制,Raft通过选举的方式来实现一致性。Google的容器集群管理系统Kubernetes、开源PaaS平台Cloud Foundry和CoreOS的Fleet都广泛使用了Etcd。在分布式系统中,如何管理节点间的状态一直是一个难题,etcd像是专门为集群环境的服务发现和注册而设计,它提供了数据TTL失效、数据改变监视、多值、目录监听、分布式锁原子操作等功能,可以方便的跟踪并管理集群节点的状态。

相关网站:Etcd

Consul:Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置共享。Consul用Go语言实现,因此具有天然可移植性(支持Linux、windows和Mac OS X)。与其他分布式服务注册与发现的方案不同,Consul的方案更"一站式",内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等)。采用Raft算法一致性协议,支持多数据中心分布式高可用,服务发现和配置共享,使用gossip协议管理成员和消息广播,支持ACL访问控制。最新的Consul提供了一个新特性“Mesh 网关”,实现透明、跨网络的连接。这些特性可以跨平台工作,对Kubernetes提供一流的支持,并且在任何云或专用网络上都可以轻松地部署到更传统的环境中,实现了Consul多云服务网络的目标。

相关网站:Consul

数据存储

Hbase:Apache HBase(Hadoop Database)是一个分布式的、面向列的NoSQL开源数据库。是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。初期的目标是弥补MapReduce在实时操作上的缺失,方便用户可随时操作大规模的数据集。HBase原来是Apache的Hadoop项目的子项目,随着大数据与NoSQL的流行和迅速发展,2010年5月Apache HBase脱离了Hadoop成为Apache基金的顶级项目。HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用 Chubby作为协同服务,HBase利用Zookeeper作为协调服务。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库,另外HBase是基于列的而不是基于行的模式。

相关网址:Apache Hbase

Cassandra:Apache Cassandra是一个开源的、分布式的混合型NoSQL数据库。它最初由Facebook开发,于2008年开源,2010年2月17日成为Apache顶级项目。主要用于储存海量数据。以Amazon专有的完全分布式Dynamo为基础,结合了Google BigTable基于列族的数据模型。P2P去中心化的存储。很多方面都可以称之为Dynamo 2.0。Cassandra的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构成的一个分布式网络服务,对Cassandra 的一个写操作,会被复制到其它节点上去,对Cassandra的读操作,也会被路由到某个节点上面去读取。对于一个Cassandra群集来说,扩展性能是比较简单的事情,只管在群集里面添加节点就可以了。它提供了高可用性,没有单点故障。它是一个网络社交云计算方面理想的数据库。

相关网站:Apache Cassandra

ScyllaDB:ScyllaDB 是用 C++ 重写的 Cassandra,官网号称每节点每秒处理 100 万 TPS。ScyllaDB 完全兼容 Apache Cassandra,拥有比 Cassandra 多 10x 倍的吞吐量,降低了延迟。ScyllaDB 号称是世界上最快的 NoSQL 列存储数据库。ScyllaDB 在垃圾收集或者 Compaction 的时候不需要暂停,在常规生产负载的时候可以添加和删除节点,数据结构测量不会跨 CPU 缓存线,poll 模式驱动替代了中断。目前国内资料极少,中文网2016年7月停止了更新。

相关网站:ScyllaDB、ScyllaDB中文网

MongoDB:MongoDB是为处理大数据而生的一个面向文档的分布式开源数据库,由10gen公司开发和维护。它使用C++编写。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。MongoDB是专为可扩展性,高性能和高可用性而设计的数据库。它可以从单服务器部署扩展到大型、复杂的多数据中心架构。利用内存计算的优势,MongoDB能够提供高性能的数据读写操作。MongoDB的本地复制和自动故障转移功能使应用程序具有企业级的可靠性和操作灵活性。2018年10月MongoDB宣布将开源协议从GNU AGPLv3切换到Server Side Public License (SSPL),SSPL 明确要求托管 MongoDB 实例的云厂商要么获取商业许可证要么向社区开放其服务源码。随即,红帽宣布从Red Hat Enterprise Linux(RHEL)8中删除 MongoDB,Debian Linux也已经从它的发行版中删除了MongoDB。

相关网址:MongoDB、MongoDB中文社区

Accumulo:Apache Accumulo 是一个高性能可扩展的分布式Key-Value数据存储和检索系统。由美国国家安全局(NSA)于2011年捐赠给Apache基金会,2012年3月21日成为Apache顶级项目。Accumulo使用Google BigTable设计思路,基于Apache Hadoop、Zookeeper 和 Thrift 构建。Accumulo支持高效存储和检索的结构化数据,包括查询范围,并提供支持使用Accumulo表作为输入和输出的 MapReduce作业。Accumulo比简单的key-values数据库提供更丰富的数据模型,但不是完全的关系数据库。

相关网站:Apache Accumulo

Redis:Redis 是一个开源的支持网络、可基于内存也可持久化的日志型、Key-Value数据库,和Memcached类似。它可以用作数据库、缓存和消息中间件。是Salvatore Sanfilippo于2009年开发,2010年3月15日起Redis的开发工作由VMware主持,2013年5月开始由Pivotal赞助。Redis支持存储的value类型相对更多,包括字符串、链表、集合(set)和有序集合(zset)。与memcached一样,为了保证效率,数据都是缓存在内存中,区别的是Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了主从同步。Redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Python、Ruby、Erlang、PHP客户端,使用很方便。 简单说,Redis是一个数据缓存的NoSQL数据库。

相关网站:Redis、Redis中文网

Ignite:Apache Ignite是一个以内存为中心的分布式数据库、缓存和处理平台,可以在PB级数据中,以内存级的速度进行事务性、分析性以及流式负载的处理。Ignite和Apache Arrow很类似,属于大数据范畴中的内存分布式管理系统。Ignite来源于GridGain系统公司开发的GridGain软件,2014 年3月GridGain公司将该软件90%以上的功能和代码开源,2014年10月GridGain通过Apache 2.0许可进入Apache的孵化器进行孵化,2015年9月18日成为Apache的顶级项目,9月28日即发布了1.4.0版。Ignite提供了完整的SQL、DDL和DML的支持,可以使用纯SQL而不用写代码与Ignite进行交互,这意味着只使用SQL就可以创建表和索引,以及插入、更新和查询数据。有这个完整的SQL支持,Ignite就可以作为一种分布式SQL数据库。Ignite还提供了基于数据关联对数据进行分区的能力,并使用大规模并行处理来提高性能和可伸缩性。Ignite还提供内置的流处理、分析和机器学习功能。它类似于一个关系型的内存数据库,可以像操作数据库一样操作内存缓存。

相关网站:Apache Ignite、Apache Ignite中文站

Arrow:Apache Arrow 大数据列式内存数据平台。最初是基于Apache Drill项目的代码进行开发的,于2016年2月17日成为Apache顶级项目。它是列式内存分析的事实标准,由来自Drill、Hadoop、HBase、Impala、Storm等13个顶级开源项目的工程师们开发和完善。它设计的目的在于作为一个跨平台的数据层,来加快大数据分析项目的运行速度。它为平面和分层数据指定了独立于语言的标准化列式内存格式,可在现代硬件上进行高效的分析操作。它还提供了计算库和零拷贝流式消息传递和进程间通信。在分布式系统内部,每个系统都有自己的内存格式,大量的 CPU 资源被消耗在序列化和反序列化过程中,并且由于每个项目都有自己的实现,没有一个明确的标准,造成各个系统都在重复着复制、转换工作,这种问题在微服务系统架构出现之后更加明显,Arrow 的出现就是为了解决这一问题。它提供了一种跨平台应用的内存数据交换格式,是列式内存分析的事实标准。目前支持的语言包括C、C++、C#、Go、Java、JavaScript、MATLAB、Python、R语言、Ruby和Rust等11种语言。

相关网站:Apache Arrow

Geode:Apache Geode是一个高性能的分布式内存对象缓存系统,Key/Value存储系统。是GemFire的开源版,2015年4月GemGire把代码提交给Apache孵化,2016年11月16日毕业成为Apache基金会的顶级项目。Geode是一个相当成熟、强健的的数据管理平台,提供实时的、一致的、贯穿整个云架构地访问数据关键型应用。Geode跨多个进程汇集内存,CPU,网络资源和可选的本地磁盘,以管理应用程序对象和行为。Geode自身功能比较多,首先它是一个基于JVM的NoSQL分布式数据处理平台,同时集中间件、缓存、消息队列、事件处理引擎、NoSQL数据库于一身的分布式内存数据处理平台。可用来进行完成分布式缓存、数据持久化、分布式事物、动态扩展等功能。简单说,Geode是Redis的增强版。

相关网站:Apache Geode

Neo4j:Neo4j是一个开源的高性能NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是由Neo技术使用Java语言完全开发的。图形数据库也就意味着它的数据并非保存在表或集合中,而是保存为节点以及节点之间的关系。Neo4j 除了顶点和边,还有一种重要的部分属性。无论是顶点还是边,都可以有任意多的属性。属性的存放类似于一个HashMap,Key 为一个字符串,而 Value 必须是基本类型或者是基本类型数组。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。Neo4j创建的图是用顶点和边构建一个有向图,其查询语言cypher已经成为事实上的标准。

相关网站:Neo4j、Neo4j中文社区

CouchDB:Apache CouchDB是一个分布式的NoSQL面向文档的数据库,2008年11月19日成为Apache顶级开源项目。CouchDB是一个完全包含web的数据库。使用JSON格式存储文档数据。使用web浏览器通过HTTP访问文档。使用JavaScript查询、组合和转换文档。CouchDB可以很好地与现代web和移动应用程序配合使用。可以使用CouchDB 增量复制高效地分发数据。CouchDB支持带有自动冲突检测的主控设置。CouchDB附带了一套特性,比如即时文档转换和实时更改通知,这使得web开发变得非常简单。它甚至提供了一个易于使用的web管理控制台。

相关网站:Apache CouchDB

Kudu:Apache Kudu是一个为了Hadoop系统环境而打造的列式存储系统,是一个为块数据的快速分析而生的存储架构,可以同时提供低延迟的随机读写和高效的数据分析能力。Kudu是由Cloudera开源,2015年12月3日进入Apache孵化器,2016年7月20日成为Apache顶级项目。Kudu专为了对快速变化的数据进行快速的分析,拥有Hadoop生态系统应用的常见技术特性,运行在一般的商用硬件上,支持水平扩展,高可用,使用Raft协议进行一致性保证。并且与Cloudera Impala和Apache Spark等当前流行的大数据查询和分析工具结合紧密。在Kudu出现之前,Hadoop生态环境中的储存主要依赖HDFS和HBase,追求高吞吐批处理的用例中使用HDFS,追求低延时随机读取用例下用HBase,而Kudu正好能兼顾这两者。

相关网站:Apache Kudu

CarbonData:Apache CarbonData是一个基于索引的列式数据格式解决方案。华为于2016年6月开源并贡献给Apache,于2017年4月19日成为Apache顶级项目。CarbonData是一种新的融合存储解决方案,利用先进的列式存储,索引,压缩和编码技术提高计算效率,从而加快查询速度,其查询速度比 PetaBytes 数据快一个数量级。CarbonData提供了一种新的融合数据存储方案,以一份数据同时支持“交互式分析、详单查询、任意维度组合的过滤查询等”多种大数据应用场景,并通过丰富的索引技术、字典编码、列存等特性提升了IO扫描和计算性能,实现百亿数据级秒级响应,与大数据生态Apache Hadoop、Apache Spark等无缝集成。

相关网站:Apache CarbonData、CarbonData中文文档

数据处理

MapReduce:Apache Hadoop MapReduce是一个分布式的离线计算框架,用于海量数据的并行运算,是Hadoop数据分析的核心.。MapReduce框架使得编程人员在不会分布式并行编程的情况下,将编写的业务逻辑代码运行在分布式系统上,开发人员可以将绝大部分的工作集中于业务逻辑上的开发,具体的计算只需要交给框架就可以。MapReduce的处理过程分为两个步骤:Map和Reduce。Map阶段对输入的数据进行并行处理,处理结果传给Reduce完成最后的汇总。但由于MR对HDFS的频繁操作(包括计算结果持久化、数据备份、资源下载及Shuffle等)导致磁盘I/O成为系统性能的瓶颈,因此只适用于离线数据处理或批处理,而不能支持对迭代式、交互式、流式数据的处理,目前逐渐被Spark、Flink替代。

相关网站:Hadoop MapReduce

Spark:Apache Spark是通用的一站式计算框架,是专为大规模数据处理而设计的快速通用的计算引擎。2009年诞生于UC Berkeley的AMPLab,2010 年开源,2013年6月成为Apache孵化项目,2014年2月19日成为Apache顶级项目。Spark是基于MapReduce算法实现的分布式计算,拥有 MapReduce 所具有的优点,但不同于 MR 的是,Job中间输出和结果可以保存在内存中,从而不再需要读写 HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的算法中,高效地支持更多计算模式,包括交互式查询和流处理。Spark是MapReduce 的替代方案,是对 Hadoop 的补充,而且兼容 HDFS、Hive,可融入 Hadoop 的生态系统,以弥补MapReduce的不足。Spark是在Scala语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和Scala能够紧密集成,其中的Scala可以像操作本地集合对象一样轻松地操作分布式数据集。Spark通过提供丰富的Scala、Java、Python API、R及交互式Shell来提高可用性。Spark主要包含几个重要组件:SparkCore批处理、SparkSQL交互式处理、SparkStreaming流处理、Spark Graphx图计算、Spark MLlib机器学习,Spark旨在成为运行批处理、数据流处理、交互处理、图形处理和机器学习等应用的一站式平台。目前Spark已经成为大数据领域最热门的技术。

相关网站:Apache Spark

Flink:Apache Flink是一个的开源的流处理和批处理分布式数据处理框架,其核心是一个流式的数据流执行引擎。Flink起源于Stratosphere项目,2014年4月Stratosphere代码被贡献给Apache软件基金会成为孵化器项目,2014年12月17日成为Apache顶级项目,0.6版本以后改名为Flink,2015年09月发布第一个稳定版本0.9。Flink的概念和使用场合类似于Spark,旨在成为运行批处理、数据流处理、交互处理、图形处理和机器学习等应用的一站式平台。Flink不仅具有支持高吞吐、低延迟和exactly-once语义的实时计算能力,还有基于流式计算引擎处理批量数据的计算能力,真正意义实现了批流统一,同时Flink运行时本身也支持迭代算法的执行。Flink流式计算模型实现了高吞吐,低延迟,高性能兼具实时流式计算框架,而且完全兼容Hadoop。众多优秀的特性,使得Flink成为开源大数据数据处理框架中的一颗新星,在全球范围内,越来越多的公司开始使用Flink,Flink也渐渐成为企业内部主流的数据处理框架,逐渐成为下一代大数据数据处理框架标准的趋势。

相关网站:Apache Flink

Storm:Apache Storm是一个开源的分布式实时大数据处理系统。Hadoop不擅长实时计算,因为它是为批处理而生的,Storm擅长实时处理海量数据,而非批处理。Storm设计用于在容错和水平可扩展方法中处理大量数据。它是一个流数据框架,具有最高的摄取率。Storm最初由Nathan Marz创建,后来被Twitter收购并开源。2011年9月Storm正式发布,2013年9月进入Apache孵化并于2014年9月17日毕业成为Apache顶级项目,短时间内Storm成为了分布式实时处理系统的标准。Storm是用Java和Clojure编写,使用Apache Thrift,能以任何语言编写拓扑topology。Storm提供了毫秒级别的实时数据处理能力。现在随着Spark和Flink的发展,Storm市场占有逐渐在降低,但目前它仍然是实时分析的领导者。

相关网站:Apache Storm、Apache Storm教程

Tez:Apache Tez是一个开源的支持DAG作业的计算引擎,它可以将多个有依赖的作业转换为一个作业从而大幅提升DAG作业的性能。Tez是Hortonworks开发的DAG计算框架,是为了更高效地运行存在依赖关系的作业(比如Pig和Hive产生的MapReduce作业),减少磁盘和网络IO。2014年7月16日成为Apache顶级项目。Tez是从MapReduce计算框架演化而来的通用DAG计算框架,可作为MapReduce、Pig、Hive等系统的底层数据处理引擎。简单来说,Tez主要Apache和HDP平台替代MR和Hive底层执行引擎,提高计算效率。

相关网站:Apache Tez

Samza:Apache Samza是一种是分布式流处理框架,与Apache Kafka消息系统紧密绑定的流处理框架。是LinkedIn于2013年7月开源并作为孵化项目贡献给Apache,2015年1月21日成为Apache顶级项目。它是一个分布式流处理框架,专用于实时数据的处理,非常像Twitter的流处理系统Storm。不同的是Samza基于Hadoop,而且使用了LinkedIn自家的Kafka分布式消息系统。Samza的目标是将流作为接受到的消息处理,同时,Samza的流初始元素并不是一个tuple或一个DStream,而是一个消息,流被划分到分区,每个分区是一个只读消息的排序的序列,每个消息有一个唯一的ID(offset),系统也支持批处理,从同样的流分区以顺序消费几个消息,尽管Samza主要是依赖于Hadoop的Yarn和Apache Kafka,但是它的Execution & Streaming模块是可插拔的。

相关网站:Apache Samza、Apache Samza教程

Apex:Apache Apex是一个统一流和批处理引擎。作为新的开源数据流分析方案,Apex脱胎于DataTorrent的RTS平台,能够带来出色的速度表现并简化编程要求。由DataTorrent在2012年创建,2015年8月贡献给Apache,2016年4月20日成为Apache顶级项目。Apex能够在Hadoop上实现数据流分析。其设计目标在于运行Hadoop生态系统,并利用YARN实现按需规模伸缩且通过HDFS实现容错能力。

相关网站:Apache Apex

Beam:Apache Beam是一个开源的统一编程模型,用于定义和执行并行数据处理管道。Beam主要是对数据处理的编程范式和接口进行了统一定义,这样基于Beam开发的数据处理程序可以执行在任意的分布式计算引擎上。誉为下一代的大数据处理统一标准。Google在2016年2月宣布将大数据流水线产品(Google DataFlow)贡献给Apache基金会孵化,2016年12月21日成为Apache顶级项目,2017年5月发布第一个稳定版本2.0.0。它的强大之处在于它能够同时运行批处理流和流式管道,并且由Beam支持的分布式处理后端之一执行:Apache Apex,Apache Flink,Apache Spark和Google Cloud Dataflow。

相关网站:Apache Beam

Heron:Heron是一个实时的、容错的、分布式的流数据处理系统。Twitter开发的第二代流处理系统,于2016年5月25日宣布开源。2017年6月23日进入Apache孵化器。Twitter宣称已经用Heron替换了Storm。Heron是Apache Storm的直接继承者。它继承了Apache Storm的实时性、容错、低延迟的特性。并且它保留了Apache Storm的Topology API,使用者可以直接将Apache Storm上构建的Topology项目,直接转移到Apache Storm中运行而不需要做其他更改。它广泛应用于实时分析、连续计算、复杂事件处理和一些实时性要求的应用。相比于Apache Storm,它提供了扩展性更好,调试能力更强,性能更好,管理更容易等特性。它能够每秒钟百万级别的吞吐量和毫秒级别的延迟。

相关网站:Heron源码

数据查询和分析

Hive:Apache Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL语句的Hive SQL(HQL)查询功能,将SQL语句转换为MapReduce任务进行运行。Hive是由Facebook在2008年将捐献给Apache,2010年9月毕业成为Apache顶级项目。原理是用熟悉的SQL模型来操作 HDFS 上的数据 。优点是学习成本低,可以通过HQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用。方便的使用 Hive 进行数据仓库的建模和建设,然后使用 SQL 模型针对数据仓库中的数据进行统计和分析。但由于Hive底层默认是转换为MR执行,而MR的shuffle是基于磁盘的,所以只能处理离线分析,效率比较低。目前大部分企业使用Hive构建数仓。

相关网站:Apache Hive

SparkSQL:Apache SparkSQL 是一个用来处理结构化数据的spark组件。Spark团队在2014年发布了Spark SQL,并吸收了一个的早期的Hive-on-Spark项目Shark,迅速成为最广泛使用的Spark模块。它提供了一个叫做DataFrames的可编程抽象数据模型,并且可被视为一个分布式的SQL查询引擎。SparkSQL替代的是Hive的查询引擎,且兼容hive。跟基本的Spark RDD的API不同,Spark SQL中提供的接口将会提供给Spark更多关于结构化数据和计算的信息。Spark SQL底层是Spark Core,这种意味着可以轻松地在不同的SQL和API之间进行切换。

相关网站:Apache SparkSQL

Presto:Presto是一个分布式的数据查询引擎。它本身并不存储数据,但是可以接入多种数据源,并且支持跨数据源的级联查询。是Facebook于2012年开发,2013年开源的分布式SQL交互式查询引擎。Presto是一个OLAP的工具,擅长对海量数据进行复杂的分析,但对于OLTP场景并不擅长,Presto只有计算分析能力,所以不能把Presto当做数据库来使用。Presto是一个低延迟高并发的内存计算引擎,相比Hive,执行效率要高很多。是一种MPP(Massively parallel processing大规模并行处理)模型,能处理PB级数据。Presto的原理是将数据的一些放在内存进行计算,完成后取出,再处理另一些数据,这样循环的类似流水线的处理模式。

相关网站:Presto

Kylin:Apache Kylin是Hadoop大数据平台上一个开源的分布式分析引擎,提供Hadoop/Spark之上的SQL查询接口及OLAP能力以支持超大规模数据。它采用Cube预计算技术,可以将某些场景下的大数据 SQL 查询速度提升到亚秒级别。Kylin始创于eBay,并在2014年11月加入Apache孵化器,2015年12月8日成为Apache顶级项目,是第一个中国团队主导贡献的顶级项目。Kylin它的出现就是为了解决大数据系统中TB级别的数据分析需求,主要是对hive中的数据进行预计算,利用hadoop的MapReduce框架实现,它能在亚秒内查询巨大的Hive表。在Kylin中最关键的两个流程是Cube的预计算过程和SQL查询转换成Cube的过程,尽量多地预先计算聚合结果,在查询时尽量利用预计算的结果得出查询结果,从而避免直接扫描可能无限增大的原始记录。

相关网站:Apache Kylin中文版

Impala:Apache Impala是一个实时交互SQL大数据查询引擎。是Cloudera在受到Google的Dremel启发下开发的SQL On Hadoop开源MPP查询工具,2012年10月开源,于2017年11月28日晋升为apache顶级项目。Impala使用完全开放的形式融入Hadoop生态,允许用户使用SQL操作Hadoop中的海量数据,目前已经支持更多存储选择,比如:Apache Kudu、Amazon S3、Microsoft ADLS、本地存储等。最初Impala仅支持HDFS海量数据的交互式分析,其灵活性和领先的分析型数据库性能推动了Impala在全球企业中的大量部署。为企业业务提供BI和交互式SQL高效率分析支持,让支持Impala的第三方生态系统快速增长。与Apache Kudu项目,进一步巩固了Cloudera在开源SQL领域的地位。

相关网站:Apache Impala

Druid:Apache Druid是一个开源的实时大数据分析引擎,旨在快速处理大规模的数据,并能够实现快速查询和分析。是Metamarkets推出的一个分布式内存实时分析系统,用于解决如何在大规模数据集下进行快速的、交互式的查询和分析。2018年2月28日进入Apache孵化器。Druid就是为了解决海量数据上的实时分析,它提供了以交互方式访问数据的能力,数据可以实时摄入,进入到Druid后立即可查,同时数据是几乎是不可变。通常是基于时序的事实事件,事实发生后进入Druid,外部系统就可以对该事实进行查询。

相关网站:Apache Druid

Elastic Search:Elastic Search(ES) 是一个分布式可扩展的实时搜索和分析引擎,是一个建立在Apache Lucene基础上的搜索引擎.。由Shay Banon在2010年创建并开源,后来Shay和合伙人成立了公司专注打造ES,他们对ES进行了一些商业化的包装和支持。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。ES的实现原理主要分为以下几个步骤,首先用户将数据提交到ES数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。ES是用Java开发的,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,ES是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。ES现在是Elastic的ELK家族成员之一。

相关网站:ElasticSearch、ElasticSearch中文社区

HAWQ:Apache HAWQ(Hadoop With Query 带查询Hadoop)是一个Hadoop原生大规模并行SQL分析引擎,针对的是分析性应用。HAWQ是Pivotal在2012年推出了一款商业许可的高性能SQL引擎,于2015年6月将项目捐献给了Apache,并于2015年9月进入了Apache孵化器,2018年8月15日成为Apache顶级项目。HAWQ是Hadoop原生SQL查询引擎,结合了MPP数据库的关键技术优势和Hadoop的可扩展性和便捷性。官方宣称HAWQ做OLAP高于Hive和Impala性能4倍以上。它非常适合用于Hadoop平台上快速构建数据仓库系统。HAWQ具有大规模并行处理、完善的SQL兼容性、支持存储过程和事务、出色的性能表现等特性,还可与开源数据挖掘库MADLib机器学习库轻松整合,从而使用SQL就能进行数据挖掘与机器学习。

相关网站:Apache HAWQ

Lucene:Apache Lucene是一套开源的基于Java的用于全文检索和搜寻的引擎工具包,是一种功能强大且被广泛使用的搜索引擎,由资深全文检索专家Doug Cutting在2000年3月创建开源,在2001年9月加入Apache的Jakarta家族中。Lucene并不是一个完整的搜索引擎产品,而是一个全文检索引擎的架构,可以用来制作搜索引擎产品。它是一个全文检索引擎的架构,提供了完整的创建索引和查询索引,以及部分文本分析的引擎。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。Lucene提供了一个简单却强大的应用程序接口(API),能够做全文索引和搜寻,在Java开发环境里Lucene是一个成熟的免费开放源代码工具。

相关网站:Apache Lucene

Solr:Apache Solr 是基于Apache Lucene构建的开源的企业搜索平台。2004年发布,2007年1月17日成为Apache顶级项目。Solr 具有高可靠性,可扩展性和容错性,可提供分布式索引,复制和负载均衡查询,自动故障转移和恢复以及集中配置等特性。Solr 是用 Java 编写、运行在 Servlet 容器(如 Apache Tomcat 或Jetty)的一个独立的全文搜索服务器。Solr 采用了Lucene Java 搜索库为核心的全文索引和搜索,并具有类似 REST 的 HTTP/XML 和 JSON 的 API。Solr 强大的外部配置功能使得无需进行 Java 编码,便可对其进行调整以适应多种类型的应用程序。Solr 为世界上许多大型互联网站点提供搜索和导航功能。

相关网站:Apache Solr

Phoenix:Apache Phoenix是构建在HBase之上的SQL框架,可以使用标准的JDBC的API去代替常规的HBase客户端的API去创建表,插入数据和查询HBase数据。由Saleforce在2013年捐献给Apache,2014年5月项目毕业成为顶级项目。它一个Java中间层,可以让开发者通过Phoenix可以像使用MySQL等关系型数据库一样使用HBase中的数据表。Phoenix会将用户编写的SQL查询编译为一系列的Scan操作,最终产生通用的JDBC结果集返回给客户端。它充分利用了HBase协处理器和过滤器等底层,小范围的查询在毫秒级响应,千万数据的话响应速度为秒级。

相关网站:Apache Phoenix

数据收集

Flume:Apache Flume是一个分布式海量日志采集、聚合和传输系统。Flume最初由Cloudera由开发,于2011年6月贡献给Apache,2012年成为Apache顶级项目。Flume支持在日志系统中定制各类数据发送方,用于收集数据,同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。Flume的数据流由事件(Event)贯穿始终。事件是Flume的基本数据单位,它携带日志数据(字节数组形式)并且携带有头信息,这些Event由Agent外部的Source生成,当Source捕获事件后会进行特定的格式化,然后Source会把事件推入(单个或多个)Channel中。可以把Channel看作是一个缓冲区,它将保存事件直到Sink处理完该事件。Sink负责持久化日志或者把事件推向另一个Source。

相关网站:Apache Flume

Filebeat:Filebeat是本地文件的日志数据采集器。Filebeat是一个轻量级日志传输工具,它监视日志目录或特定日志文件(Tail File),并将它们转发给Logstash、Elasticsearch、Kafka、Redis等中。其作用是收集业务服务器的日志,输出到一个日志系统便于集中管理。Filebeat 是 Elastic Stack 的一部分,因此能够与 Logstash、Elasticsearch 和 Kibana 无缝协作。无论您要使用 Logstash 转换或充实日志和文件,还是在 Elasticsearch 中随意处理一些数据分析,亦或在 Kibana 中构建和分享仪表板,Filebeat 都能轻松地将您的数据发送至最关键的地方。Filebeat占用资源少,而且安装配置也比较简单,支持目前各类主流OS及Docker平台。

相关网站:Filebeat

Logstash:Logstash是一个具有实时管道功能的开源数据收集引擎。它可以动态地将来自不同数据源的数据统一起来,并将数据规范化到选择的目的地。可以用它来统一对应用程序日志进行收集管理,提供 Web 接口用于查询和统计。Logstash作为一个数据管道中间件,支持对各种类型数据的采集与转换,并将数据发送到各种类型的存储库。Logstash现在是Elastic的ELK家族成员之一。

相关网站:Logstash中文社区

Chukwa:Apache Chukwa 是一个开源的用于监控大型分布式系统的数据收集系统。2010年7月14日进入Apache孵化器,2013年9月27日成为Apache顶级项目。它是构建在 hadoop 的 hdfs 和 MapReduce 框架之上的,继承了 Hadoop 的可伸缩性和健壮性。Chukwa 还包含了一个强大和灵活的工具集,可用于展示、监控和分析已收集的数据。Chukwa用于管理大型分布式系统的数据收集系统(2000+以上的节点, 系统每天产生的监控数据量在T级别)。

相关网站:Apache Chukwa

数据交换

Sqoop:Apache Sqoop 是一款数据迁移工具,用来在不同数据存储软件之间进行数据传输的开源软件,它支持多种类型的数据储存软件。用来在关系型数据库和Hadoop/Hive间进行数据迁移,方便大量数据的导入导出工作。Sqoop底层是通过MapReduce去实现的,但只有Map没有Reduce。Sqoop项目开始于2009年,最早是作为Hadoop的一个第三方模块存在,后来独立成为一个Apache项目,于2012年3月成为Apache顶级项目。

相关网站:Apache Sqoop

Kettle:Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。可以将各种类型数据作为数据流,经过处理后再生成各种类型的数据。

相关网站:Kettle中文网

DataX:DataX 是阿里巴巴开源的离线数据同步工具/平台,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。

相关网站:DataX源码

NIFI:Apache NiFi 是一个易于使用、功能强大而且可靠的数据拉取、数据处理和分发系统。基于Web图形界面,通过拖拽、连接、配置完成基于流程的编程,实现数据采集等功能。NiFi是美国国家安全局NAS开发并使用了8年的可视化数据集成产品,2014年贡献给了Apache社区,2015年成为Apache顶级项目。 是为数据流设计。它支持高度可配置的指示图的数据路由、转换和系统中介逻辑,支持从多种数据源动态拉取数据。NiFi是基于Java的,使用Maven支持包的构建管理。NiFi基于Web方式工作,后台在服务器上进行调度。用户可以为数据处理定义为一个流程,然后进行处理,后台具有数据处理引擎、任务调度等组件。

相关网站:Apache NIFI

消息系统

Pulsar:Apache Pulsar是一个开源的企业级分布式消息系统。项目于2015年由 Yahoo 开源,2017年6月提交给 Apache孵化器,2018年9月成为Apache的顶级项目。Pulsar在消息、计算和存储三个方面进行的协调、抽象和统一。Pulsar对pub-sub和 queue两种模式提供统一的支持,同时保证了一致性,高性能和易扩展性。Pulsar同时支持处理实时流和消息队列,内部的 Pulsar-Functions 提供了 Stream-native 的轻量级计算框架,保证了数据的即时流式处理。Pulsar借助Apache BookKeeper提供了以 segment 为中心的存储架构,保证了存储的性能,持久性和弹性。Pulsar是无状态的,在Pulsar架构中,数据的分发和保存是相互独立的。broker 从生产者接收数据,然后将数据发送给消费者,但数据是保存在 BookKeeper 中的。Pulsar支持跨域复制。Pulsar是下一代分布式消息队列,有替代Kafka的趋势。

相关网站:Apache Pulsar

Kafka:Apache Kafka是一个发布/订阅的消息系统,由Scala写成。Kafka最初是由LinkedIn开发,并于2011年初开源,2012年10月从Apache毕业成为顶级项目。该项目的目标是为处理实时数据提供一个统一、高通量、低等待的平台。Kafka是一个分布式的、分区的、多复本的日志提交服务。是目前使用最广泛的消息系统。

相关网站:Apache Kafka、Apache Kafka中文文档

RocketMQ:Apache RocketMQ是一款分布式、队列模型的消息中间件。是阿里巴巴在2012年开源,于2016年11月成为Apache孵化项目, 2017年9月25日成为Apache顶级项目。它借鉴参考了JMS规范的MQ实现,更参考了优秀的开源消息中间件Kafka,并且结合阿里实际业务需求在天猫双十一的场景,实现业务削峰,分布式事务的优秀框架。它提供了丰富的消息拉取模式,高效的订阅者水平扩展能力,实时的消息订阅机制,亿级消息堆积能力,且具备了连接其它顶级开源生态(如Spark、Ignite和Storm等)能力。

相关网站:Apache RocketMQ

ActiveMQ:Apache ActiveMQ是Apache所提供的一个开源的消息系统,完全采用Java来实现。它是一款历史悠久的开源项目,2007年成为Apache顶级项目。已经在很多产品中得到应用,实现了JMS1.1规范,可以和Spring-JMS轻松融合,实现了多种协议。有多重语言的成熟的客户端。不够轻巧,支持持久化到数据库,对队列数较多的情况支持不好。

相关网站:Apache ActiveMQ

RabbitMQ:RabbitMQ是基于 AMQP 实现的一个开源消息组件,主要用于在分布式系统中存储转发消息。是一个消息代理和队列服务器,可以在完全不同的应用之间共享数据。使用Erlang语言开发,具有很好的并发优势,性能较好。支持消息持久化。

相关网站:RabbitMQ

作者:七_seven

链接:https://www.jianshu.com/p/0bc42246d210

来源:简书