自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

吐血整理:大數(shù)據(jù)開(kāi)源框架技術(shù)掃盲

大數(shù)據(jù)

引言

主要基于對(duì)現(xiàn)階段一些常用的大數(shù)據(jù)開(kāi)源框架技術(shù)的整理,只是一些簡(jiǎn)單的介紹,并不是詳細(xì)技術(shù)梳理??赡軙?huì)有疏漏,發(fā)現(xiàn)再整理。參考的太多,就不一一列出來(lái)了。這只是作為一個(gè)梳理,對(duì)以后選型或者擴(kuò)展的做個(gè)參考。

目錄

  1. 系統(tǒng)平臺(tái) (Hadoop、CDH、HDP)
  2. 監(jiān)控管理 (CM、Hue、Ambari、Dr.Elephant、Ganglia、Zabbix、Eagle)
  3. 文件系統(tǒng) (HDFS、GPFS、Ceph、GlusterFS、Swift 、BeeGFS、Alluxio)
  4. 資源調(diào)度 (YARN、Mesos、)
  5. 協(xié)調(diào)框架 (ZooKeeper 、Etcd、Consul)
  6. 數(shù)據(jù)存儲(chǔ) (HBase、Cassandra、ScyllaDB 、MongoDB、Accumulo 、Redis 、Ignite、Arrow 、Geode、CouchDB、Kudu、CarbonData)
  7. 數(shù)據(jù)處理 (MapReduce、Spark、Flink、Storm、Tez、Samza、Apex、Beam、Heron)
  8. 查詢分析(Hive、SparkSQL、Presto、Kylin、Impala、Druid、ElasticSearch、HAWQ、Lucene、Solr、 Phoenix)
  9. 數(shù)據(jù)收集 (Flume、Filebeat、Logstash、Chukwa )
  10. 數(shù)據(jù)交換 (Sqoop 、Kettle、DataX 、NiFi)
  11. 消息系統(tǒng) (Pulsar、Kafka、RocketMQ、ActiveMQ、RabbitMQ)
  12. 任務(wù)調(diào)度 (Azkaban、Oozie、Airflow)
  13. 數(shù)據(jù)治理 (Ranger 、Sentry、Atlas)
  14. 可視化 (Kibana 、D3.js、ECharts)
  15. 數(shù)據(jù)挖掘 (Mahout 、MADlib 、Spark ML、TensorFlow、Keras)
  16. 云平臺(tái) (Amazon S3、GCP、Microsoft Azure)

1、系統(tǒng)平臺(tái)

Hadoop:

Apache Hadoop是一個(gè)開(kāi)源的分布式系統(tǒng)基礎(chǔ)框架,離線數(shù)據(jù)的分布式存儲(chǔ)和計(jì)算的解決方案。Hadoop最早起源于Nutch,Nutch基于2003 年、2004年谷歌發(fā)表的兩篇論文分布式文件系統(tǒng)GFS和分布式計(jì)算框架MapReduce的開(kāi)源實(shí)現(xiàn)HDFS和MapReduce。2005年推出,2008年1月成為Apache頂級(jí)項(xiàng)目。

Hadoop分布式文件系統(tǒng)(HDFS)是革命性的一大改進(jìn),它將服務(wù)器與普通硬盤(pán)驅(qū)動(dòng)器結(jié)合,并將它們轉(zhuǎn)變?yōu)槟軌蛴蒍ava應(yīng)用程序兼容并行IO的分布式存儲(chǔ)系統(tǒng)。Hadoop作為數(shù)據(jù)分布式處理系統(tǒng)的典型代表,形了成完整的生態(tài)圈,已經(jīng)成為事實(shí)上的大數(shù)據(jù)標(biāo)準(zhǔn),開(kāi)源大數(shù)據(jù)目前已經(jīng)成為互聯(lián)網(wǎng)企業(yè)的基礎(chǔ)設(shè)施。

Hadoop主要包含分布式存儲(chǔ)HDFS、離線計(jì)算引擎MapRduce、資源調(diào)度Apache YARN三部分。Hadoop2.0引入了Apache YARN作為資源調(diào)度。Hadoop3.0以后的版本對(duì)MR做了大量?jī)?yōu)化,增加了基于內(nèi)存計(jì)算模型,提高了計(jì)算效率。比較普及的穩(wěn)定版本是2.x,目前最新版本為3.2.0。

CDH:

Cloudera CDH是Cloudera基于穩(wěn)定版Hadoop及相關(guān)項(xiàng)目最成型的發(fā)行版本。CDH中提供的各種組件能讓用戶在一個(gè)可視化的UI界面中方便地管理,配置和監(jiān)控Hadoop以及其它所有相關(guān)組件。Cloudera成立于2008年,在2009年Cloudera發(fā)行了第一個(gè)Hadoop集成版本CDH,到目前為止,因?yàn)槠湟子谩⒁子谏?jí)、安裝組件和減少維護(hù)成本等特性,成為企業(yè)部署最廣泛的大數(shù)據(jù)系統(tǒng)。

在Hadoop的世界中,規(guī)模最大、知名度最高的公司就是Cloudera。CDH提供強(qiáng)大的部署、管理和監(jiān)控工具,通過(guò)Cloudera Manager的Web UI安裝和管理集群,并且通過(guò)Hue瀏覽器端的Web控制臺(tái)上與Hadoop集群進(jìn)行交互來(lái)分析處理數(shù)據(jù)。隨著云計(jì)算的發(fā)展,催生了亞馬遜AWS等巨頭,他們也會(huì)提供托管的Hadoop/Spark服務(wù),如AWS的Elastic Map Reduce(EMR),不僅集成在云平臺(tái)內(nèi)部而且成本也更低。而對(duì)象存儲(chǔ)服務(wù),如AWS S3,Azure Blob存儲(chǔ)和Google云端存儲(chǔ),從成本上來(lái)說(shuō),也低于Hadoop的存儲(chǔ)成本。但是,對(duì)于重視數(shù)據(jù)資產(chǎn)的企業(yè)來(lái)說(shuō)依舊需要Cloudera產(chǎn)品。

Cloudera也一直致力于向云計(jì)算轉(zhuǎn)型。2018年10月Cloudera合并Hortonworks,表示新的公司將成為行業(yè)領(lǐng)導(dǎo)者,為客戶提供更好的平臺(tái),創(chuàng)建世界首個(gè)企業(yè)數(shù)據(jù)云,并將在云計(jì)算、物聯(lián)網(wǎng)和容器技術(shù)等領(lǐng)域繼續(xù)發(fā)力。這對(duì)Hadoop的發(fā)展方向是一個(gè)打擊,但也意味著Hadoop的標(biāo)準(zhǔn)將更加統(tǒng)一,將有更多資金投入新技術(shù)的研究。CDH目前最新版本為6.2.0。

HDP:

HDP是Hortonworks在基于Hadoop的發(fā)行版本。2014年Hortonworks上市,是企業(yè)級(jí)全球數(shù)據(jù)管理平臺(tái),同時(shí)也是服務(wù)和解決方案的領(lǐng)先供應(yīng)商,為100強(qiáng)企業(yè)中的一多半提供“任何類型數(shù)據(jù)”的可操作信息,已經(jīng)成為世界第二大數(shù)據(jù)服務(wù)商。Hortonworks是第一家使用了Apache HCatalog的元數(shù)據(jù)服務(wù)特性的提供商。Hortonworks為入門提供了一個(gè)非常好的,易于使用的沙盒。

Hortonworks開(kāi)發(fā)了很多增強(qiáng)特性并提交至核心主干,這使得Apache Hadoop能夠在包括Windows Server和Windows Azure在內(nèi)的Microsft Windows平臺(tái)上本地運(yùn)行,相比于CDH只能運(yùn)行在Linux系統(tǒng)中。使用Ambari提供Web UI管理集群。HDP好處是完全開(kāi)源,可以在其基礎(chǔ)上進(jìn)行二次開(kāi)發(fā),但對(duì)于技術(shù)比較薄弱中小型企業(yè)來(lái)說(shuō)穩(wěn)定性沒(méi)有CDH高。2018年10月Cloudera合并Hortonworks,方向暫時(shí)未知。HDP目前最新版本為3.1。

2、集群管理與監(jiān)控

Clodera Manager:

CM是Cloudera開(kāi)發(fā)的一個(gè)基于Web的用于部署和管理CDH集群的軟件。它具有集群自動(dòng)化安裝、中心化管理、集群監(jiān)控、報(bào)警等功能,大大節(jié)省集群部署時(shí)間,降低了運(yùn)維成本,極大的提高集群管理的效率。(非開(kāi)源)

Hue:

Hue是由Cloudera貢獻(xiàn)給開(kāi)源社區(qū)的Hadoop UI系統(tǒng)(Hadoop User Experience),最早是由Cloudera Desktop演化而來(lái),它是基于Python Web框架Django實(shí)現(xiàn)的。Hue是一個(gè)可快速開(kāi)發(fā)和調(diào)試Hadoop生態(tài)系統(tǒng)各種應(yīng)用的一個(gè)基于瀏覽器的圖形化用戶接口。使用Hue可以在瀏覽器端的Web控制臺(tái)上與Hadoop集群進(jìn)行交互來(lái)分析處理數(shù)據(jù),例如操作HDFS上的數(shù)據(jù)、運(yùn)行MapReduce Job、執(zhí)行Hive的SQL語(yǔ)句、瀏覽HBase數(shù)據(jù)庫(kù)、運(yùn)行Sqoop,編寫(xiě)Oozie工作流等等大量工作。Hue是Hadoop平臺(tái)大數(shù)據(jù)分析開(kāi)發(fā)的可視化分析利器。

Ambari:

Apache Ambari是Hortonworks貢獻(xiàn)給Apache基金會(huì)的Hadoop平臺(tái)管理軟件,2013年11月20日成為Apache頂級(jí)項(xiàng)目。它具備Hadoop組件的安裝、管理、運(yùn)維等基本功能,提供Web UI進(jìn)行可視化的集群管理,簡(jiǎn)化了大數(shù)據(jù)平臺(tái)的安裝、使用難度。

Dr.Elephant:

Dr.elephant是一款對(duì)Hadoop和Spark任務(wù)進(jìn)行性能監(jiān)控和調(diào)優(yōu)的工具,它由LinkedIn的團(tuán)隊(duì)于2016年開(kāi)源,開(kāi)源之前已經(jīng)在公司運(yùn)行使用2年。它能自動(dòng)采集作業(yè)的度量指標(biāo)并分析,然后以簡(jiǎn)單明了的方式展現(xiàn)出來(lái)。Dr.elephant的設(shè)計(jì)思想是通過(guò)作業(yè)分析結(jié)果來(lái)指導(dǎo)開(kāi)發(fā)者進(jìn)行作業(yè)調(diào)優(yōu),從而提升開(kāi)發(fā)者效率和集群資源的利用率。

Ganglia:

Ganglia是UC Berkeley發(fā)起的一個(gè)開(kāi)源集群監(jiān)視項(xiàng)目,設(shè)計(jì)用于測(cè)量數(shù)以千計(jì)的節(jié)點(diǎn)。Ganglia的核心包含gmond、gmetad以及一個(gè)Web前端。主要是用來(lái)監(jiān)控系統(tǒng)性能,如:cpu 、mem、硬盤(pán)利用率, I/O負(fù)載、網(wǎng)絡(luò)流量情況等,通過(guò)曲線很容易見(jiàn)到每個(gè)節(jié)點(diǎn)的工作狀態(tài),對(duì)合理調(diào)整、分配系統(tǒng)資源,提高系統(tǒng)整體性能起到重要作用。

Zabbix:

Zabbix是一個(gè)的基于Web界面的開(kāi)源的分布式企業(yè)級(jí)監(jiān)控解決方案。于2004年zabbix 1.0 正式發(fā)布,由Alexei Vladishev團(tuán)隊(duì)維護(hù)更新,Zabbix SIA提供支持。Zabbix通過(guò)C/S模式采集數(shù)據(jù),通過(guò)B/S模式在web端展示和配置。它能夠?qū)崟r(shí)監(jiān)控從成千上萬(wàn)臺(tái)服務(wù)器、虛擬機(jī)和網(wǎng)絡(luò)設(shè)備中收集到的數(shù)以百萬(wàn)計(jì)的指標(biāo)。Zabbix能監(jiān)視各種網(wǎng)絡(luò)參數(shù),保證服務(wù)器系統(tǒng)的安全運(yùn)營(yíng),并提供靈活的通知機(jī)制以讓系統(tǒng)管理員快速定位/解決存在的各種問(wèn)題。還能夠利用存儲(chǔ)數(shù)據(jù)提供杰出的報(bào)表及實(shí)時(shí)的圖形化數(shù)據(jù)處理,實(shí)現(xiàn)對(duì)監(jiān)控主機(jī)7x24小時(shí)集中監(jiān)控。

Eagle:

Apache Eagle是一個(gè)開(kāi)源監(jiān)視和警報(bào)解決方案,用于智能實(shí)時(shí)地識(shí)別大數(shù)據(jù)平臺(tái)上的安全和性能問(wèn)題,例如Apache Hadoop,Apache Spark等。Eagle起源于eBay,最早用于解決大規(guī)模Hadoop集群的監(jiān)控問(wèn)題,于2015年10月提交給Apache孵化器,2016年12月21日成為Apache頂級(jí)項(xiàng)目。Eagle 主要包括:高可擴(kuò)展、高可伸縮、低延時(shí)、動(dòng)態(tài)協(xié)同等特點(diǎn),支持?jǐn)?shù)據(jù)行為實(shí)時(shí)監(jiān)控,能立即監(jiān)測(cè)出對(duì)敏感數(shù)據(jù)的訪問(wèn)或惡意的操作,并立即采取應(yīng)對(duì)的措施。Eagle 提供一套高效分布式的流式策略引擎,具有高實(shí)時(shí)、可伸縮、易擴(kuò)展、交互友好等特點(diǎn),同時(shí)集成機(jī)器學(xué)習(xí)對(duì)用戶行為建立Profile以實(shí)現(xiàn)實(shí)時(shí)智能實(shí)時(shí)地保護(hù) Hadoop 生態(tài)系統(tǒng)中大數(shù)據(jù)的安全。

3、文件系統(tǒng)

HDFS:

HDFS(Hadoop Distributed File System)分布式文件系統(tǒng),是分布式計(jì)算中數(shù)據(jù)存儲(chǔ)管理的基礎(chǔ)。是Hadoop Core項(xiàng)目的核心子項(xiàng)目。HDFS是基于流數(shù)據(jù)模式訪問(wèn)和處理超大文件的需求而開(kāi)發(fā)的,效仿谷歌文件系統(tǒng)(GFS),數(shù)據(jù)在相同節(jié)點(diǎn)上以復(fù)制的方式進(jìn)行存儲(chǔ)以實(shí)現(xiàn)將數(shù)據(jù)合并計(jì)算的目的。HDFS是一個(gè)高度容錯(cuò)性的系統(tǒng),適合部署在廉價(jià)的機(jī)器上。HDFS能提供高吞吐量的數(shù)據(jù)訪問(wèn),非常適合大規(guī)模數(shù)據(jù)集上的應(yīng)用。HDFS放寬了一部分POSIX約束,來(lái)實(shí)現(xiàn)流式讀取文件系統(tǒng)數(shù)據(jù)的目的。它有很多的優(yōu)點(diǎn),但也存在有一些缺點(diǎn),包括:不適合低延遲數(shù)據(jù)訪問(wèn)、無(wú)法高效存儲(chǔ)大量小文件、不支持多用戶寫(xiě)入及任意修改文件。

GPFS:

GPFS(General Parallel File System)是IBM推出的基于Hadoop的并行分布式集群文件系統(tǒng)。IBM認(rèn)為GPFS不共享集群版本比HDFS快得多,因?yàn)樗趦?nèi)核級(jí)別中運(yùn)行,而不是像HDFS在操作系統(tǒng)中運(yùn)行。GPFS是一個(gè)共享磁盤(pán)的文件系統(tǒng),集群內(nèi)的所有節(jié)點(diǎn)可以并行地訪問(wèn)所有共享磁盤(pán),并通過(guò)分布式的Token管理機(jī)制和條帶化技術(shù)來(lái)管理和優(yōu)化節(jié)點(diǎn)的訪問(wèn)。GPFS支持完整的Posix文件系統(tǒng)語(yǔ)義。GPFS的應(yīng)用范圍非常廣泛,從多節(jié)點(diǎn)文件共享服務(wù)、實(shí)時(shí)多媒體處理、到大型的高性能計(jì)算集群,我們都可以看到GPFS的優(yōu)秀表現(xiàn)。GPFS在這些應(yīng)用里面都表現(xiàn)出了非常出色的性能和高可用性。

Ceph:

Ceph是一個(gè)開(kāi)源的統(tǒng)一的分布式存儲(chǔ)系統(tǒng),是高性能的并行文件系統(tǒng)。Ceph是加州大學(xué)Santa Cruz分校的Sage Weil(DreamHost的聯(lián)合創(chuàng)始人)專為博士論文設(shè)計(jì)的新一代自由軟件分布式文件系統(tǒng)。自2007年畢業(yè)之后,Sage開(kāi)始全職投入到Ceph開(kāi)發(fā)之中,使其能適用于生產(chǎn)環(huán)境。Ceph的主要目標(biāo)是設(shè)計(jì)成基于POSIX的沒(méi)有單點(diǎn)故障的分布式文件系統(tǒng),使數(shù)據(jù)能容錯(cuò)和無(wú)縫的復(fù)制。2010年3月,Linus Torvalds將Ceph client合并到內(nèi)核2.6.34中。

它基于CRUSH算法,沒(méi)有中心節(jié)點(diǎn),可以無(wú)限擴(kuò)展。Ceph提供三種存儲(chǔ)方式分別是對(duì)象存儲(chǔ),塊存儲(chǔ)和文件系統(tǒng)。在虛擬化領(lǐng)域里,比較常用到的是Ceph的塊設(shè)備存儲(chǔ)。Ceph以其穩(wěn)定、高可用、可擴(kuò)展的特性,乘著開(kāi)源云計(jì)算管理系統(tǒng)OpenStack的東風(fēng),迅速成為最熱門的開(kāi)源分布式存儲(chǔ)系統(tǒng)。Ceph是目前最火的分布式存儲(chǔ)軟件,Ceph開(kāi)源存儲(chǔ)項(xiàng)目已經(jīng)成為全球眾多海量存儲(chǔ)項(xiàng)目的主要選擇。Ceph現(xiàn)在是云計(jì)算、虛擬機(jī)部署的最火開(kāi)源存儲(chǔ)解決方案,是私有云事實(shí)上的標(biāo)準(zhǔn)。

GlusterFS:

GlusterFS(GNU ClusterFile System)是一種全對(duì)稱的開(kāi)源分布式文件系統(tǒng),所謂全對(duì)稱是指GlusterFS采用彈性哈希算法,沒(méi)有中心節(jié)點(diǎn),所有節(jié)點(diǎn)全部平等。GlusterFS配置方便,穩(wěn)定性好,可輕松達(dá)到PB級(jí)容量,數(shù)千個(gè)節(jié)點(diǎn)。2011年被紅帽收購(gòu),之后推出了基于GlusterFS的Red Hat Storage Server,增加了針對(duì)KVM的許多特性,可用作為KVM存儲(chǔ)image存儲(chǔ)集群,也可以為L(zhǎng)B或HA提供存儲(chǔ)。

Swift:

Swift 最初是由 Rackspace 公司開(kāi)發(fā)的高可用分布式對(duì)象存儲(chǔ)服務(wù)。于 2010 年貢獻(xiàn)給OpenStack開(kāi)源社區(qū)作為其最初的核心子項(xiàng)目之一,為其 Nova 子項(xiàng)目提供虛機(jī)鏡像存儲(chǔ)服務(wù)。Swift構(gòu)筑在比較便宜的標(biāo)準(zhǔn)硬件存儲(chǔ)基礎(chǔ)設(shè)施之上,無(wú)需采用 RAID(磁盤(pán)冗余陣列),通過(guò)在軟件層面引入一致性散列技術(shù)和數(shù)據(jù)冗余性,犧牲一定程度的數(shù)據(jù)一致性來(lái)達(dá)到高可用性和可伸縮性,支持多租戶模式、容器和對(duì)象讀寫(xiě)操作,適合解決互聯(lián)網(wǎng)的應(yīng)用場(chǎng)景下非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)問(wèn)題。Swift是一種比較通用的存儲(chǔ)解決方案,能夠可靠地存儲(chǔ)數(shù)量非常多的大小不一的文件。

BeeGFS:

BeeGFS(原FhGFS)既是一個(gè)網(wǎng)絡(luò)文件系統(tǒng)也是一個(gè)并行文件系統(tǒng)。是由Fraunhofer Institute為工業(yè)數(shù)學(xué)計(jì)算而設(shè)計(jì)開(kāi)發(fā),由于在歐洲和美國(guó)的中小型HPC系統(tǒng)性能表現(xiàn)良好,在2014年改名注冊(cè)為BeeGFS并受到科研和商業(yè)的廣泛應(yīng)用。客戶端通過(guò)網(wǎng)絡(luò)與存儲(chǔ)服務(wù)器進(jìn)行通信(具有TCP/IP或任何具有RDMA功能 的互連,如InfiniBand,RoCE或Omni-Path,支持native verbs 接口)。通過(guò)BeeGFS添加更多的服務(wù)器, 其容量和性能被聚合在單個(gè)命名空間中。BeeGFS是遵循GPL的“免費(fèi)開(kāi)源”產(chǎn)品,文件系統(tǒng)沒(méi)有許可證費(fèi)用。 由ThinkParQ提供專業(yè)支持,系統(tǒng)集成商可以為客戶構(gòu)建使用BeeGFS的解決方案。

Alluxio:

Alluxio(原Tachyon)是以內(nèi)存為中心的虛擬的分布式存儲(chǔ)系統(tǒng)。誕生于UC Berkeley的AMPLab,它統(tǒng)一了數(shù)據(jù)訪問(wèn)的方式,為上層計(jì)算框架和底層存儲(chǔ)系統(tǒng)構(gòu)建了橋梁, 應(yīng)用只需要連接Alluxio即可訪問(wèn)存儲(chǔ)在底層任意存儲(chǔ)系統(tǒng)中的數(shù)據(jù)。此外,Alluxio的以內(nèi)存為中心的架構(gòu)使得數(shù)據(jù)的訪問(wèn)速度能比現(xiàn)有方案快幾個(gè)數(shù)量級(jí)。Alluxio介于計(jì)算框架(如Apache Spark,Apache MapReduce,Apache HBase,Apache Hive,Apache Flink)和現(xiàn)有的存儲(chǔ)系統(tǒng)(如Amazon S3,OpenStack Swift,GlusterFS,HDFS,MaprFS,Ceph,NFS,OSS)之間。

4、資源調(diào)度

YARN:

(Yet Another Resource Negotiator)是Hadoop的資源管理和作業(yè)調(diào)度系統(tǒng)。作為Apache Hadoop的核心組件之一,YARN負(fù)責(zé)將系統(tǒng)資源分配給在Hadoop集群中運(yùn)行的各種應(yīng)用程序,并調(diào)度在不同集群節(jié)點(diǎn)上執(zhí)行的任務(wù)。YARN是Hadoop2.x 版本中的一個(gè)新特性。它的出現(xiàn)其實(shí)是為了解決第一代 MapReduce 編程框架的不足,提高集群環(huán)境下的資源利用率,這些資源包括內(nèi)存,磁盤(pán),網(wǎng)絡(luò),IO等。

YARN的基本思想是將資源管理和作業(yè)調(diào)度/監(jiān)視的功能分解為單獨(dú)的 daemon(守護(hù)進(jìn)程),其擁有一個(gè)全局ResourceManager、每個(gè)應(yīng)用程序的ApplicationMaster及每臺(tái)機(jī)器框架代理NodeManager。ResourceManager負(fù)責(zé)所有應(yīng)用程序之間資源分配。NodeManager負(fù)責(zé)Containers,監(jiān)視其資源使用情況(CPU,內(nèi)存,磁盤(pán),網(wǎng)絡(luò))并將其報(bào)告給 ResourceManager。ApplicationMaster負(fù)責(zé)是協(xié)調(diào)來(lái)自ResourceManager的資源,并與NodeManager一起執(zhí)行和監(jiān)視任務(wù)。

Mesos:

Apache Mesos是一個(gè)集群管理器,可跨分布式應(yīng)用程序或框架提供有效的資源隔離和共享。Mesos最初是由加州大學(xué)伯克利分校的AMPLab開(kāi)發(fā)的,Mesos項(xiàng)目發(fā)布于是2009年,2010年12月進(jìn)入Apache孵化器,2013年6月19日成為Apache頂級(jí)項(xiàng)目。Twitter公司則是 Mesos 項(xiàng)目的早期支持者和使用者之一。

它位于應(yīng)用程序?qū)雍筒僮飨到y(tǒng)之間,可以更加輕松地在大規(guī)模集群環(huán)境中更有效地部署和管理應(yīng)用程序。它可以在動(dòng)態(tài)共享節(jié)點(diǎn)池上運(yùn)行許多應(yīng)用程序。對(duì)數(shù)據(jù)中心而言它就像一個(gè)單一的資源池,從物理或虛擬機(jī)器中抽離了CPU、內(nèi)存、存儲(chǔ)以及其它計(jì)算資源,很容易建立和有效運(yùn)行具備容錯(cuò)性和彈性的分布式系統(tǒng)。2019年5月,Twitter宣布放棄Mesos,基礎(chǔ)設(shè)施從Mesos全面轉(zhuǎn)向Kubernetes。

5、協(xié)調(diào)框架

Zookeeper:

Apache ZooKeeper 是一個(gè)開(kāi)源的分布式協(xié)調(diào)服務(wù),是Google的Chubby一個(gè)開(kāi)源的實(shí)現(xiàn),是Hadoop,HBase和其他分布式框架使用的有組織服務(wù)的標(biāo)準(zhǔn)。由雅虎開(kāi)源并于2010年11月成為Apache頂級(jí)項(xiàng)目。ZooKeeper是一個(gè)典型的分布式數(shù)據(jù)一致性解決方案,分布式應(yīng)用程序可以基于ZooKeeper實(shí)現(xiàn)諸如數(shù)據(jù)發(fā)布/訂閱、負(fù)載均衡、命名服務(wù)、分布式協(xié)調(diào)/通知、集群管理、Master 選舉、分布式鎖和分布式隊(duì)列等功能。

ZooKeeper是以Fast Paxos算法為基礎(chǔ)的,Paxos 算法存在活鎖的問(wèn)題,即當(dāng)有多個(gè)proposer交錯(cuò)提交時(shí),有可能互相排斥導(dǎo)致沒(méi)有一個(gè)proposer能提交成功,而Fast Paxos作了一些優(yōu)化,通過(guò)選舉產(chǎn)生一個(gè)leader (領(lǐng)導(dǎo)者),只有l(wèi)eader才能提交proposer。ZooKeeper使用 ZAB 協(xié)議作為其保證數(shù)據(jù)一致性的核心算法。ZAB(ZooKeeper Atomic Broadcast 原子廣播)協(xié)議是為分布式協(xié)調(diào)服務(wù) ZooKeeper 專門設(shè)計(jì)的一種支持崩潰恢復(fù)的原子廣播協(xié)議。

Etcd:

Etcd是一個(gè)高可用的鍵值存儲(chǔ)系統(tǒng),主要用于共享配置和服務(wù)發(fā)現(xiàn)。Etcd是一種分布式kv存儲(chǔ)設(shè)施,由CoreOS于2013年6月發(fā)起的開(kāi)源并維護(hù)的項(xiàng)目,它感來(lái)自于ZooKeeper和Doozer,基于Go語(yǔ)言實(shí)現(xiàn)。它類似的Zookeeper,但沒(méi)有Zookeeper那么重型,功能也沒(méi)有覆蓋那么多,通過(guò)Raft一致性算法處理日志復(fù)制以保證強(qiáng)一致性。Raft是一個(gè)新的一致性算法,適用于分布式系統(tǒng)的日志復(fù)制,Raft通過(guò)選舉的方式來(lái)實(shí)現(xiàn)一致性。

Google的容器集群管理系統(tǒng)Kubernetes、開(kāi)源PaaS平臺(tái)Cloud Foundry和CoreOS的Fleet都廣泛使用了Etcd。在分布式系統(tǒng)中,如何管理節(jié)點(diǎn)間的狀態(tài)一直是一個(gè)難題,etcd像是專門為集群環(huán)境的服務(wù)發(fā)現(xiàn)和注冊(cè)而設(shè)計(jì),它提供了數(shù)據(jù)TTL失效、數(shù)據(jù)改變監(jiān)視、多值、目錄監(jiān)聽(tīng)、分布式鎖原子操作等功能,可以方便的跟蹤并管理集群節(jié)點(diǎn)的狀態(tài)。

Consul:

Consul是HashiCorp公司推出的開(kāi)源工具,用于實(shí)現(xiàn)分布式系統(tǒng)的服務(wù)發(fā)現(xiàn)與配置共享。Consul用Go語(yǔ)言實(shí)現(xiàn),因此具有天然可移植性(支持Linux、windows和Mac OS X)。與其他分布式服務(wù)注冊(cè)與發(fā)現(xiàn)的方案不同,Consul的方案更"一站式",內(nèi)置了服務(wù)注冊(cè)與發(fā)現(xiàn)框架、分布一致性協(xié)議實(shí)現(xiàn)、健康檢查、Key/Value存儲(chǔ)、多數(shù)據(jù)中心方案,不再需要依賴其他工具(比如ZooKeeper等)。

采用Raft算法一致性協(xié)議,支持多數(shù)據(jù)中心分布式高可用,服務(wù)發(fā)現(xiàn)和配置共享,使用gossip協(xié)議管理成員和消息廣播,支持ACL訪問(wèn)控制。最新的Consul提供了一個(gè)新特性“Mesh 網(wǎng)關(guān)”,實(shí)現(xiàn)透明、跨網(wǎng)絡(luò)的連接。這些特性可以跨平臺(tái)工作,對(duì)Kubernetes提供一流的支持,并且在任何云或?qū)S镁W(wǎng)絡(luò)上都可以輕松地部署到更傳統(tǒng)的環(huán)境中,實(shí)現(xiàn)了Consul多云服務(wù)網(wǎng)絡(luò)的目標(biāo)。

6、數(shù)據(jù)存儲(chǔ)

Hbase:

Apache HBase(Hadoop Database)是一個(gè)分布式的、面向列的NoSQL開(kāi)源數(shù)據(jù)庫(kù)。是一個(gè)高可靠性、高性能、面向列、可伸縮的分布式存儲(chǔ)系統(tǒng),利用HBase技術(shù)可在廉價(jià)PC Server上搭建起大規(guī)模結(jié)構(gòu)化存儲(chǔ)集群。初期的目標(biāo)是彌補(bǔ)MapReduce在實(shí)時(shí)操作上的缺失,方便用戶可隨時(shí)操作大規(guī)模的數(shù)據(jù)集。

HBase原來(lái)是Apache的Hadoop項(xiàng)目的子項(xiàng)目,隨著大數(shù)據(jù)與NoSQL的流行和迅速發(fā)展,2010年5月Apache HBase脫離了Hadoop成為Apache基金的頂級(jí)項(xiàng)目。HBase是Google Bigtable的開(kāi)源實(shí)現(xiàn),類似Google Bigtable利用GFS作為其文件存儲(chǔ)系統(tǒng),HBase利用Hadoop HDFS作為其文件存儲(chǔ)系統(tǒng);Google運(yùn)行MapReduce來(lái)處理Bigtable中的海量數(shù)據(jù),HBase同樣利用Hadoop MapReduce來(lái)處理HBase中的海量數(shù)據(jù);Google Bigtable利用 Chubby作為協(xié)同服務(wù),HBase利用Zookeeper作為協(xié)調(diào)服務(wù)。HBase不同于一般的關(guān)系數(shù)據(jù)庫(kù),它是一個(gè)適合于非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫(kù),另外HBase是基于列的而不是基于行的模式。

Cassandra:

Apache Cassandra是一個(gè)開(kāi)源的、分布式的混合型NoSQL數(shù)據(jù)庫(kù)。它最初由Facebook開(kāi)發(fā),于2008年開(kāi)源,2010年2月17日成為Apache頂級(jí)項(xiàng)目。主要用于儲(chǔ)存海量數(shù)據(jù)。以Amazon專有的完全分布式Dynamo為基礎(chǔ),結(jié)合了Google BigTable基于列族的數(shù)據(jù)模型。P2P去中心化的存儲(chǔ)。很多方面都可以稱之為Dynamo 2.0。

Cassandra的主要特點(diǎn)就是它不是一個(gè)數(shù)據(jù)庫(kù),而是由一堆數(shù)據(jù)庫(kù)節(jié)點(diǎn)共同構(gòu)成的一個(gè)分布式網(wǎng)絡(luò)服務(wù),對(duì)Cassandra 的一個(gè)寫(xiě)操作,會(huì)被復(fù)制到其它節(jié)點(diǎn)上去,對(duì)Cassandra的讀操作,也會(huì)被路由到某個(gè)節(jié)點(diǎn)上面去讀取。對(duì)于一個(gè)Cassandra群集來(lái)說(shuō),擴(kuò)展性能是比較簡(jiǎn)單的事情,只管在群集里面添加節(jié)點(diǎn)就可以了。它提供了高可用性,沒(méi)有單點(diǎn)故障。它是一個(gè)網(wǎng)絡(luò)社交云計(jì)算方面理想的數(shù)據(jù)庫(kù)。

ScyllaDB:

ScyllaDB 是用 C++ 重寫(xiě)的 Cassandra,官網(wǎng)號(hào)稱每節(jié)點(diǎn)每秒處理 100 萬(wàn) TPS。ScyllaDB 完全兼容 Apache Cassandra,擁有比 Cassandra 多 10x 倍的吞吐量,降低了延遲。ScyllaDB 號(hào)稱是世界上最快的 NoSQL 列存儲(chǔ)數(shù)據(jù)庫(kù)。ScyllaDB 在垃圾收集或者 Compaction 的時(shí)候不需要暫停,在常規(guī)生產(chǎn)負(fù)載的時(shí)候可以添加和刪除節(jié)點(diǎn),數(shù)據(jù)結(jié)構(gòu)測(cè)量不會(huì)跨 CPU 緩存線,poll 模式驅(qū)動(dòng)替代了中斷。目前國(guó)內(nèi)資料極少,中文網(wǎng)2016年7月停止了更新。

MongoDB:

MongoDB是為處理大數(shù)據(jù)而生的一個(gè)面向文檔的分布式開(kāi)源數(shù)據(jù)庫(kù),由10gen公司開(kāi)發(fā)和維護(hù)。它使用C++編寫(xiě)。MongoDB是一個(gè)介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫(kù)的。他支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bjson格式,因此可以存儲(chǔ)比較復(fù)雜的數(shù)據(jù)類型。

Mongo最大的特點(diǎn)是他支持的查詢語(yǔ)言非常強(qiáng)大,其語(yǔ)法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z(yǔ)言,幾乎可以實(shí)現(xiàn)類似關(guān)系數(shù)據(jù)庫(kù)單表查詢的絕大部分功能,而且還支持對(duì)數(shù)據(jù)建立索引。MongoDB是專為可擴(kuò)展性,高性能和高可用性而設(shè)計(jì)的數(shù)據(jù)庫(kù)。它可以從單服務(wù)器部署擴(kuò)展到大型、復(fù)雜的多數(shù)據(jù)中心架構(gòu)。利用內(nèi)存計(jì)算的優(yōu)勢(shì),MongoDB能夠提供高性能的數(shù)據(jù)讀寫(xiě)操作。MongoDB的本地復(fù)制和自動(dòng)故障轉(zhuǎn)移功能使應(yīng)用程序具有企業(yè)級(jí)的可靠性和操作靈活性。

2018年10月MongoDB宣布將開(kāi)源協(xié)議從GNU AGPLv3切換到Server Side Public License (SSPL),SSPL 明確要求托管 MongoDB 實(shí)例的云廠商要么獲取商業(yè)許可證要么向社區(qū)開(kāi)放其服務(wù)源碼。隨即,紅帽宣布從Red Hat Enterprise Linux(RHEL)8中刪除 MongoDB,Debian Linux也已經(jīng)從它的發(fā)行版中刪除了MongoDB。

Accumulo:

Apache Accumulo 是一個(gè)高性能可擴(kuò)展的分布式Key-Value數(shù)據(jù)存儲(chǔ)和檢索系統(tǒng)。由美國(guó)國(guó)家安全局(NSA)于2011年捐贈(zèng)給Apache基金會(huì),2012年3月21日成為Apache頂級(jí)項(xiàng)目。Accumulo使用Google BigTable設(shè)計(jì)思路,基于Apache Hadoop、Zookeeper 和 Thrift 構(gòu)建。Accumulo支持高效存儲(chǔ)和檢索的結(jié)構(gòu)化數(shù)據(jù),包括查詢范圍,并提供支持使用Accumulo表作為輸入和輸出的 MapReduce作業(yè)。Accumulo比簡(jiǎn)單的key-values數(shù)據(jù)庫(kù)提供更豐富的數(shù)據(jù)模型,但不是完全的關(guān)系數(shù)據(jù)庫(kù)。

Redis:

Redis 是一個(gè)開(kāi)源的支持網(wǎng)絡(luò)、可基于內(nèi)存也可持久化的日志型、Key-Value數(shù)據(jù)庫(kù),和Memcached類似。它可以用作數(shù)據(jù)庫(kù)、緩存和消息中間件。是Salvatore Sanfilippo于2009年開(kāi)發(fā),2010年3月15日起Redis的開(kāi)發(fā)工作由VMware主持,2013年5月開(kāi)始由Pivotal贊助。Redis支持存儲(chǔ)的value類型相對(duì)更多,包括字符串、鏈表、集合(set)和有序集合(zset)。

與memcached一樣,為了保證效率,數(shù)據(jù)都是緩存在內(nèi)存中,區(qū)別的是Redis會(huì)周期性的把更新的數(shù)據(jù)寫(xiě)入磁盤(pán)或者把修改操作寫(xiě)入追加的記錄文件,并且在此基礎(chǔ)上實(shí)現(xiàn)了主從同步。Redis的出現(xiàn),很大程度補(bǔ)償了memcached這類key/value存儲(chǔ)的不足,在部分場(chǎng)合可以對(duì)關(guān)系數(shù)據(jù)庫(kù)起到很好的補(bǔ)充作用。它提供了Python、Ruby、Erlang、PHP客戶端,使用很方便。 簡(jiǎn)單說(shuō),Redis是一個(gè)數(shù)據(jù)緩存的NoSQL數(shù)據(jù)庫(kù)。

Ignite:

Apache Ignite是一個(gè)以內(nèi)存為中心的分布式數(shù)據(jù)庫(kù)、緩存和處理平臺(tái),可以在PB級(jí)數(shù)據(jù)中,以內(nèi)存級(jí)的速度進(jìn)行事務(wù)性、分析性以及流式負(fù)載的處理。Ignite和Apache Arrow很類似,屬于大數(shù)據(jù)范疇中的內(nèi)存分布式管理系統(tǒng)。Ignite來(lái)源于GridGain系統(tǒng)公司開(kāi)發(fā)的GridGain軟件,2014 年3月GridGain公司將該軟件90%以上的功能和代碼開(kāi)源,2014年10月GridGain通過(guò)Apache 2.0許可進(jìn)入Apache的孵化器進(jìn)行孵化,2015年9月18日成為Apache的頂級(jí)項(xiàng)目,9月28日即發(fā)布了1.4.0版。

Ignite提供了完整的SQL、DDL和DML的支持,可以使用純SQL而不用寫(xiě)代碼與Ignite進(jìn)行交互,這意味著只使用SQL就可以創(chuàng)建表和索引,以及插入、更新和查詢數(shù)據(jù)。有這個(gè)完整的SQL支持,Ignite就可以作為一種分布式SQL數(shù)據(jù)庫(kù)。Ignite還提供了基于數(shù)據(jù)關(guān)聯(lián)對(duì)數(shù)據(jù)進(jìn)行分區(qū)的能力,并使用大規(guī)模并行處理來(lái)提高性能和可伸縮性。Ignite還提供內(nèi)置的流處理、分析和機(jī)器學(xué)習(xí)功能。它類似于一個(gè)關(guān)系型的內(nèi)存數(shù)據(jù)庫(kù),可以像操作數(shù)據(jù)庫(kù)一樣操作內(nèi)存緩存。

Arrow:

Apache Arrow 大數(shù)據(jù)列式內(nèi)存數(shù)據(jù)平臺(tái)。最初是基于Apache Drill項(xiàng)目的代碼進(jìn)行開(kāi)發(fā)的,于2016年2月17日成為Apache頂級(jí)項(xiàng)目。它是列式內(nèi)存分析的事實(shí)標(biāo)準(zhǔn),由來(lái)自Drill、Hadoop、HBase、Impala、Storm等13個(gè)頂級(jí)開(kāi)源項(xiàng)目的工程師們開(kāi)發(fā)和完善。它設(shè)計(jì)的目的在于作為一個(gè)跨平臺(tái)的數(shù)據(jù)層,來(lái)加快大數(shù)據(jù)分析項(xiàng)目的運(yùn)行速度。它為平面和分層數(shù)據(jù)指定了獨(dú)立于語(yǔ)言的標(biāo)準(zhǔn)化列式內(nèi)存格式,可在現(xiàn)代硬件上進(jìn)行高效的分析操作。它還提供了計(jì)算庫(kù)和零拷貝流式消息傳遞和進(jìn)程間通信。

在分布式系統(tǒng)內(nèi)部,每個(gè)系統(tǒng)都有自己的內(nèi)存格式,大量的 CPU 資源被消耗在序列化和反序列化過(guò)程中,并且由于每個(gè)項(xiàng)目都有自己的實(shí)現(xiàn),沒(méi)有一個(gè)明確的標(biāo)準(zhǔn),造成各個(gè)系統(tǒng)都在重復(fù)著復(fù)制、轉(zhuǎn)換工作,這種問(wèn)題在微服務(wù)系統(tǒng)架構(gòu)出現(xiàn)之后更加明顯,Arrow 的出現(xiàn)就是為了解決這一問(wèn)題。它提供了一種跨平臺(tái)應(yīng)用的內(nèi)存數(shù)據(jù)交換格式,是列式內(nèi)存分析的事實(shí)標(biāo)準(zhǔn)。目前支持的語(yǔ)言包括C、C++、C#、Go、Java、JavaScript、MATLAB、Python、R語(yǔ)言、Ruby和Rust等11種語(yǔ)言。

Geode:

Apache Geode是一個(gè)高性能的分布式內(nèi)存對(duì)象緩存系統(tǒng),Key/Value存儲(chǔ)系統(tǒng)。是GemFire的開(kāi)源版,2015年4月GemGire把代碼提交給Apache孵化,2016年11月16日畢業(yè)成為Apache基金會(huì)的頂級(jí)項(xiàng)目。Geode是一個(gè)相當(dāng)成熟、強(qiáng)健的的數(shù)據(jù)管理平臺(tái),提供實(shí)時(shí)的、一致的、貫穿整個(gè)云架構(gòu)地訪問(wèn)數(shù)據(jù)關(guān)鍵型應(yīng)用。Geode跨多個(gè)進(jìn)程匯集內(nèi)存,CPU,網(wǎng)絡(luò)資源和可選的本地磁盤(pán),以管理應(yīng)用程序?qū)ο蠛托袨椤?/p>

Geode自身功能比較多,首先它是一個(gè)基于JVM的NoSQL分布式數(shù)據(jù)處理平臺(tái),同時(shí)集中間件、緩存、消息隊(duì)列、事件處理引擎、NoSQL數(shù)據(jù)庫(kù)于一身的分布式內(nèi)存數(shù)據(jù)處理平臺(tái)??捎脕?lái)進(jìn)行完成分布式緩存、數(shù)據(jù)持久化、分布式事物、動(dòng)態(tài)擴(kuò)展等功能。簡(jiǎn)單說(shuō),Geode是Redis的增強(qiáng)版。

Neo4j:

Neo4j是一個(gè)開(kāi)源的高性能NOSQL圖形數(shù)據(jù)庫(kù),它將結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)在網(wǎng)絡(luò)上而不是表中。它是由Neo技術(shù)使用Java語(yǔ)言完全開(kāi)發(fā)的。圖形數(shù)據(jù)庫(kù)也就意味著它的數(shù)據(jù)并非保存在表或集合中,而是保存為節(jié)點(diǎn)以及節(jié)點(diǎn)之間的關(guān)系。

Neo4j 除了頂點(diǎn)和邊,還有一種重要的部分屬性。無(wú)論是頂點(diǎn)還是邊,都可以有任意多的屬性。屬性的存放類似于一個(gè)HashMap,Key 為一個(gè)字符串,而 Value 必須是基本類型或者是基本類型數(shù)組。Neo4j也可以被看作是一個(gè)高性能的圖引擎,該引擎具有成熟數(shù)據(jù)庫(kù)的所有特性。Neo4j創(chuàng)建的圖是用頂點(diǎn)和邊構(gòu)建一個(gè)有向圖,其查詢語(yǔ)言cypher已經(jīng)成為事實(shí)上的標(biāo)準(zhǔn)。

CouchDB:

Apache CouchDB是一個(gè)分布式的NoSQL面向文檔的數(shù)據(jù)庫(kù),2008年11月19日成為Apache頂級(jí)開(kāi)源項(xiàng)目。CouchDB是一個(gè)完全包含web的數(shù)據(jù)庫(kù)。使用JSON格式存儲(chǔ)文檔數(shù)據(jù)。使用web瀏覽器通過(guò)HTTP訪問(wèn)文檔。使用JavaScript查詢、組合和轉(zhuǎn)換文檔。CouchDB可以很好地與現(xiàn)代web和移動(dòng)應(yīng)用程序配合使用。可以使用CouchDB 增量復(fù)制高效地分發(fā)數(shù)據(jù)。CouchDB支持帶有自動(dòng)沖突檢測(cè)的主控設(shè)置。CouchDB附帶了一套特性,比如即時(shí)文檔轉(zhuǎn)換和實(shí)時(shí)更改通知,這使得web開(kāi)發(fā)變得非常簡(jiǎn)單。它甚至提供了一個(gè)易于使用的web管理控制臺(tái)。

Kudu:

Apache Kudu是一個(gè)為了Hadoop系統(tǒng)環(huán)境而打造的列式存儲(chǔ)系統(tǒng),是一個(gè)為塊數(shù)據(jù)的快速分析而生的存儲(chǔ)架構(gòu),可以同時(shí)提供低延遲的隨機(jī)讀寫(xiě)和高效的數(shù)據(jù)分析能力。Kudu是由Cloudera開(kāi)源,2015年12月3日進(jìn)入Apache孵化器,2016年7月20日成為Apache頂級(jí)項(xiàng)目。

Kudu專為了對(duì)快速變化的數(shù)據(jù)進(jìn)行快速的分析,擁有Hadoop生態(tài)系統(tǒng)應(yīng)用的常見(jiàn)技術(shù)特性,運(yùn)行在一般的商用硬件上,支持水平擴(kuò)展、高可用,使用Raft協(xié)議進(jìn)行一致性保證。并且與Cloudera Impala和Apache Spark等當(dāng)前流行的大數(shù)據(jù)查詢和分析工具結(jié)合緊密。在Kudu出現(xiàn)之前,Hadoop生態(tài)環(huán)境中的儲(chǔ)存主要依賴HDFS和HBase,追求高吞吐批處理的用例中使用HDFS,追求低延時(shí)隨機(jī)讀取用例下用HBase,而Kudu正好能兼顧這兩者。

CarbonData:

Apache CarbonData是一個(gè)基于索引的列式數(shù)據(jù)格式解決方案。華為于2016年6月開(kāi)源并貢獻(xiàn)給Apache,于2017年4月19日成為Apache頂級(jí)項(xiàng)目。CarbonData是一種新的融合存儲(chǔ)解決方案,利用先進(jìn)的列式存儲(chǔ),索引,壓縮和編碼技術(shù)提高計(jì)算效率,從而加快查詢速度,其查詢速度比 PetaBytes 數(shù)據(jù)快一個(gè)數(shù)量級(jí)。

CarbonData提供了一種新的融合數(shù)據(jù)存儲(chǔ)方案,以一份數(shù)據(jù)同時(shí)支持“交互式分析、詳單查詢、任意維度組合的過(guò)濾查詢等”多種大數(shù)據(jù)應(yīng)用場(chǎng)景,并通過(guò)豐富的索引技術(shù)、字典編碼、列存等特性提升了IO掃描和計(jì)算性能,實(shí)現(xiàn)百億數(shù)據(jù)級(jí)秒級(jí)響應(yīng),與大數(shù)據(jù)生態(tài)Apache Hadoop、Apache Spark等無(wú)縫集成。

7、數(shù)據(jù)處理

MapReduce:

Apache Hadoop MapReduce是一個(gè)分布式的離線計(jì)算框架,用于海量數(shù)據(jù)的并行運(yùn)算,是Hadoop數(shù)據(jù)分析的核心.。MapReduce框架使得編程人員在不會(huì)分布式并行編程的情況下,將編寫(xiě)的業(yè)務(wù)邏輯代碼運(yùn)行在分布式系統(tǒng)上,開(kāi)發(fā)人員可以將絕大部分的工作集中于業(yè)務(wù)邏輯上的開(kāi)發(fā),具體的計(jì)算只需要交給框架就可以。

MapReduce的處理過(guò)程分為兩個(gè)步驟:Map和Reduce。Map階段對(duì)輸入的數(shù)據(jù)進(jìn)行并行處理,處理結(jié)果傳給Reduce完成最后的匯總。但由于MR對(duì)HDFS的頻繁操作(包括計(jì)算結(jié)果持久化、數(shù)據(jù)備份、資源下載及Shuffle等)導(dǎo)致磁盤(pán)I/O成為系統(tǒng)性能的瓶頸,因此只適用于離線數(shù)據(jù)處理或批處理,而不能支持對(duì)迭代式、交互式、流式數(shù)據(jù)的處理,目前逐漸被Spark、Flink替代。

Spark:

Apache Spark是通用的一站式計(jì)算框架,是專為大規(guī)模數(shù)據(jù)處理而設(shè)計(jì)的快速通用的計(jì)算引擎。2009年誕生于UC Berkeley的AMPLab,2010 年開(kāi)源,2013年6月成為Apache孵化項(xiàng)目,2014年2月19日成為Apache頂級(jí)項(xiàng)目。Spark是基于MapReduce算法實(shí)現(xiàn)的分布式計(jì)算,擁有 MapReduce 所具有的優(yōu)點(diǎn),但不同于 MR 的是,Job中間輸出和結(jié)果可以保存在內(nèi)存中,從而不再需要讀寫(xiě) HDFS,因此Spark能更好地適用于數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)等需要迭代的算法中,高效地支持更多計(jì)算模式,包括交互式查詢和流處理。

Spark是MapReduce 的替代方案,是對(duì) Hadoop 的補(bǔ)充,而且兼容 HDFS、Hive,可融入 Hadoop 的生態(tài)系統(tǒng),以彌補(bǔ)MapReduce的不足。Spark是在Scala語(yǔ)言中實(shí)現(xiàn)的,它將 Scala 用作其應(yīng)用程序框架。與 Hadoop 不同,Spark 和Scala能夠緊密集成,其中的Scala可以像操作本地集合對(duì)象一樣輕松地操作分布式數(shù)據(jù)集。Spark通過(guò)提供豐富的Scala、Java、Python API、R及交互式Shell來(lái)提高可用性。

Spark主要包含幾個(gè)重要組件:SparkCore批處理、SparkSQL交互式處理、SparkStreaming流處理、Spark Graphx圖計(jì)算、Spark MLlib機(jī)器學(xué)習(xí),Spark旨在成為運(yùn)行批處理、數(shù)據(jù)流處理、交互處理、圖形處理和機(jī)器學(xué)習(xí)等應(yīng)用的一站式平臺(tái)。目前Spark已經(jīng)成為大數(shù)據(jù)領(lǐng)域最熱門的技術(shù)。

Flink:

Apache Flink是一個(gè)的開(kāi)源的流處理和批處理分布式數(shù)據(jù)處理框架,其核心是一個(gè)流式的數(shù)據(jù)流執(zhí)行引擎。Flink起源于Stratosphere項(xiàng)目,2014年4月Stratosphere代碼被貢獻(xiàn)給Apache軟件基金會(huì)成為孵化器項(xiàng)目,2014年12月17日成為Apache頂級(jí)項(xiàng)目,0.6版本以后改名為Flink,2015年09月發(fā)布第一個(gè)穩(wěn)定版本0.9。

Flink的概念和使用場(chǎng)合類似于Spark,旨在成為運(yùn)行批處理、數(shù)據(jù)流處理、交互處理、圖形處理和機(jī)器學(xué)習(xí)等應(yīng)用的一站式平臺(tái)。Flink不僅具有支持高吞吐、低延遲和exactly-once語(yǔ)義的實(shí)時(shí)計(jì)算能力,還有基于流式計(jì)算引擎處理批量數(shù)據(jù)的計(jì)算能力,真正意義實(shí)現(xiàn)了批流統(tǒng)一,同時(shí)Flink運(yùn)行時(shí)本身也支持迭代算法的執(zhí)行。Flink流式計(jì)算模型實(shí)現(xiàn)了高吞吐,低延遲,高性能兼具實(shí)時(shí)流式計(jì)算框架,而且完全兼容Hadoop。

眾多優(yōu)秀的特性,使得Flink成為開(kāi)源大數(shù)據(jù)數(shù)據(jù)處理框架中的一顆新星,在全球范圍內(nèi),越來(lái)越多的公司開(kāi)始使用Flink,F(xiàn)link也漸漸成為企業(yè)內(nèi)部主流的數(shù)據(jù)處理框架,逐漸成為下一代大數(shù)據(jù)數(shù)據(jù)處理框架標(biāo)準(zhǔn)的趨勢(shì)。

Storm:

Apache Storm是一個(gè)開(kāi)源的分布式實(shí)時(shí)大數(shù)據(jù)處理系統(tǒng)。Hadoop不擅長(zhǎng)實(shí)時(shí)計(jì)算,因?yàn)樗菫榕幚矶?,Storm擅長(zhǎng)實(shí)時(shí)處理海量數(shù)據(jù),而非批處理。Storm設(shè)計(jì)用于在容錯(cuò)和水平可擴(kuò)展方法中處理大量數(shù)據(jù)。它是一個(gè)流數(shù)據(jù)框架,具有最高的攝取率。

Storm最初由Nathan Marz創(chuàng)建,后來(lái)被Twitter收購(gòu)并開(kāi)源。2011年9月Storm正式發(fā)布,2013年9月進(jìn)入Apache孵化并于2014年9月17日畢業(yè)成為Apache頂級(jí)項(xiàng)目,短時(shí)間內(nèi)Storm成為了分布式實(shí)時(shí)處理系統(tǒng)的標(biāo)準(zhǔn)。Storm是用Java和Clojure編寫(xiě),使用Apache Thrift,能以任何語(yǔ)言編寫(xiě)拓?fù)鋞opology。Storm提供了毫秒級(jí)別的實(shí)時(shí)數(shù)據(jù)處理能力。現(xiàn)在隨著Spark和Flink的發(fā)展,Storm市場(chǎng)占有逐漸在降低,但目前它仍然是實(shí)時(shí)分析的領(lǐng)導(dǎo)者。

Tez:

Apache Tez是一個(gè)開(kāi)源的支持DAG作業(yè)的計(jì)算引擎,它可以將多個(gè)有依賴的作業(yè)轉(zhuǎn)換為一個(gè)作業(yè)從而大幅提升DAG作業(yè)的性能。Tez是Hortonworks開(kāi)發(fā)的DAG計(jì)算框架,是為了更高效地運(yùn)行存在依賴關(guān)系的作業(yè)(比如Pig和Hive產(chǎn)生的MapReduce作業(yè)),減少磁盤(pán)和網(wǎng)絡(luò)IO。2014年7月16日成為Apache頂級(jí)項(xiàng)目。Tez是從MapReduce計(jì)算框架演化而來(lái)的通用DAG計(jì)算框架,可作為MapReduce、Pig、Hive等系統(tǒng)的底層數(shù)據(jù)處理引擎。簡(jiǎn)單來(lái)說(shuō),Tez主要Apache和HDP平臺(tái)替代MR和Hive底層執(zhí)行引擎,提高計(jì)算效率。

Samza:

Apache Samza是一種是分布式流處理框架,與Apache Kafka消息系統(tǒng)緊密綁定的流處理框架。是LinkedIn于2013年7月開(kāi)源并作為孵化項(xiàng)目貢獻(xiàn)給Apache,2015年1月21日成為Apache頂級(jí)項(xiàng)目。它是一個(gè)分布式流處理框架,專用于實(shí)時(shí)數(shù)據(jù)的處理,非常像Twitter的流處理系統(tǒng)Storm。不同的是Samza基于Hadoop,而且使用了LinkedIn自家的Kafka分布式消息系統(tǒng)。

Samza的目標(biāo)是將流作為接受到的消息處理,同時(shí),Samza的流初始元素并不是一個(gè)tuple或一個(gè)DStream,而是一個(gè)消息,流被劃分到分區(qū),每個(gè)分區(qū)是一個(gè)只讀消息的排序的序列,每個(gè)消息有一個(gè)唯一的ID(offset),系統(tǒng)也支持批處理,從同樣的流分區(qū)以順序消費(fèi)幾個(gè)消息,盡管Samza主要是依賴于Hadoop的Yarn和Apache Kafka,但是它的Execution & Streaming模塊是可插拔的。

Apex:

Apache Apex是一個(gè)統(tǒng)一流和批處理引擎。作為新的開(kāi)源數(shù)據(jù)流分析方案,Apex脫胎于DataTorrent的RTS平臺(tái),能夠帶來(lái)出色的速度表現(xiàn)并簡(jiǎn)化編程要求。由DataTorrent在2012年創(chuàng)建,2015年8月貢獻(xiàn)給Apache,2016年4月20日成為Apache頂級(jí)項(xiàng)目。Apex能夠在Hadoop上實(shí)現(xiàn)數(shù)據(jù)流分析。其設(shè)計(jì)目標(biāo)在于運(yùn)行Hadoop生態(tài)系統(tǒng),并利用YARN實(shí)現(xiàn)按需規(guī)模伸縮且通過(guò)HDFS實(shí)現(xiàn)容錯(cuò)能力。

Beam:

Apache Beam是一個(gè)開(kāi)源的統(tǒng)一編程模型,用于定義和執(zhí)行并行數(shù)據(jù)處理管道。Beam主要是對(duì)數(shù)據(jù)處理的編程范式和接口進(jìn)行了統(tǒng)一定義,這樣基于Beam開(kāi)發(fā)的數(shù)據(jù)處理程序可以執(zhí)行在任意的分布式計(jì)算引擎上。譽(yù)為下一代的大數(shù)據(jù)處理統(tǒng)一標(biāo)準(zhǔn)。Google在2016年2月宣布將大數(shù)據(jù)流水線產(chǎn)品(Google DataFlow)貢獻(xiàn)給Apache基金會(huì)孵化,2016年12月21日成為Apache頂級(jí)項(xiàng)目,2017年5月發(fā)布第一個(gè)穩(wěn)定版本2.0.0。它的強(qiáng)大之處在于它能夠同時(shí)運(yùn)行批處理流和流式管道,并且由Beam支持的分布式處理后端之一執(zhí)行:Apache Apex,Apache Flink,Apache Spark和Google Cloud Dataflow。

Heron:

Heron是一個(gè)實(shí)時(shí)的、容錯(cuò)的、分布式的流數(shù)據(jù)處理系統(tǒng)。Twitter開(kāi)發(fā)的第二代流處理系統(tǒng),于2016年5月25日宣布開(kāi)源。2017年6月23日進(jìn)入Apache孵化器。Twitter宣稱已經(jīng)用Heron替換了Storm。Heron是Apache Storm的直接繼承者。它繼承了Apache Storm的實(shí)時(shí)性、容錯(cuò)、低延遲的特性。并且它保留了Apache Storm的Topology API,使用者可以直接將Apache Storm上構(gòu)建的Topology項(xiàng)目,直接轉(zhuǎn)移到Apache Storm中運(yùn)行而不需要做其他更改。它廣泛應(yīng)用于實(shí)時(shí)分析、連續(xù)計(jì)算、復(fù)雜事件處理和一些實(shí)時(shí)性要求的應(yīng)用。相比于Apache Storm,它提供了擴(kuò)展性更好,調(diào)試能力更強(qiáng),性能更好,管理更容易等特性。它能夠每秒鐘百萬(wàn)級(jí)別的吞吐量和毫秒級(jí)別的延遲。

8、數(shù)據(jù)查詢和分析

Hive:

Apache Hive是基于Hadoop的一個(gè)數(shù)據(jù)倉(cāng)庫(kù)工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫(kù)表,并提供類SQL語(yǔ)句的Hive SQL(HQL)查詢功能,將SQL語(yǔ)句轉(zhuǎn)換為MapReduce任務(wù)進(jìn)行運(yùn)行。Hive是由Facebook在2008年將捐獻(xiàn)給Apache,2010年9月畢業(yè)成為Apache頂級(jí)項(xiàng)目。

原理是用熟悉的SQL模型來(lái)操作 HDFS 上的數(shù)據(jù)。優(yōu)點(diǎn)是學(xué)習(xí)成本低,可以通過(guò)HQL語(yǔ)句快速實(shí)現(xiàn)簡(jiǎn)單的MapReduce統(tǒng)計(jì),不必開(kāi)發(fā)專門的MapReduce應(yīng)用。方便的使用 Hive 進(jìn)行數(shù)據(jù)倉(cāng)庫(kù)的建模和建設(shè),然后使用 SQL 模型針對(duì)數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)和分析。但由于Hive底層默認(rèn)是轉(zhuǎn)換為MR執(zhí)行,而MR的shuffle是基于磁盤(pán)的,所以只能處理離線分析,效率比較低。目前部分企業(yè)使用Hive構(gòu)建數(shù)倉(cāng)。

SparkSQL:

Apache SparkSQL 是一個(gè)用來(lái)處理結(jié)構(gòu)化數(shù)據(jù)的spark組件。Spark團(tuán)隊(duì)在2014年發(fā)布了Spark SQL,并吸收了一個(gè)的早期的Hive-on-Spark項(xiàng)目Shark,迅速成為最廣泛使用的Spark模塊。它提供了一個(gè)叫做DataFrames的可編程抽象數(shù)據(jù)模型,并且可被視為一個(gè)分布式的SQL查詢引擎。SparkSQL替代的是Hive的查詢引擎,且兼容hive。跟基本的Spark RDD的API不同,Spark SQL中提供的接口將會(huì)提供給Spark更多關(guān)于結(jié)構(gòu)化數(shù)據(jù)和計(jì)算的信息。Spark SQL底層是Spark Core,這種意味著可以輕松地在不同的SQL和API之間進(jìn)行切換。

Presto:

Presto是一個(gè)分布式的數(shù)據(jù)查詢引擎。它本身并不存儲(chǔ)數(shù)據(jù),但是可以接入多種數(shù)據(jù)源,并且支持跨數(shù)據(jù)源的級(jí)聯(lián)查詢。是Facebook于2012年開(kāi)發(fā),2013年開(kāi)源的分布式SQL交互式查詢引擎。Presto是一個(gè)OLAP的工具,擅長(zhǎng)對(duì)海量數(shù)據(jù)進(jìn)行復(fù)雜的分析,但對(duì)于OLTP場(chǎng)景并不擅長(zhǎng),Presto只有計(jì)算分析能力,所以不能把Presto當(dāng)做數(shù)據(jù)庫(kù)來(lái)使用。Presto是一個(gè)低延遲高并發(fā)的內(nèi)存計(jì)算引擎,相比Hive,執(zhí)行效率要高很多。是一種MPP(Massively parallel processing大規(guī)模并行處理)模型,能處理PB級(jí)數(shù)據(jù)。Presto的原理是將數(shù)據(jù)的一些放在內(nèi)存進(jìn)行計(jì)算,完成后取出,再處理另一些數(shù)據(jù),這樣循環(huán)的類似流水線的處理模式。

Kylin:

Apache Kylin是Hadoop大數(shù)據(jù)平臺(tái)上一個(gè)開(kāi)源的分布式分析引擎,提供Hadoop/Spark之上的SQL查詢接口及OLAP能力以支持超大規(guī)模數(shù)據(jù)。它采用Cube預(yù)計(jì)算技術(shù),可以將某些場(chǎng)景下的大數(shù)據(jù) SQL 查詢速度提升到亞秒級(jí)別。Kylin始創(chuàng)于eBay,并在2014年11月加入Apache孵化器,2015年12月8日成為Apache頂級(jí)項(xiàng)目,是第一個(gè)中國(guó)團(tuán)隊(duì)主導(dǎo)貢獻(xiàn)的頂級(jí)項(xiàng)目。

Kylin它的出現(xiàn)就是為了解決大數(shù)據(jù)系統(tǒng)中TB級(jí)別的數(shù)據(jù)分析需求,主要是對(duì)hive中的數(shù)據(jù)進(jìn)行預(yù)計(jì)算,利用hadoop的MapReduce框架實(shí)現(xiàn),它能在亞秒內(nèi)查詢巨大的Hive表。在Kylin中最關(guān)鍵的兩個(gè)流程是Cube的預(yù)計(jì)算過(guò)程和SQL查詢轉(zhuǎn)換成Cube的過(guò)程,盡量多地預(yù)先計(jì)算聚合結(jié)果,在查詢時(shí)盡量利用預(yù)計(jì)算的結(jié)果得出查詢結(jié)果,從而避免直接掃描可能無(wú)限增大的原始記錄。

Impala:

Apache Impala是一個(gè)實(shí)時(shí)交互SQL大數(shù)據(jù)查詢引擎。是Cloudera在受到Google的Dremel啟發(fā)下開(kāi)發(fā)的SQL On Hadoop開(kāi)源MPP查詢工具,2012年10月開(kāi)源,于2017年11月28日晉升為apache頂級(jí)項(xiàng)目。Impala使用完全開(kāi)放的形式融入Hadoop生態(tài),允許用戶使用SQL操作Hadoop中的海量數(shù)據(jù),目前已經(jīng)支持更多存儲(chǔ)選擇,比如:Apache Kudu、Amazon S3、Microsoft ADLS、本地存儲(chǔ)等。

最初Impala僅支持HDFS海量數(shù)據(jù)的交互式分析,其靈活性和領(lǐng)先的分析型數(shù)據(jù)庫(kù)性能推動(dòng)了Impala在全球企業(yè)中的大量部署。為企業(yè)業(yè)務(wù)提供BI和交互式SQL高效率分析支持,讓支持Impala的第三方生態(tài)系統(tǒng)快速增長(zhǎng)。與Apache Kudu項(xiàng)目,進(jìn)一步鞏固了Cloudera在開(kāi)源SQL領(lǐng)域的地位。

Druid:

Apache Druid是一個(gè)開(kāi)源的實(shí)時(shí)大數(shù)據(jù)分析引擎,旨在快速處理大規(guī)模的數(shù)據(jù),并能夠?qū)崿F(xiàn)快速查詢和分析。是Metamarkets推出的一個(gè)分布式內(nèi)存實(shí)時(shí)分析系統(tǒng),用于解決如何在大規(guī)模數(shù)據(jù)集下進(jìn)行快速的、交互式的查詢和分析。2018年2月28日進(jìn)入Apache孵化器。Druid就是為了解決海量數(shù)據(jù)上的實(shí)時(shí)分析,它提供了以交互方式訪問(wèn)數(shù)據(jù)的能力,數(shù)據(jù)可以實(shí)時(shí)攝入,進(jìn)入到Druid后立即可查,同時(shí)數(shù)據(jù)是幾乎是不可變。通常是基于時(shí)序的事實(shí)事件,事實(shí)發(fā)生后進(jìn)入Druid,外部系統(tǒng)就可以對(duì)該事實(shí)進(jìn)行查詢。

Elastic Search:

Elastic Search(ES) 是一個(gè)分布式可擴(kuò)展的實(shí)時(shí)搜索和分析引擎,是一個(gè)建立在Apache Lucene基礎(chǔ)上的搜索引擎.。由Shay Banon在2010年創(chuàng)建并開(kāi)源,后來(lái)Shay和合伙人成立了公司專注打造ES,他們對(duì)ES進(jìn)行了一些商業(yè)化的包裝和支持。它提供了一個(gè)分布式多用戶能力的全文搜索引擎,基于RESTful web接口。

ES的實(shí)現(xiàn)原理主要分為以下幾個(gè)步驟,首先用戶將數(shù)據(jù)提交到ES數(shù)據(jù)庫(kù)中,再通過(guò)分詞控制器去將對(duì)應(yīng)的語(yǔ)句分詞,將其權(quán)重和分詞結(jié)果一并存入數(shù)據(jù),當(dāng)用戶搜索數(shù)據(jù)時(shí)候,再根據(jù)權(quán)重將結(jié)果排名,打分,再將返回結(jié)果呈現(xiàn)給用戶。ES是用Java開(kāi)發(fā)的,是當(dāng)前流行的企業(yè)級(jí)搜索引擎。設(shè)計(jì)用于云計(jì)算中,能夠達(dá)到實(shí)時(shí)搜索,穩(wěn)定,可靠,快速,安裝使用方便。官方客戶端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和許多其他語(yǔ)言中都是可用的。根據(jù)DB-Engines的排名顯示,ES是最受歡迎的企業(yè)搜索引擎,其次是Apache Solr,也是基于Lucene。ES現(xiàn)在是Elastic的ELK家族成員之一。

HAWQ:

Apache HAWQ(Hadoop With Query 帶查詢Hadoop)是一個(gè)Hadoop原生大規(guī)模并行SQL分析引擎,針對(duì)的是分析性應(yīng)用。HAWQ是Pivotal在2012年推出了一款商業(yè)許可的高性能SQL引擎,于2015年6月將項(xiàng)目捐獻(xiàn)給了Apache,并于2015年9月進(jìn)入了Apache孵化器,2018年8月15日成為Apache頂級(jí)項(xiàng)目。HAWQ是Hadoop原生SQL查詢引擎,結(jié)合了MPP數(shù)據(jù)庫(kù)的關(guān)鍵技術(shù)優(yōu)勢(shì)和Hadoop的可擴(kuò)展性和便捷性。官方宣稱HAWQ做OLAP高于Hive和Impala性能4倍以上。它非常適合用于Hadoop平臺(tái)上快速構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)。HAWQ具有大規(guī)模并行處理、完善的SQL兼容性、支持存儲(chǔ)過(guò)程和事務(wù)、出色的性能表現(xiàn)等特性,還可與開(kāi)源數(shù)據(jù)挖掘庫(kù)MADLib機(jī)器學(xué)習(xí)庫(kù)輕松整合,從而使用SQL就能進(jìn)行數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)。

Lucene:

Apache Lucene是一套開(kāi)源的基于Java的用于全文檢索和搜尋的引擎工具包,是一種功能強(qiáng)大且被廣泛使用的搜索引擎,由資深全文檢索專家Doug Cutting在2000年3月創(chuàng)建開(kāi)源,在2001年9月加入Apache的Jakarta家族中。Lucene并不是一個(gè)完整的搜索引擎產(chǎn)品,而是一個(gè)全文檢索引擎的架構(gòu),可以用來(lái)制作搜索引擎產(chǎn)品。它是一個(gè)全文檢索引擎的架構(gòu),提供了完整的創(chuàng)建索引和查詢索引,以及部分文本分析的引擎。

Lucene的目的是為軟件開(kāi)發(fā)人員提供一個(gè)簡(jiǎn)單易用的工具包,以方便在目標(biāo)系統(tǒng)中實(shí)現(xiàn)全文檢索的功能,或者是以此為基礎(chǔ)建立起完整的全文檢索引擎。Lucene提供了一個(gè)簡(jiǎn)單卻強(qiáng)大的應(yīng)用程序接口(API),能夠做全文索引和搜尋,在Java開(kāi)發(fā)環(huán)境里L(fēng)ucene是一個(gè)成熟的免費(fèi)開(kāi)放源代碼工具。

Solr:

Apache Solr 是基于Apache Lucene構(gòu)建的開(kāi)源的企業(yè)搜索平臺(tái)。2004年發(fā)布,2007年1月17日成為Apache頂級(jí)項(xiàng)目。Solr 具有高可靠性,可擴(kuò)展性和容錯(cuò)性,可提供分布式索引,復(fù)制和負(fù)載均衡查詢,自動(dòng)故障轉(zhuǎn)移和恢復(fù)以及集中配置等特性。Solr 是用 Java 編寫(xiě)、運(yùn)行在 Servlet 容器(如 Apache Tomcat 或Jetty)的一個(gè)獨(dú)立的全文搜索服務(wù)器。Solr 采用了Lucene Java 搜索庫(kù)為核心的全文索引和搜索,并具有類似 REST 的 HTTP/XML 和 JSON 的 API。Solr 強(qiáng)大的外部配置功能使得無(wú)需進(jìn)行 Java 編碼,便可對(duì)其進(jìn)行調(diào)整以適應(yīng)多種類型的應(yīng)用程序。Solr 為世界上許多大型互聯(lián)網(wǎng)站點(diǎn)提供搜索和導(dǎo)航功能。

Phoenix:

Apache Phoenix是構(gòu)建在HBase之上的SQL框架,可以使用標(biāo)準(zhǔn)的JDBC的API去代替常規(guī)的HBase客戶端的API去創(chuàng)建表,插入數(shù)據(jù)和查詢HBase數(shù)據(jù)。由Saleforce在2013年捐獻(xiàn)給Apache,2014年5月項(xiàng)目畢業(yè)成為頂級(jí)項(xiàng)目。它一個(gè)Java中間層,可以讓開(kāi)發(fā)者通過(guò)Phoenix可以像使用MySQL等關(guān)系型數(shù)據(jù)庫(kù)一樣使用HBase中的數(shù)據(jù)表。Phoenix會(huì)將用戶編寫(xiě)的SQL查詢編譯為一系列的Scan操作,最終產(chǎn)生通用的JDBC結(jié)果集返回給客戶端。它充分利用了HBase協(xié)處理器和過(guò)濾器等底層,小范圍的查詢?cè)诤撩爰?jí)響應(yīng),千萬(wàn)數(shù)據(jù)的話響應(yīng)速度為秒級(jí)。

9、數(shù)據(jù)收集

Flume:

Apache Flume是一個(gè)分布式海量日志采集、聚合和傳輸系統(tǒng)。Flume最初由Cloudera由開(kāi)發(fā),于2011年6月貢獻(xiàn)給Apache,2012年成為Apache頂級(jí)項(xiàng)目。Flume支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù),同時(shí),F(xiàn)lume提供對(duì)數(shù)據(jù)進(jìn)行簡(jiǎn)單處理,并寫(xiě)到各種數(shù)據(jù)接受方(可定制)的能力。Flume的數(shù)據(jù)流由事件(Event)貫穿始終。事件是Flume的基本數(shù)據(jù)單位,它攜帶日志數(shù)據(jù)(字節(jié)數(shù)組形式)并且攜帶有頭信息,這些Event由Agent外部的Source生成,當(dāng)Source捕獲事件后會(huì)進(jìn)行特定的格式化,然后Source會(huì)把事件推入(單個(gè)或多個(gè))Channel中??梢园袰hannel看作是一個(gè)緩沖區(qū),它將保存事件直到Sink處理完該事件。Sink負(fù)責(zé)持久化日志或者把事件推向另一個(gè)Source。

Filebeat:

Filebeat是本地文件的日志數(shù)據(jù)采集器。Filebeat是一個(gè)輕量級(jí)日志傳輸工具,它監(jiān)視日志目錄或特定日志文件(Tail File),并將它們轉(zhuǎn)發(fā)給Logstash、Elasticsearch、Kafka、Redis等中。其作用是收集業(yè)務(wù)服務(wù)器的日志,輸出到一個(gè)日志系統(tǒng)便于集中管理。Filebeat 是 Elastic Stack 的一部分,因此能夠與 Logstash、Elasticsearch 和 Kibana 無(wú)縫協(xié)作。無(wú)論您要使用 Logstash 轉(zhuǎn)換或充實(shí)日志和文件,還是在 Elasticsearch 中隨意處理一些數(shù)據(jù)分析,亦或在 Kibana 中構(gòu)建和分享儀表板,F(xiàn)ilebeat 都能輕松地將您的數(shù)據(jù)發(fā)送至最關(guān)鍵的地方。Filebeat占用資源少,而且安裝配置也比較簡(jiǎn)單,支持目前各類主流OS及Docker平臺(tái)。

Logstash:

Logstash是一個(gè)具有實(shí)時(shí)管道功能的開(kāi)源數(shù)據(jù)收集引擎。它可以動(dòng)態(tài)地將來(lái)自不同數(shù)據(jù)源的數(shù)據(jù)統(tǒng)一起來(lái),并將數(shù)據(jù)規(guī)范化到選擇的目的地。可以用它來(lái)統(tǒng)一對(duì)應(yīng)用程序日志進(jìn)行收集管理,提供 Web 接口用于查詢和統(tǒng)計(jì)。Logstash作為一個(gè)數(shù)據(jù)管道中間件,支持對(duì)各種類型數(shù)據(jù)的采集與轉(zhuǎn)換,并將數(shù)據(jù)發(fā)送到各種類型的存儲(chǔ)庫(kù)。Logstash現(xiàn)在是Elastic的ELK家族成員之一。

Chukwa:

Apache Chukwa 是一個(gè)開(kāi)源的用于監(jiān)控大型分布式系統(tǒng)的數(shù)據(jù)收集系統(tǒng)。2010年7月14日進(jìn)入Apache孵化器,2013年9月27日成為Apache頂級(jí)項(xiàng)目。它是構(gòu)建在 hadoop 的 hdfs 和 MapReduce 框架之上的,繼承了 Hadoop 的可伸縮性和健壯性。Chukwa 還包含了一個(gè)強(qiáng)大和靈活的工具集,可用于展示、監(jiān)控和分析已收集的數(shù)據(jù)。Chukwa用于管理大型分布式系統(tǒng)的數(shù)據(jù)收集系統(tǒng)(2000+以上的節(jié)點(diǎn), 系統(tǒng)每天產(chǎn)生的監(jiān)控?cái)?shù)據(jù)量在T級(jí)別)。

10、數(shù)據(jù)交換

Sqoop:

Apache Sqoop 是一款數(shù)據(jù)遷移工具,用來(lái)在不同數(shù)據(jù)存儲(chǔ)軟件之間進(jìn)行數(shù)據(jù)傳輸?shù)拈_(kāi)源軟件,它支持多種類型的數(shù)據(jù)儲(chǔ)存軟件。用來(lái)在關(guān)系型數(shù)據(jù)庫(kù)和Hadoop/Hive間進(jìn)行數(shù)據(jù)遷移,方便大量數(shù)據(jù)的導(dǎo)入導(dǎo)出工作。Sqoop底層是通過(guò)MapReduce去實(shí)現(xiàn)的,但只有Map沒(méi)有Reduce。Sqoop項(xiàng)目開(kāi)始于2009年,最早是作為Hadoop的一個(gè)第三方模塊存在,后來(lái)獨(dú)立成為一個(gè)Apache項(xiàng)目,于2012年3月成為Apache頂級(jí)項(xiàng)目。

Kettle:

Kettle是一款國(guó)外開(kāi)源的ETL工具,純java編寫(xiě),可以在Window、Linux、Unix上運(yùn)行,數(shù)據(jù)抽取高效穩(wěn)定。可以將各種類型數(shù)據(jù)作為數(shù)據(jù)流,經(jīng)過(guò)處理后再生成各種類型的數(shù)據(jù)。

DataX:

DataX 是阿里巴巴開(kāi)源的離線數(shù)據(jù)同步工具/平臺(tái),致力于實(shí)現(xiàn)包括關(guān)系型數(shù)據(jù)庫(kù)(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各種異構(gòu)數(shù)據(jù)源之間穩(wěn)定高效的數(shù)據(jù)同步功能。

NIFI:

Apache NiFi 是一個(gè)易于使用、功能強(qiáng)大而且可靠的數(shù)據(jù)拉取、數(shù)據(jù)處理和分發(fā)系統(tǒng)?;赪eb圖形界面,通過(guò)拖拽、連接、配置完成基于流程的編程,實(shí)現(xiàn)數(shù)據(jù)采集等功能。NiFi是美國(guó)國(guó)家安全局NAS開(kāi)發(fā)并使用了8年的可視化數(shù)據(jù)集成產(chǎn)品,2014年貢獻(xiàn)給了Apache社區(qū),2015年成為Apache頂級(jí)項(xiàng)目。

它支持高度可配置的指示圖的數(shù)據(jù)路由、轉(zhuǎn)換和系統(tǒng)中介邏輯,支持從多種數(shù)據(jù)源動(dòng)態(tài)拉取數(shù)據(jù)。NiFi是基于Java的,使用Maven支持包的構(gòu)建管理。NiFi基于Web方式工作,后臺(tái)在服務(wù)器上進(jìn)行調(diào)度。用戶可以為數(shù)據(jù)處理定義為一個(gè)流程,然后進(jìn)行處理,后臺(tái)具有數(shù)據(jù)處理引擎、任務(wù)調(diào)度等組件。

11、消息系統(tǒng)

Pulsar:

Apache Pulsar是一個(gè)開(kāi)源的企業(yè)級(jí)分布式消息系統(tǒng)。項(xiàng)目于2015年由 Yahoo 開(kāi)源,2017年6月提交給 Apache孵化器,2018年9月成為Apache的頂級(jí)項(xiàng)目。Pulsar在消息、計(jì)算和存儲(chǔ)三個(gè)方面進(jìn)行的協(xié)調(diào)、抽象和統(tǒng)一。Pulsar對(duì)pub-sub和 queue兩種模式提供統(tǒng)一的支持,同時(shí)保證了一致性,高性能和易擴(kuò)展性。

Pulsar同時(shí)支持處理實(shí)時(shí)流和消息隊(duì)列,內(nèi)部的 Pulsar-Functions 提供了 Stream-native 的輕量級(jí)計(jì)算框架,保證了數(shù)據(jù)的即時(shí)流式處理。Pulsar借助Apache BookKeeper提供了以 segment 為中心的存儲(chǔ)架構(gòu),保證了存儲(chǔ)的性能,持久性和彈性。Pulsar是無(wú)狀態(tài)的,在Pulsar架構(gòu)中,數(shù)據(jù)的分發(fā)和保存是相互獨(dú)立的。broker 從生產(chǎn)者接收數(shù)據(jù),然后將數(shù)據(jù)發(fā)送給消費(fèi)者,但數(shù)據(jù)是保存在 BookKeeper 中的。Pulsar支持跨域復(fù)制。Pulsar是下一代分布式消息隊(duì)列,有替代Kafka的趨勢(shì)。

Kafka:

Apache Kafka是一個(gè)發(fā)布/訂閱的消息系統(tǒng),由Scala寫(xiě)成。Kafka最初是由LinkedIn開(kāi)發(fā),并于2011年初開(kāi)源,2012年10月從Apache畢業(yè)成為頂級(jí)項(xiàng)目。該項(xiàng)目的目標(biāo)是為處理實(shí)時(shí)數(shù)據(jù)提供一個(gè)統(tǒng)一、高通量、低等待的平臺(tái)。Kafka是一個(gè)分布式的、分區(qū)的、多復(fù)本的日志提交服務(wù)。是目前使用最廣泛的消息系統(tǒng)。

RocketMQ:

Apache RocketMQ是一款分布式、隊(duì)列模型的消息中間件。是阿里巴巴在2012年開(kāi)源,于2016年11月成為Apache孵化項(xiàng)目, 2017年9月25日成為Apache頂級(jí)項(xiàng)目。它借鑒參考了JMS規(guī)范的MQ實(shí)現(xiàn),更參考了優(yōu)秀的開(kāi)源消息中間件Kafka,并且結(jié)合阿里實(shí)際業(yè)務(wù)需求在天貓雙十一的場(chǎng)景,實(shí)現(xiàn)業(yè)務(wù)削峰,分布式事務(wù)的優(yōu)秀框架。它提供了豐富的消息拉取模式,高效的訂閱者水平擴(kuò)展能力,實(shí)時(shí)的消息訂閱機(jī)制,億級(jí)消息堆積能力,且具備了連接其它頂級(jí)開(kāi)源生態(tài)(如Spark、Ignite和Storm等)能力。

ActiveMQ:

Apache ActiveMQ是Apache所提供的一個(gè)開(kāi)源的消息系統(tǒng),完全采用Java來(lái)實(shí)現(xiàn)。它是一款歷史悠久的開(kāi)源項(xiàng)目,2007年成為Apache頂級(jí)項(xiàng)目。已經(jīng)在很多產(chǎn)品中得到應(yīng)用,實(shí)現(xiàn)了JMS1.1規(guī)范,可以和Spring-JMS輕松融合,實(shí)現(xiàn)了多種協(xié)議。有多重語(yǔ)言的成熟的客戶端。不夠輕巧,支持持久化到數(shù)據(jù)庫(kù),對(duì)隊(duì)列數(shù)較多的情況支持不好。

RabbitMQ:

RabbitMQ是基于 AMQP 實(shí)現(xiàn)的一個(gè)開(kāi)源消息組件,主要用于在分布式系統(tǒng)中存儲(chǔ)轉(zhuǎn)發(fā)消息。是一個(gè)消息代理和隊(duì)列服務(wù)器,可以在完全不同的應(yīng)用之間共享數(shù)據(jù)。使用Erlang語(yǔ)言開(kāi)發(fā),具有很好的并發(fā)優(yōu)勢(shì),性能較好。支持消息持久化。

12、任務(wù)調(diào)度

Azkaban:

Azkaban是由Linkedin開(kāi)源的一個(gè)批量工作流任務(wù)調(diào)度器。使用Java開(kāi)發(fā)。用于在一個(gè)工作流內(nèi)以一個(gè)特定的順序運(yùn)行一組工作和流程。Azkaban定義了一種KV文件格式來(lái)建立任務(wù)之間的依賴關(guān)系,并提供一個(gè)易于使用的web用戶界面維護(hù)和跟蹤工作流。Azkaban通過(guò)Web瀏覽器在GUI中進(jìn)行基于時(shí)間的調(diào)度,將所有正在運(yùn)行的工作流的狀態(tài)保存在其內(nèi)存中。

Oozie:

Apache Oozie是一個(gè)基于Hadoop的企業(yè)級(jí)工作流調(diào)度框架。Oozie是Cloudeara貢獻(xiàn)給Apache的頂級(jí)項(xiàng)目。它關(guān)注靈活性和創(chuàng)建復(fù)雜的工作流程,允許由時(shí)間,事件或數(shù)據(jù)可用性觸發(fā)作業(yè),可以通過(guò)命令行、Java API、Web瀏覽器,以及GUI操作。它以XML的形式寫(xiě)調(diào)度流程,可以調(diào)度MR、Hive、Spark、Pig、Shell、Jar等等。Oozie將所有正在運(yùn)行的工作流的狀態(tài)保存SQL數(shù)據(jù)庫(kù),僅將其內(nèi)存用于狀態(tài)事務(wù)。相比于Azkaban,Oozie屬于重量級(jí)的任務(wù)調(diào)度工具。

Airflow:

Apache Airflow是一個(gè)靈活,可擴(kuò)展的工作流自動(dòng)化和調(diào)度系統(tǒng),是基于DAG的一種調(diào)度器,可編譯和管理數(shù)百PB的數(shù)據(jù)。Airflow最初由Airbnb于2014年創(chuàng)建,2016年3月提交給Apache孵化器,2019年1月成為Apache頂級(jí)項(xiàng)目。Airflow可以輕松地協(xié)調(diào)復(fù)雜的計(jì)算工作流程,通過(guò)智能調(diào)度,數(shù)據(jù)庫(kù)和依賴關(guān)系管理,錯(cuò)誤處理和日志記錄,可以自動(dòng)化從單個(gè)服務(wù)器到大型群集的資源管理。

該項(xiàng)目是用Python編寫(xiě)的,具有高度可擴(kuò)展性,能夠運(yùn)行用其他語(yǔ)言編寫(xiě)的任務(wù),并允許與常見(jiàn)的體系結(jié)構(gòu)和項(xiàng)目集成,如AWS S3,Docker,Kubernetes,MySQL,Postgres等。據(jù)悉,Apache Airflow 目前正被 200 多個(gè)組織使用,包括 Adobe、Airbnb、Astronomer、Etsy、Google、ING、Lyft、NYC City Planning、Paypal、Polidea、Qubole、Quizlet、Reddit、Reply、Solita、Square、Twitter 等。

13、數(shù)據(jù)治理

Ranger:

Apache Ranger 是一個(gè)用在 Hadoop 平臺(tái)上并提供操作、監(jiān)控、管理綜合數(shù)據(jù)安全的框架,它提供一個(gè)集中的管理機(jī)制,管理基于Apache Hadoop生態(tài)圈的所有數(shù)據(jù)權(quán)限。Ranger是由Hortonworks所主導(dǎo),2014年7月24日進(jìn)入Apache孵化,2017年1月18日成為Apache的頂級(jí)項(xiàng)目。隨著Apache YARN的出現(xiàn),Hadoop平臺(tái)現(xiàn)在可以支持一個(gè)真正的數(shù)據(jù)湖體系結(jié)構(gòu)。企業(yè)可以在多租戶環(huán)境中運(yùn)行多個(gè)工作負(fù)載,因此, Hadoop中的數(shù)據(jù)安全性需要發(fā)展。

Apache Ranger 提供最全面的安全覆蓋,本地支持眾多 Apache 項(xiàng)目,包括Atlas、HDFS、HBase、Hive、Kafka、Knox、NiFi、Solr、Storm 和 YARN。Ranger 通過(guò)訪問(wèn)控制策略提供了一種標(biāo)準(zhǔn)的授權(quán)方法。作為標(biāo)準(zhǔn),Ranger提供了一種集中式的組件,用于審計(jì)用戶的訪問(wèn)行為和管理組件間的安全交互行為。Ranger 使用了一種基于屬性的方法定義和強(qiáng)制實(shí)施安全策略。當(dāng)與 Apache Hadoop 的數(shù)據(jù)治理解決方案和元數(shù)據(jù)倉(cāng)儲(chǔ)組件Apache Atlas一起使用時(shí),它可以定義一種基于標(biāo)簽的安全服務(wù),通過(guò)使用標(biāo)簽對(duì)文件和數(shù)據(jù)資產(chǎn)進(jìn)行分類,并控制用戶和用戶組對(duì)一系列標(biāo)簽的訪問(wèn)。

Sentry:

Apache Sentry是一個(gè)為Hadoop集群元數(shù)據(jù)和數(shù)據(jù)存儲(chǔ)提供集中、細(xì)粒度的訪問(wèn)控制項(xiàng)目。Sentry是由Cloudera開(kāi)發(fā),2013年8月成為Apache的孵化項(xiàng)目,2016年3月16日成為Apache頂級(jí)項(xiàng)目。初衷是為了讓用戶能夠細(xì)粒度的控制Hadoop系統(tǒng)中的數(shù)據(jù),所以Sentry對(duì)HDFS,Hive以及同樣由Cloudera開(kāi)發(fā)的Impala有著很好的支持性。

Sentry旨在成為Hadoop各組件的可插拔授權(quán)引擎。它允許您定義授權(quán)規(guī)則以驗(yàn)證用戶或應(yīng)用程序?qū)adoop資源的訪問(wèn)請(qǐng)求。Sentry是高度模塊化的,可以支持Hadoop中各種數(shù)據(jù)模型的授權(quán)。Sentry是一個(gè)RPC服務(wù),將認(rèn)證元數(shù)據(jù)信息存儲(chǔ)在關(guān)系型數(shù)據(jù)庫(kù),并提供RPC接口檢索和操作權(quán)限。

Atlas:

Apache Atlas是Apache Hadoop的數(shù)據(jù)和元數(shù)據(jù)治理的框架,是Hortonworks 公司聯(lián)合其他廠商與用戶于2015年發(fā)起數(shù)據(jù)治理倡議,2015年5月5日進(jìn)入Apache孵化,2017年6月21日成為Apache頂級(jí)項(xiàng)目。是為解決Hadoop生態(tài)系統(tǒng)的元數(shù)據(jù)治理問(wèn)題而產(chǎn)生的開(kāi)源項(xiàng)目。它為Hadoop集群提供了包括數(shù)據(jù)分類、集中策略引擎、數(shù)據(jù)血緣、安全和生命周期管理在內(nèi)的元數(shù)據(jù)治理核心登能力。

Atlas是一組可伸縮和可擴(kuò)展的核心基礎(chǔ)治理服務(wù),使企業(yè)能夠有效和高效地滿足Hadoop中的遵從性需求,并允許與整個(gè)企業(yè)數(shù)據(jù)生態(tài)系統(tǒng)進(jìn)行集成。Atlas用于管理共享元數(shù)據(jù)、數(shù)據(jù)分級(jí)、審計(jì)、安全性以及數(shù)據(jù)保護(hù)等方面,與Apache Ranger整合,用于數(shù)據(jù)權(quán)限控制策略。

14、數(shù)據(jù)可視化

Kibana:

Kibana 是一個(gè)設(shè)計(jì)出來(lái)用于和 Elasticsearch 一起使用的開(kāi)源的分析與可視化平臺(tái),可以用 Kibana 搜索、查看、交互存放在Elasticsearch 索引里的數(shù)據(jù),使用各種不同的圖表、表格、地圖等展示高級(jí)數(shù)據(jù)分析與可視化,基于瀏覽器的接口使你能快速創(chuàng)建和分享實(shí)時(shí)展現(xiàn)Elasticsearch查詢變化的動(dòng)態(tài)儀表盤(pán),讓大量數(shù)據(jù)變得簡(jiǎn)單,容易理解。Kibana 現(xiàn)在是Elastic的ELK家族成員之一。

D3.js:

D3(Data-Driven Documents 數(shù)據(jù)驅(qū)動(dòng)文檔)是一個(gè)開(kāi)源數(shù)據(jù)可視化項(xiàng)目,由紐約時(shí)報(bào)的工程師在2011年2月首次發(fā)布。D3其實(shí)就是一個(gè)JavaScript的函數(shù)庫(kù),被稱為一個(gè)互動(dòng)和動(dòng)態(tài)的數(shù)據(jù)可視化庫(kù)網(wǎng)絡(luò)。D3 項(xiàng)目的代碼托管于 GitHubJavaScript 文件的后綴名通常為 .js,故 D3 也常使用 D3.js 稱呼。D3 提供了各種簡(jiǎn)單易用的函數(shù),大大簡(jiǎn)化了 JavaScript 操作數(shù)據(jù)的難度。由于它本質(zhì)上是 JavaScript ,所以用 JavaScript 也可以實(shí)現(xiàn)所有功能的,但它能大大減小了工作量,尤其是在數(shù)據(jù)可視化方面,D3 已經(jīng)將生成可視化的復(fù)雜步驟精簡(jiǎn)到了幾個(gè)簡(jiǎn)單的函數(shù),只需要輸入幾個(gè)簡(jiǎn)單的數(shù)據(jù),就能夠轉(zhuǎn)換為各種絢麗的圖形。D3利用可縮放矢量圖形或SVG格式,允許您渲染可放大或縮小的形狀,線條和填充,而不會(huì)降低質(zhì)量。

ECharts:

ECharts(Enterprise Charts 商業(yè)產(chǎn)品圖表庫(kù))是一個(gè)提供商業(yè)產(chǎn)品常用圖表的純Javascript的圖表庫(kù)。由百度開(kāi)源,于2018年1月進(jìn)入Apache孵化器。它可以流暢的運(yùn)行在 PC 和移動(dòng)設(shè)備上,兼容當(dāng)前絕大部分瀏覽器,底層依賴輕量級(jí)的矢量圖形庫(kù) ZRender,提供直觀,交互豐富,可高度個(gè)性化定制的數(shù)據(jù)可視化圖表。

15、數(shù)據(jù)挖掘

Mahout:

Apache Mahout 是機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘的一個(gè)分布式框架,它是基于hadoop之上的。它提供一些可擴(kuò)展的機(jī)器學(xué)習(xí)領(lǐng)域經(jīng)典算法的實(shí)現(xiàn),旨在幫助開(kāi)發(fā)人員更加方便快捷地創(chuàng)建智能應(yīng)用程序。Mahout包含許多實(shí)現(xiàn),包括聚類、分類、推薦過(guò)濾、頻繁子項(xiàng)挖掘,主要核心的三大算法為推薦,聚類及分類算法。此外,通過(guò)使用 Apache Hadoop 庫(kù),Mahout 可以有效地?cái)U(kuò)展到云中。

MADlib:

Apache MADlib 是一個(gè)基于SQL的數(shù)據(jù)庫(kù)內(nèi)置的可擴(kuò)展的機(jī)器學(xué)習(xí)庫(kù)。是Pivotal公司與UCBerkeley合作開(kāi)發(fā),2015年9月進(jìn)入Apache孵化器,于2017年7月19日畢業(yè)成為Apache頂級(jí)項(xiàng)目。MADlib提供了精確的數(shù)據(jù)并行實(shí)現(xiàn)、統(tǒng)計(jì)和機(jī)器學(xué)習(xí)方法對(duì)結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)進(jìn)行分析。提供了豐富的分析模型,包括回歸分析,決策樹(shù),隨機(jī)森林,貝葉斯分類,向量機(jī),風(fēng)險(xiǎn)模型,KMEAN聚集,文本挖掘,數(shù)據(jù)校驗(yàn)等。

In-Database Analytics的特性使其大大擴(kuò)展了數(shù)據(jù)庫(kù)的分析功能,充分利用MPP架構(gòu)使其能夠快速處理海量數(shù)據(jù)集。MADlib 可以與Apache HAWQ、PostgreSQL和Greenplum等數(shù)據(jù)庫(kù)系統(tǒng)無(wú)縫集成。DBAer不用現(xiàn)學(xué)Python、R或MATLAB,只要使用MADlib,用SQL就能實(shí)現(xiàn)簡(jiǎn)單的數(shù)據(jù)挖掘。

Spark MLlib:

Apache Spark MLlib是Spark的機(jī)器學(xué)習(xí)庫(kù),是Apache Spark的一個(gè)組成模塊。MLlib由一些通用的學(xué)習(xí)算法和工具組成,包括分類、回歸、聚類、協(xié)同過(guò)濾、降維等,同時(shí)還包括底層的優(yōu)化原語(yǔ)和高層的管道API。Spark設(shè)計(jì)的初衷就是用來(lái)進(jìn)行迭代計(jì)算。它基于內(nèi)存的計(jì)算模型天生就擅長(zhǎng)迭代計(jì)算,多個(gè)步驟計(jì)算直接在內(nèi)存中完成,只有在必要時(shí)才會(huì)操作磁盤(pán)和網(wǎng)絡(luò),所以說(shuō)Spark正是機(jī)器學(xué)習(xí)的理想的平臺(tái)。

利用Spark基于內(nèi)存迭代計(jì)算、機(jī)器學(xué)習(xí)的優(yōu)勢(shì),使用Spark處理數(shù)據(jù)挖掘?qū)?huì)更顯得有價(jià)值。MLllib目前分為兩個(gè)代碼包:spark.mllib庫(kù)基于RDD的原始算法API;spark.ml庫(kù)基于DataaFrame的高層次的API。Spark2.0以后,Spark MLlib進(jìn)入維護(hù)不再更新,預(yù)計(jì)Spark3.0以后被廢除,完全轉(zhuǎn)向Spark ML。

Tensorflow:

TensorFlow是一個(gè)開(kāi)源的基于數(shù)據(jù)流圖的機(jī)器學(xué)習(xí)框架,它是Google Brain的第二代機(jī)器學(xué)習(xí)系統(tǒng),常被應(yīng)用于各種感知、語(yǔ)言理解、語(yǔ)音識(shí)別、圖像識(shí)別等多項(xiàng)機(jī)器深度學(xué)習(xí)領(lǐng)域。TensorFlow是一個(gè)采用數(shù)據(jù)流圖(Data Flow Graphs),用于數(shù)值計(jì)算的開(kāi)源軟件庫(kù)。節(jié)點(diǎn)(Nodes)在圖中表示數(shù)學(xué)操作,張量(Tensor)代表了多維數(shù)組,圖中的線(Edges)則表示在節(jié)點(diǎn)間相互聯(lián)系的多維數(shù)據(jù)數(shù)組,即張量,流(Flow)代表了基于數(shù)據(jù)流圖的計(jì)算。它靈活的架構(gòu)讓你可以在多種平臺(tái)上展開(kāi)計(jì)算,例如臺(tái)式計(jì)算機(jī)中的一個(gè)或多個(gè)CPU(或GPU),服務(wù)器,移動(dòng)設(shè)備等等。TensorFlow 最初由Google大腦小組(隸屬于Google機(jī)器智能研究機(jī)構(gòu))的研究員和工程師們開(kāi)發(fā)出來(lái),用于機(jī)器學(xué)習(xí)和深度神經(jīng)網(wǎng)絡(luò)方面的研究,但這個(gè)系統(tǒng)的通用性使其也可廣泛用于其他計(jì)算領(lǐng)域。

Keras:

Keras是一個(gè)基于TensorFlow的深度學(xué)習(xí)庫(kù),其特點(diǎn)是對(duì)用戶友好的,并且能夠提供簡(jiǎn)易和快速的原型設(shè)計(jì)。Keras是一個(gè)由Python編寫(xiě)的開(kāi)源人工神經(jīng)網(wǎng)絡(luò)庫(kù),可以作為Tensorflow、Microsoft-CNTK和Theano的高階應(yīng)用程序接口,進(jìn)行深度學(xué)習(xí)模型的設(shè)計(jì)、調(diào)試、評(píng)估、應(yīng)用和可視化。Keras 為支持快速實(shí)驗(yàn)而生,能夠把你的idea迅速轉(zhuǎn)換為結(jié)果。

16、云平臺(tái)

AWS S3:

Amazon S3(Amazon Simple Storage Service )是一種對(duì)象存儲(chǔ)服務(wù),提供行業(yè)領(lǐng)先的可擴(kuò)展性、數(shù)據(jù)可用性、安全性和性能。這意味著各種規(guī)模和行業(yè)的客戶都可以使用它來(lái)存儲(chǔ)和保護(hù)各種用例(如網(wǎng)站、移動(dòng)應(yīng)用程序、備份和還原、存檔、企業(yè)應(yīng)用程序、IoT 設(shè)備和大數(shù)據(jù)分析)的任意數(shù)量的數(shù)據(jù)。Amazon S3 提供了易于使用的管理功能,因此您可以組織數(shù)據(jù)并配置精細(xì)調(diào)整過(guò)的訪問(wèn)控制以滿足特定的業(yè)務(wù)、組織和合規(guī)性要求。

GCP:

GCP(Google Cloud Platform)是Google提供的一套云計(jì)算服務(wù)。它提供一系列模塊化云服務(wù),包括計(jì)算、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)分析和機(jī)器學(xué)習(xí)。Google把運(yùn)行各種網(wǎng)絡(luò)應(yīng)用所需要的一切基礎(chǔ)架構(gòu),包括服務(wù)器、操作系統(tǒng)、應(yīng)用軟件、網(wǎng)站架構(gòu)、API接口、數(shù)據(jù)庫(kù)、CDN、虛擬專用網(wǎng)絡(luò)、物聯(lián)網(wǎng)、大數(shù)據(jù)等等全部預(yù)先準(zhǔn)備好。你只需要在google云平臺(tái)上注冊(cè)一個(gè)帳號(hào),即可在分布在全球各地?cái)?shù)十個(gè)google機(jī)房使用所有的基礎(chǔ)架構(gòu)服務(wù)。

Microsoft Azure:

Azure是Microsoft提供的企業(yè)級(jí)云計(jì)算平臺(tái)。Azure的主要目標(biāo)是為開(kāi)發(fā)者提供一個(gè)平臺(tái),幫助開(kāi)發(fā)可運(yùn)行在云服務(wù)器、數(shù)據(jù)中心、Web和PC上的應(yīng)用程序。云計(jì)算的開(kāi)發(fā)者能使用微軟全球數(shù)據(jù)中心的儲(chǔ)存、計(jì)算能力和網(wǎng)絡(luò)基礎(chǔ)服務(wù)。 

責(zé)任編輯:梁菲 來(lái)源: 今日頭條
相關(guān)推薦

2017-04-28 08:13:08

大數(shù)據(jù)框架HDFS

2020-09-08 12:38:08

大數(shù)據(jù)數(shù)據(jù)分析工具

2013-08-14 09:48:02

微軟REEF

2019-06-03 14:35:38

大數(shù)據(jù)數(shù)據(jù)開(kāi)發(fā)語(yǔ)言

2021-02-10 16:03:19

大數(shù)據(jù)開(kāi)源框架

2018-06-06 15:00:27

開(kāi)源大數(shù)據(jù)大數(shù)據(jù)項(xiàng)目

2013-02-19 10:01:53

大數(shù)據(jù)大數(shù)據(jù)科學(xué)主流解決方案

2021-03-02 16:25:52

微服務(wù)架構(gòu)技術(shù)

2014-04-22 09:34:12

大數(shù)據(jù)

2016-03-28 10:24:49

數(shù)據(jù)湖大數(shù)據(jù)技術(shù)開(kāi)源

2020-10-26 07:05:02

大數(shù)據(jù)管道編排編排框架

2012-07-04 11:47:39

大數(shù)據(jù)開(kāi)源

2020-11-11 11:11:23

Linux內(nèi)核源碼

2021-03-12 14:52:18

插件VS Code工具

2016-09-29 15:49:08

hadoop大數(shù)據(jù)領(lǐng)域

2012-07-11 13:30:42

大數(shù)據(jù)開(kāi)源

2017-02-15 14:36:12

開(kāi)源大數(shù)據(jù)TensorFlowO

2016-08-12 14:50:29

開(kāi)源HadoopSpark

2012-09-13 09:52:14

大數(shù)據(jù)數(shù)據(jù)應(yīng)用開(kāi)源工具

2019-04-08 17:16:43

大數(shù)據(jù)開(kāi)源工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)