九哥带你--分享前沿知识,交流技能应用;服务数据、信息分析处理;推广高端科研技术成果;普惠学习工作生活。
汇总,大数据开源框架技术扫盲
主要基于对现阶段一些常用的大数据开源框架技术的整理,只是一些简单的介绍,并不是详细技术梳理。可能会有疏漏,发现再整理。参考的太多,就不一一列出来了。这只是作为一个梳理,对以后选型或者扩展的做个参考。
目录
系统平台(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、SparkML、TensorFlow、Keras)
云平台(AmazonS3、GCP、MicrosoftAzure)
系统平台
Hadoop:ApacheHadoop是一个开源的分布式系统基础框架,离线数据的分布式存储和计算的解决方案。Hadoop最早起源于Nutch,Nutch基于年、年谷歌发表的两篇论文分布式文件系统GFS和分布式计算框架MapReduce的开源实现HDFS和MapReduce。年推出,年1月成为Apache顶级项目。Hadoop分布式文件系统(HDFS)是革命性的一大改进,它将服务器与普通硬盘驱动器结合,并将它们转变为能够由Java应用程序兼容并行IO的分布式存储系统。Hadoop作为数据分布式处理系统的典型代表,形了成完整的生态圈,已经成为事实上的大数据标准,开源大数据目前已经成为互联网企业的基础设施。Hadoop主要包含分布式存储HDFS、离线计算引擎MapRduce、资源调度ApacheYARN三部分。Hadoop2.0引入了ApacheYARN作为资源调度。Hadoop3.0以后的版本对MR做了大量优化,增加了基于内存计算模型,提高了计算效率。比较普及的稳定版本是2.x,目前最新版本为3.2.0。
相关网站:ApacheHadoop
CDH:ClouderaCDH是Cloudera基于稳定版Hadoop及相关项目最成型的发行版本。CDH中提供的各种组件能让用户在一个可视化的UI界面中方便地管理,配置和监控Hadoop以及其它所有相关组件。Cloudera成立于年,在年Cloudera发行了第一个Hadoop集成版本CDH,到目前为止,因为其易用、易于升级、安装组件和减少维护成本等特性,成为企业部署最广泛的大数据系统。在Hadoop的世界中,规模最大、知名度最高的公司就是Cloudera。CDH提供强大的部署、管理和监控工具,通过ClouderaManager的WebUI安装和管理集群,并且通过Hue浏览器端的Web控制台上与Hadoop集群进行交互来分析处理数据。随着云计算的发展,催生了亚马逊AWS等巨头,他们也会提供托管的Hadoop/Spark服务,如AWS的ElasticMapReduce(EMR),不仅集成在云平台内部而且成本也更低。而对象存储服务,如AWSS3,AzureBlob存储和Google云端存储,从成本上来说,也低于Hadoop的存储成本。但是,对于重视数据资产的企业来说依旧需要Cloudera产品。Cloudera也一直致力于向云计算转型。年10月Cloudera合并Hortonworks,表示新的公司将成为行业领导者,为客户提供更好的平台,创建世界首个企业数据云,并将在云计算、物联网和容器技术等领域继续发力。这对Hadoop的发展方向是一个打击,但也意味着Hadoop的标准将更加统一,将有更多资金投入新技术的研究。CDH目前最新版本为6.2.0。
相关网站:ClouderaCDH
HDP:HDP是Hortonworks在基于Hadoop的发行版本。年Hortonworks上市,是企业级全球数据管理平台,同时也是服务和解决方案的领先供应商,为强企业中的一多半提供“任何类型数据”的可操作信息,已经成为世界第二大数据服务商。Hortonworks是第一家使用了ApacheHCatalog的元数据服务特性的提供商。Hortonworks为入门提供了一个非常好的,易于使用的沙盒。Hortonworks开发了很多增强特性并提交至核心主干,这使得ApacheHadoop能够在包括WindowsServer和WindowsAzure在内的MicrosftWindows平台上本地运行,相比于CDH只能运行在Linux系统中。使用Ambari提供WebUI管理集群。HDP好处是完全开源,可以在其基础上进行二次开发,但对于技术比较薄弱中小型企业来说稳定性没有CDH高。年10月Cloudera合并Hortonworks,方向暂时未知。HDP目前最新版本为3.1。
相关网站:HortonworksHDP
集群管理与监控
CloderaManager:CM是Cloudera开发的一个基于Web的用于部署和管理CDH集群的软件。它具有集群自动化安装、中心化管理、集群监控、报警等功能,大大节省集群部署时间,降低了运维成本,极大的提高集群管理的效率。(非开源)
相关网站:CloderaManager
Hue:Hue是由Cloudera贡献给开源社区的HadoopUI系统(HadoopUserExperience),最早是由ClouderaDesktop演化而来,它是基于PythonWeb框架Django实现的。Hue是一个可快速开发和调试Hadoop生态系统各种应用的一个基于浏览器的图形化用户接口。使用Hue可以在浏览器端的Web控制台上与Hadoop集群进行交互来分析处理数据,例如操作HDFS上的数据、运行MapReduceJob、执行Hive的SQL语句、浏览HBase数据库、运行Sqoop,编写Oozie工作流等等大量工作。Hue是Hadoop平台大数据分析开发的可视化分析利器。
网站:Hue
Ambari:ApacheAmbari是Hortonworks贡献给Apache基金会的Hadoop平台管理软件,年11月20日成为Apache顶级项目。它具备Hadoop组件的安装、管理、运维等基本功能,提供WebUI进行可视化的集群管理,简化了大数据平台的安装、使用难度。
相关网站:ApacheAmbari
Dr.Elephant:Dr.elephant是一款对Hadoop和Spark任务进行性能监控和调优的工具,它由LinkedIn的团队于年开源,开源之前已经在公司运行使用2年。它能自动采集作业的度量指标并分析,然后以简单明了的方式展现出来。Dr.elephant的设计思想是通过作业分析结果来指导开发者进行作业调优,从而提升开发者效率和集群资源的利用率。
相关网址:Dr.Elephant
Ganglia:Ganglia是UCBerkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点。Ganglia的核心包含gmond、gmetad以及一个Web前端。主要是用来监控系统性能,如:cpu、mem、硬盘利用率,I/O负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用。
相关网站:Ganglia
Zabbix:Zabbix是一个的基于Web界面的开源的分布式企业级监控解决方案。于年zabbix1.0正式发布,由AlexeiVladishev团队维护更新,ZabbixSIA提供支持。Zabbix通过C/S模式采集数据,通过B/S模式在web端展示和配置。它能够实时监控从成千上万台服务器、虚拟机和网络设备中收集到的数以百万计的指标。Zabbix能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。还能够利用存储数据提供杰出的报表及实时的图形化数据处理,实现对监控主机7x24小时集中监控。
相关网站:Zabbix
Eagle:ApacheEagle是一个开源监视和警报解决方案,用于智能实时地识别大数据平台上的安全和性能问题,例如ApacheHadoop,ApacheSpark等。Eagle起源于eBay,最早用于解决大规模Hadoop集群的监控问题,于年10月提交给Apache孵化器,年12月21日成为Apache顶级项目。Eagle主要包括:高可扩展、高可伸缩、低延时、动态协同等特点,支持数据行为实时监控,能立即监测出对敏感数据的访问或恶意的操作,并立即采取应对的措施。Eagle提供一套高效分布式的流式策略引擎,具有高实时、可伸缩、易扩展、交互友好等特点,同时集成机器学习对用户行为建立Profile以实现实时智能实时地保护Hadoop生态系统中大数据的安全。
相关网站:ApacheEagle
文件系统
HDFS:HDFS(HadoopDistributedFileSystem)分布式文件系统,是分布式计算中数据存储管理的基础。是HadoopCore项目的核心子项目。HDFS是基于流数据模式访问和处理超大文件的需求而开发的,效仿谷歌文件系统(GFS),数据在相同节点上以复制的方式进行存储以实现将数据合并计算的目的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。它有很多的优点,但也存在有一些缺点,包括:不适合低延迟数据访问、无法高效存储大量小文件、不支持多用户写入及任意修改文件。
相关网站:HadoopHDFS
GPFS:GPFS(GeneralParallelFileSystem)是IBM推出的基于Hadoop的并行分布式集群文件系统。IBM认为GPFS不共享集群版本比HDFS快得多,因为它在内核级别中运行,而不是像HDFS在操作系统中运行。GPFS是一个共享磁盘的文件系统,集群内的所有节点可以并行地访问所有共享磁盘,并通过分布式的Token管理机制和条带化技术来管理和优化节点的访问。GPFS支持完整的Posix文件系统语义。GPFS的应用范围非常广泛,从多节点文件共享服务、实时多媒体处理、到大型的高性能计算集群,我们都可以看到GPFS的优秀表现。GPFS在这些应用里面都表现出了非常出色的性能和高可用性。
相关网站:GPFS
Ceph:Ceph是一个开源的统一的分布式存储系统,是高性能的并行文件系统。Ceph是加州大学SantaCruz分校的SageWeil(DreamHost的联合创始人)专为博士论文设计的新一代自由软件分布式文件系统。自年毕业之后,Sage开始全职投入到Ceph开发之中,使其能适用于生产环境。Ceph的主要目标是设计成基于POSIX的没有单点故障的分布式文件系统,使数据能容错和无缝的复制。年3月,LinusTorvalds将Cephclient合并到内核2.6.34中。它基于CRUSH算法,没有中心节点,可以无限扩展。Ceph提供三种存储方式分别是对象存储,块存储和文件系统。在虚拟化领域里,比较常用到的是Ceph的块设备存储。Ceph以其稳定、高可用、可扩展的特性,乘着开源云计算管理系统OpenStack的东风,迅速成为最热门的开源分布式存储系统。Ceph是目前最火的分布式存储软件,Ceph开源存储项目已经成为全球众多海量存储项目的主要选择。Ceph现在是云计算、虚拟机部署的最火开源存储解决方案,是私有云事实上的标准。
相关网站:Ceph、Ceph中文网
GlusterFS:GlusterFS(GNUClusterFileSystem)是一种全对称的开源分布式文件系统,所谓全对称是指GlusterFS采用弹性哈希算法,没有中心节点,所有节点全部平等。GlusterFS配置方便,稳定性好,可轻松达到PB级容量,数千个节点。年被红帽收购,之后推出了基于GlusterFS的RedHatStorageServer,增加了针对KVM的许多特性,可用作为KVM存储image存储集群,也可以为LB或HA提供存储。
相关网站:GlusterFS
Swift:Swift最初是由Rackspace公司开发的高可用分布式对象存储服务。于年贡献给OpenStack开源社区作为其最初的核心子项目之一,为其Nova子项目提供虚机镜像存储服务。Swift构筑在比较便宜的标准硬件存储基础设施之上,无需采用RAID(磁盘冗余阵列),通过在软件层面引入一致性散列技术和数据冗余性,牺牲一定程度的数据一致性来达到高可用性和可伸缩性,支持多租户模式、容器和对象读写操作,适合解决互联网的应用场景下非结构化数据存储问题。Swift是一种比较通用的存储解决方案,能够可靠地存储数量非常多的大小不一的文件。
相关网站:OpenStackSwift
BeeGFS:BeeGFS(原FhGFS)既是一个网络文件系统也是一个并行文件系统。是由FraunhoferInstitute为工业数学计算而设计开发,由于在欧洲和美国的中小型HPC系统性能表现良好,在年改名注册为BeeGFS并受到科研和商业的广泛应用。客户端通过网络与存储服务器进行通信(具有TCP/IP或任何具有RDMA功能的互连,如InfiniBand,RoCE或Omni-Path,支持nativeverbs接口)。通过BeeGFS添加更多的服务器,其容量和性能被聚合在单个命名空间中。BeeGFS是遵循GPL的“免费开源”产品,文件系统没有许可证费用。由ThinkParQ提供专业支持,系统集成商可以为客户构建使用BeeGFS的解决方案。
相关网站:BeeGFS
Alluxio:Alluxio(原Tachyon)是以内存为中心的虚拟的分布式存储系统。诞生于UCBerkeley的AMPLab,它统一了数据访问的方式,为上层计算框架和底层存储系统构建了桥梁,应用只需要连接Alluxio即可访问存储在底层任意存储系统中的数据。此外,Alluxio的以内存为中心的架构使得数据的访问速度能比现有方案快几个数量级。Alluxio介于计算框架(如ApacheSpark,ApacheMapReduce,ApacheHBase,ApacheHive,ApacheFlink)和现有的存储系统(如AmazonS3,OpenStackSwift,GlusterFS,HDFS,MaprFS,Ceph,NFS,OSS)之间。
相关网站:Alluxio
资源调度
YARN:(YetAnotherResourceNegotiator)是Hadoop的资源管理和作业调度系统。作为ApacheHadoop的核心组件之一,YARN负责将系统资源分配给在Hadoop集群中运行的各种应用程序,并调度在不同集群节点上执行的任务。YARN是Hadoop2.x版本中的一个新特性。它的出现其实是为了解决第一代MapReduce编程框架的不足,提高集群环境下的资源利用率,这些资源包括内存,磁盘,网络,IO等。YARN的基本思想是将资源管理和作业调度/监视的功能分解为单独的daemon(守护进程),其拥有一个全局ResourceManager、每个应用程序的ApplicationMaster及每台机器框架代理NodeManager。ResourceManager负责所有应用程序之间资源分配。NodeManager负责Containers,监视其资源使用情况(CPU,内存,磁盘,网络)并将其报告给ResourceManager。ApplicationMaster负责是协调来自ResourceManager的资源,并与NodeManager一起执行和监视任务。
相关网址:HadoopYarn
Mesos:ApacheMesos是一个集群管理器,可跨分布式应用程序或框架提供有效的资源隔离和共享。Mesos最初是由加州大学伯克利分校的AMPLab开发的,Mesos项目发布于是年,年12月进入Apache孵化器,年6月19日成为Apache顶级项目。Twitter公司则是Mesos项目的早期支持者和使用者之一。它位于应用程序层和操作系统之间,可以更加轻松地在大规模集群环境中更有效地部署和管理应用程序。它可以在动态共享节点池上运行许多应用程序。对数据中心而言它就像一个单一的资源池,从物理或虚拟机器中抽离了CPU、内存、存储以及其它计算资源,很容易建立和有效运行具备容错性和弹性的分布式系统。年5月,Twitter宣布放弃Mesos,基础设施从Mesos全面转向Kubernetes。
相关网址:ApacheMesos
协调框架
Zookeeper:ApacheZooKeeper是一个开源的分布式协调服务,是Google的Chubby一个开源的实现,是Hadoop,HBase和其他分布式框架使用的有组织服务的标准。由雅虎开源并于年11月成为Apache顶级项目。ZooKeeper是一个典型的分布式数据一致性解决方案,分布式应用程序可以基于ZooKeeper实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能。ZooKeeper是以FastPaxos算法为基础的,Paxos算法存在活锁的问题,即当有多个proposer交错提交时,有可能互相排斥导致没有一个proposer能提交成功,而FastPaxos作了一些优化,通过选举产生一个leader(领导者),只有leader才能提交proposer。ZooKeeper使用ZAB协议作为其保证数据一致性的核心算法。ZAB(ZooKeeperAtomicBroadcast原子广播)协议是为分布式协调服务ZooKeeper专门设计的一种支持崩溃恢复的原子广播协议。
相关网址:ApacheZookeeper
Etcd:Etcd是一个高可用的键值存储系统,主要用于共享配置和服务发现。Etcd是一种分布式kv存储设施,由CoreOS于年6月发起的开源并维护的项目,它感来自于ZooKeeper和Doozer,基于Go语言实现。它类似的Zookeeper,但没有Zookeeper那么重型,功能也没有覆盖那么多,通过Raft一致性算法处理日志复制以保证强一致性。Raft是一个新的一致性算法,适用于分布式系统的日志复制,Raft通过选举的方式来实现一致性。Google的容器集群管理系统Kubernetes、开源PaaS平台CloudFoundry和CoreOS的Fleet都广泛使用了Etcd。在分布式系统中,如何管理节点间的状态一直是一个难题,etcd像是专门为集群环境的服务发现和注册而设计,它提供了数据TTL失效、数据改变监视、多值、目录监听、分布式锁原子操作等功能,可以方便的跟踪并管理集群节点的状态。
相关网站:Etcd
Consul:Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置共享。Consul用Go语言实现,因此具有天然可移植性(支持Linux、windows和MacOSX)。与其他分布式服务注册与发现的方案不同,Consul的方案更"一站式",内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等)。采用Raft算法一致性协议,支持多数据中心分布式高可用,服务发现和配置共享,使用gossip协议管理成员和消息广播,支持ACL访问控制。最新的Consul提供了一个新特性“Mesh网关”,实现透明、跨网络的连接。这些特性可以跨平台工作,对Kubernetes提供一流的支持,并且在任何云或专用网络上都可以轻松地部署到更传统的环境中,实现了Consul多云服务网络的目标。
相关网站:Consul
数据存储
Hbase:ApacheHBase(HadoopDatabase)是一个分布式的、面向列的NoSQL开源数据库。是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PCServer上搭建起大规模结构化存储集群。初期的目标是弥补MapReduce在实时操作上的缺失,方便用户可随时操作大规模的数据集。HBase原来是Apache的Hadoop项目的子项目,随着大数据与NoSQL的流行和迅速发展,年5月ApacheHBase脱离了Hadoop成为Apache基金的顶级项目。HBase是GoogleBigtable的开源实现,类似GoogleBigtable利用GFS作为其文件存储系统,HBase利用HadoopHDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用HadoopMapReduce来处理HBase中的海量数据;GoogleBigtable利用Chubby作为协同服务,HBase利用Zookeeper作为协调服务。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库,另外HBase是基于列的而不是基于行的模式。
相关网址:ApacheHbase
Cassandra:ApacheCassandra是一个开源的、分布式的混合型NoSQL数据库。它最初由Facebook开发,于年开源,年2月17日成为Apache顶级项目。主要用于储存海量数据。以Amazon专有的完全分布式Dynamo为基础,结合了GoogleBigTable基于列族的数据模型。P2P去中心化的存储。很多方面都可以称之为Dynamo2.0。Cassandra的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构成的一个分布式网络服务,对Cassandra的一个写操作,会被复制到其它节点上去,对Cassandra的读操作,也会被路由到某个节点上面去读取。对于一个Cassandra群集来说,扩展性能是比较简单的事情,只管在群集里面添加节点就可以了。它提供了高可用性,没有单点故障。它是一个网络社交云计算方面理想的数据库。
相关网站:ApacheCassandra
ScyllaDB:ScyllaDB是用C++重写的Cassandra,