Apache大數(shù)據(jù)項(xiàng)目
ASF 正式創(chuàng)建于1999年,主要是為公眾提供有用的免費(fèi)軟件,并為軟件開發(fā)者社區(qū)提供支持和服務(wù),它的創(chuàng)建者是一個(gè)自稱為Apache組織的群體。早在1995年,Apache組織的成員聚集在一起,在美國伊利諾伊大學(xué)超級計(jì)算機(jī)應(yīng)用程序國家中心開發(fā)的NCSA HTTPd服務(wù)器的基礎(chǔ)上開發(fā)與維護(hù)了一個(gè)叫Apache的HTTP服務(wù)器。早期,NCSA HTTPd服務(wù)器是一個(gè)叫Rob McCool的程序員開發(fā)的,但是后來慢慢失去了興趣,導(dǎo)致這個(gè)功能強(qiáng)大又好用的服務(wù)器沒人維護(hù)。于是一些愛好者和用戶就自發(fā)開始維護(hù)起來,并不斷改善功能、發(fā)布版本。為了更好的進(jìn)行溝通,組織中的一位成員創(chuàng)建了一個(gè)郵件組,把維護(hù)工作高效的組織起來,并把這個(gè)軟件叫 Apache 服務(wù)器。這也是為什么Apache的所有項(xiàng)目至今仍然以郵件列表作為溝通的主要方式。Apache的命名來源于北美當(dāng)?shù)匾恢蠥pache的印第安部落,這支部落以高超的軍事素養(yǎng)和超人的忍耐力著稱,19世紀(jì)后半期對侵占他們領(lǐng)土的進(jìn)行了反抗。為了對這支部落表示敬仰,就取了這個(gè)名字。但這里還流傳著一個(gè)小故事,說是在NCSA HTTPd基礎(chǔ)上,大家都通過打補(bǔ)丁不斷在修改這個(gè)軟件,被戲稱為A Patchy Server,和Apache Server讀音很像。

Apache Airavata
Airavata是目前用來建立科學(xué)網(wǎng)關(guān)的軟件工具包,但具有更廣泛的潛在用途。它提供的功能組成,管理,執(zhí)行和監(jiān)測小范圍從本地集群,以國家電網(wǎng)和云計(jì)算的計(jì)算資源進(jìn)行大規(guī)模的應(yīng)用和工作流程。小工具接口,Airavata后端服務(wù)可以部署在開放社會的容器,如Apache Rave 和修改,以滿足他們的需求。 airavata構(gòu)建面向服務(wù)的計(jì)算,分布式消息,和工作流程的組成和業(yè)務(wù)流程的一般概念。
Apache Ambari
Apache Ambari是一種基于Web的工具,支持Apache Hadoop集群的供應(yīng)、管理和監(jiān)控。Ambari已支持大多數(shù)Hadoop組件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeeper、Sqoop和Hcatalog等。
Apache Beam
Apache Beam是 Apache 軟件基金會于2017年1 月 10 日對外宣布的開源平臺。Beam 為創(chuàng)建復(fù)雜數(shù)據(jù)平行處理管道,提供了一個(gè)可移動(兼容性好)的 API 層。這層 API 的核心概念基于 Beam 模型(以前被稱為 Dataflow 模型),并在每個(gè) Beam 引擎上不同程度得執(zhí)行。
Apache Avro
Apache Avro 是一個(gè)中立性語言,它是有Hadoop之父Doug Cutting開發(fā)而來。因?yàn)閔adoop的Writerable的串行化只支持Java語言,即非跨語言。所以Doug Cutting開發(fā)了Avro ,它是一個(gè)語言獨(dú)立的數(shù)據(jù)結(jié)構(gòu),也就是說它是跨語言的。
它有以下特點(diǎn):
第一:豐富的數(shù)據(jù)結(jié)構(gòu)。
第二:緊湊,快速的二進(jìn)制數(shù)據(jù)格式。
第三:一個(gè)容器文件,用于存儲持久性數(shù)據(jù)。
第四:遠(yuǎn)程過程調(diào)用(RPC)。
第五:與動態(tài)語言的簡單集成。讀取或?qū)懭霐?shù)據(jù)文件不需要代碼生成,也不需要使用或?qū)崿F(xiàn)RPC協(xié)議。代碼生成是一種可選的優(yōu)化,只有靜態(tài)類型語言才值得實(shí)現(xiàn)。
Apache Beam
Apache Beam是ApacheBeam是統(tǒng)一批處理(Batch)模式和數(shù)據(jù)流(Stream)處理模式的標(biāo)準(zhǔn). 。Beam 為創(chuàng)建復(fù)雜數(shù)據(jù)平行處理管道,提供了一個(gè)可移動(兼容性好)的 API 層。這層 API 的核心概念基于 Beam 模型(以前被稱為 Dataflow 模型),并在每個(gè) Beam 引擎上不同程度得執(zhí)行。
Apache Bigtop
Bigtop 是一個(gè)工程的系統(tǒng)開發(fā)包,對Apache Hadoop生態(tài)系統(tǒng)的測試。 Bigtop的主要目標(biāo)就是構(gòu)建一個(gè)Apache Hadoop生態(tài)系統(tǒng)的包和交互式測試的社區(qū)。這個(gè)包括對各類不同級別工程進(jìn)行測試(包,平臺,運(yùn)行時(shí)間,升級等...),它由社區(qū)以關(guān)注系統(tǒng)作為一個(gè)整體開發(fā)而來。
Apache BookKeeper
Apache BookKeeper 是一個(gè)可以方便擴(kuò)展,高可用,低延遲的存儲系統(tǒng)。BookKeeper 專門為 append-only 的工作模式提供了優(yōu)化,在以下的應(yīng)用場景中非常適用:
WAL (Write-Ahead-Logging), 例如 HDFS 的 NameNode 。
消息存儲系統(tǒng),例如 Apache Pulsar 。
Offset/Cursor 存儲系統(tǒng),例如在 Apache Pulsar 中用來存儲消息消費(fèi)位置。
Object/Blob Store 對象存儲系統(tǒng),例如存儲狀態(tài)機(jī)的 snapshots 。
Apache Calcite
Apache Calcite 是一款開源SQL解析工具, 可以將各種SQL語句解析成抽象語法術(shù)AST(Abstract Syntax Tree), 之后通過操作AST就可以把SQL中所要表達(dá)的算法與關(guān)系體現(xiàn)在具體代碼之中。Calcite的生前為Optiq(也為Farrago), 為Java語言編寫, 通過十多年的發(fā)展, 在2013年成為Apache旗下頂級項(xiàng)目,并還在持續(xù)發(fā)展中, 該項(xiàng)目的創(chuàng)始人為Julian Hyde, 其擁有多年的SQL引擎開發(fā)經(jīng)驗(yàn), 目前在Hortonworks工作, 主要負(fù)責(zé)Calcite項(xiàng)目的開發(fā)與維護(hù)。目前, 使用Calcite作為SQL解析與處理引擎有Hive、Drill、Flink、Phoenix和Storm,可以肯定的是還會有越來越多的數(shù)據(jù)處理引擎采用Calcite作為SQL解析工具。
Apache CouchDB
CouchDB 是一個(gè)開源的面向文檔的數(shù)據(jù)庫管理系統(tǒng),可以通過 RESTful JavaScript Object Notation (JSON) API 訪問。術(shù)語 “Couch” 是 “Cluster Of Unreliable Commodity Hardware” 的首字母縮寫,它反映了 CouchDB 的目標(biāo)具有高度可伸縮性,提供了高可用性和高可靠性,即使運(yùn)行在容易出現(xiàn)故障的硬件上也是如此。
一、CouchDB是分布式的數(shù)據(jù)庫,他可以把存儲系統(tǒng)分布到n臺物理的節(jié)點(diǎn)上面,并且很好的協(xié)調(diào)和同步節(jié)點(diǎn)之間的數(shù)據(jù)讀寫一致性。這當(dāng)然也得靠Erlang無與倫比的并發(fā)特性才能做到。對于基于web的大規(guī)模應(yīng)用文檔應(yīng)用,分布式可以讓它不必像傳統(tǒng)的關(guān)系數(shù)據(jù)庫那樣分庫拆表,在應(yīng)用代碼層進(jìn)行大量的改動。
二、CouchDB是面向文檔的數(shù)據(jù)庫,存儲半結(jié)構(gòu)化的數(shù)據(jù),比較類似lucene的index結(jié)構(gòu),特別適合存儲文檔,因此很適合CMS,電話本,地址本等應(yīng)用,在這些應(yīng)用場合,文檔數(shù)據(jù)庫要比關(guān)系數(shù)據(jù)庫更加方便,性能更好。
三、CouchDB支持REST API,可以讓用戶使用JavaScript來操作CouchDB數(shù)據(jù)庫,也可以用JavaScript編寫查詢語句,我們可以想像一下,用AJAX技術(shù)結(jié)合CouchDB開發(fā)出來的CMS系統(tǒng)會是多么的簡單和方便。
Apache Crunch
Apache Crunch是FlumeJava的實(shí)現(xiàn),為不太方便直接開發(fā)和使用的MapReduce程序,開發(fā)一套MR流水線,具備數(shù)據(jù)表示模型,提供基礎(chǔ)原語和高級原語,根據(jù)底層執(zhí)行引擎對MR Job的執(zhí)行進(jìn)行優(yōu)化。從分布式計(jì)算角度看,Crunch提供的許多計(jì)算原語,可以在Spark、Hive、Pig等地方找到很多相似之處,而本身的數(shù)據(jù)讀寫,序列化處理,分組、排序、聚合的實(shí)現(xiàn),類似MapReduce各階段的拆分都可以在Hadoop里找到影子。
Apache DataFu
Apache DataFu 項(xiàng)目是一個(gè)用于 Hadoop 的類庫集合,早期的定位是作為 Pig 項(xiàng)目的用戶定義函數(shù)集(UDF )。相對于更加通用的 UDF 集如 Piggybank ,Datafu 更側(cè)重于數(shù)據(jù)挖掘和統(tǒng)計(jì) 類的函數(shù),例如分位數(shù)計(jì)算和取樣方法。Hourglass 是用于 MapReduce 的類庫,為作業(yè)提供了處理增量數(shù)據(jù)的能力。其處理方式一般是在 HDFS 中保存上一個(gè)作業(yè)的狀態(tài),并用它來處理新的輸入?,F(xiàn)在這兩個(gè)項(xiàng)目都成為孵化器的一部分。
Apache Drill
Apache Drill是一個(gè)開源的,對于Hadoop和NoSQL低延遲的SQL查詢引擎。Apache Drill 實(shí)現(xiàn)了 Google's Dremel.那么什么是Google's Dremel?網(wǎng)絡(luò)中一段描述:Dremel 是Google 的"交互式"數(shù)據(jù)分析系統(tǒng)??梢越M建成規(guī)模上千的集群,處理PB級別的數(shù)據(jù)。MapReduce處理一個(gè)數(shù)據(jù),需要分鐘級的時(shí)間。作為MapReduce的發(fā)起人,Google開發(fā)了Dremel將處理時(shí)間縮短到秒級,作為MapReduce的有力補(bǔ)充。Dremel作為Google BigQuery的report引擎,獲得了很大的成功。
Apache Edgent
Apache Edgent 是一種編程模型和具有微內(nèi)核風(fēng)格的運(yùn)行時(shí),可嵌入到網(wǎng)關(guān)和小型的物聯(lián)網(wǎng)設(shè)備中。Apache Edgent 能用于對來自器材、車輛、系統(tǒng)、應(yīng)用、設(shè)備和傳感器(例如樹莓派或智能手機(jī))的連續(xù)數(shù)據(jù)流進(jìn)行實(shí)時(shí)分析。通過與集中式分析系統(tǒng)協(xié)同工作,Apache Edgent 可在整個(gè)物聯(lián)網(wǎng)生態(tài)系統(tǒng)中提供高效、及時(shí)的分析:從中心到邊緣。Edgent 是面向邊緣設(shè)備的開源編程模型和運(yùn)行時(shí),可以分析設(shè)備上的數(shù)據(jù)和事件。在邊緣端進(jìn)行分析有以下好處:
減少傳輸?shù)椒治龇?wù)器的數(shù)據(jù)量
減少存儲的數(shù)據(jù)量
Apache Falcon
Apache Falcon是一個(gè)開源的hadoop數(shù)據(jù)生命周期管理框架, 它提供了數(shù)據(jù)源 (Feed) 的管理服務(wù),如生命周期管理,備份,存檔到云等,通過Web UI可以很容易地配置這些預(yù)定義的策略, 能夠大大簡化hadoop集群的數(shù)據(jù)流管理。
Apache Zeppelin
Apache Zeppelin提供了web版的類似ipython的notebook,用于做數(shù)據(jù)分析和可視化。背后可以接入不同的數(shù)據(jù)處理引擎,包括spark, hive, tajo等,原生支持scala, java, shell, markdown等。它的整體展現(xiàn)和使用形式和Databricks Cloud是一樣的,就是來自于當(dāng)時(shí)的demo?;趙eb的筆記本,支持交互式數(shù)據(jù)分析。你可以用SQL、Scala等做出數(shù)據(jù)驅(qū)動的、交互、協(xié)作的文檔。(類似于ipython notebook,可以直接在瀏覽器中寫代碼、筆記并共享)
