(7)分析框架SparkSQL
SparkSQL的前身是Shark,給熟悉RDBMS但又不理解MapReduce的技術(shù)人員提供快速上手的工具,Hive應(yīng)運而生,它是當(dāng)時唯一運行在Hadoop上的SQL-on-Hadoop工具。但是MapReduce計算過程中大量的中間磁盤落地過程消耗了大量的I/O,降低的運行效率,為了提高SQL-on-Hadoop的效率,大量的SQL-on-Hadoop工具開始產(chǎn)生。其中Shark是伯克利實驗室Spark生態(tài)環(huán)境的組件之一,它修改了下圖所示的右下角的內(nèi)存管理、物理計劃、執(zhí)行三個模塊,并使之能運行在Spark引擎上,從而使得SQL查詢的速度得到10-100倍的提升。
但是,隨著Spark的發(fā)展,對于野心勃勃的Spark團隊來說,Shark對于Hive的太多依賴(如采用Hive的語法解析器、查詢優(yōu)化器等等),制約了Spark的One Stack Rule Them All的既定方針,制約了Spark各個組件的相互集成,所以提出了SparkSQL項目。SparkSQL拋棄原有Shark的代碼,汲取了Shark的一些優(yōu)點,如內(nèi)存列存儲(In-Memory Columnar Storage)、Hive兼容性等,重新開發(fā)了SparkSQL代碼;由于擺脫了對Hive的依賴性,SparkSQL無論在數(shù)據(jù)兼容、性能優(yōu)化、組件擴展方面都得到了極大的方便,真可謂“退一步,海闊天空”。2014年6月1日Shark項目和SparkSQL項目的主持人Reynold Xin宣布:停止對Shark的開發(fā),團隊將所有資源放SparkSQL項目上,至此,Shark的發(fā)展畫上了句號。
(8)分析框架Impala
Impala是Cloudera公司主導(dǎo)開發(fā)的新型查詢系統(tǒng),它提供SQL語義,能查詢存儲在Hadoop的HDFS和HBase中的PB級大數(shù)據(jù)。已有的Hive系統(tǒng)雖然也提供了SQL語義,但由于Hive底層執(zhí)行使用的是MapReduce引擎,仍然是一個批處理過程,難以滿足查詢的交互性。相比之下,Impala的最大特點也是最大賣點就是它的快速。
(9)分析框架Parameter Server
參數(shù)服務(wù)器是個編程框架,用于方便分布式并行程序的編寫,其中重點是對大規(guī)模參數(shù)的分布式存儲和協(xié)同的支持。工業(yè)界需要訓(xùn)練大型的機器學(xué)習(xí)模型,一些廣泛使用的特定的模型在規(guī)模上的兩個特點:1. 參數(shù)很大,超過單個機器的容納能力(比如大型Logistic Regression和神經(jīng)網(wǎng)絡(luò))2. 訓(xùn)練數(shù)據(jù)巨大,需要分布式并行提速(大數(shù)據(jù))這種需求下,當(dāng)前類似MapReduce的框架并不能很好適合。因此需要自己實現(xiàn)分布式并行程序,其實在Hadoop出來之前,對于大規(guī)模數(shù)據(jù)的處理,都需要自己寫分布式的程序(MPI)。 之后這方面的工作流程被Google的工程師總結(jié)和抽象成MapReduce框架,大一統(tǒng)了。參數(shù)服務(wù)器就類似于MapReduce,是大規(guī)模機器學(xué)習(xí)在不斷使用過程中,抽象出來的框架之一。重點支持的就是參數(shù)的分布式,畢竟巨大的模型其實就是巨大的參數(shù)。
(10)機器學(xué)習(xí)Mahout
Mahout 是 Apache Software Foundation(ASF) 旗下的一個開源項目,提供一些可擴展的機器學(xué)習(xí)領(lǐng)域經(jīng)典算法的實現(xiàn),旨在幫助開發(fā)人員更加方便快捷地創(chuàng)建智能應(yīng)用程序。Mahout包含許多實現(xiàn),包括聚類、分類、推薦過濾、頻繁子項挖掘。此外,通過使用 Apache Hadoop 庫,Mahout 可以有效地擴展到云中。
(11)深度學(xué)習(xí)TensorFlow
TensorFlow是谷歌基于DistBelief進行研發(fā)的第二代人工智能學(xué)習(xí)系統(tǒng),其命名來源于本身的運行原理。Tensor(張量)意味著N維數(shù)組,F(xiàn)low(流)意味著基于數(shù)據(jù)流圖的計算,TensorFlow為張量從流圖的一端流動到另一端計算過程。TensorFlow是將復(fù)雜的數(shù)據(jù)結(jié)構(gòu)傳輸至人工智能神經(jīng)網(wǎng)中進行分析和處理過程的系統(tǒng)。
TensorFlow可被用于語音識別或圖像識別等多項機器深度學(xué)習(xí)領(lǐng)域,對2011年開發(fā)的深度學(xué)習(xí)基礎(chǔ)架構(gòu)DistBelief進行了各方面的改進,它可在小到一部智能手機、大到數(shù)千臺數(shù)據(jù)中心服務(wù)器的各種設(shè)備上運行。TensorFlow將完全開源,任何人都可以用。
(12)深度學(xué)習(xí)Paddle
PaddlePaddle 是百度自主研發(fā)的性能優(yōu)先、靈活易用的深度學(xué)習(xí)平臺,是一個已經(jīng)解決和將要解決一些實際問題的平臺。目前百度有超過30個主要產(chǎn)品都在使用 PaddlePaddle。
(13)任務(wù)工作流Oozia
Oozie是一個工作流引擎服務(wù)器,用于運行Hadoop Map/Reduce和Pig 任務(wù)工作流。
同時Oozie還是一個Java Web程序,運行在Java Servlet容器中,如Tomcat。它使用數(shù)據(jù)庫來存儲以下內(nèi)容:工作流定義和當(dāng)前運行的工作流實例,包括實例的狀態(tài)和變量。
Oozie工作流是放置在控制依賴DAG(有向無環(huán)圖 Direct Acyclic Graph)中的一組動作(例如,Hadoop的Map/Reduce作業(yè)、Pig作業(yè)等),其中指定了動作執(zhí)行的順序。
3、數(shù)據(jù)應(yīng)用類
(1)采集Flume
Flume最早是Cloudera提供的日志收集系統(tǒng),目前是Apache下的一個孵化項目,F(xiàn)lume支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù)。
Flume是一個高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸?shù)南到y(tǒng),F(xiàn)lume支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù);同時,F(xiàn)lume提供對數(shù)據(jù)進行簡單處理,并寫到各種數(shù)據(jù)接受方(可定制)的能力。
(2)導(dǎo)入Sqoop
Sqoop(發(fā)音:skup)是一款開源的工具,主要用于在Hadoop(Hive)與傳統(tǒng)的數(shù)據(jù)庫(mysql、postgresql...)間進行數(shù)據(jù)的傳遞,可以將一個關(guān)系型數(shù)據(jù)庫(例如 : MySQL ,Oracle ,Postgres等)中的數(shù)據(jù)導(dǎo)進到Hadoop的HDFS中,也可以將HDFS的數(shù)據(jù)導(dǎo)進到關(guān)系型數(shù)據(jù)庫中。
Sqoop項目開始于2009年,最早是作為Hadoop的一個第三方模塊存在,后來為了讓使用者能夠快速部署,也為了讓開發(fā)人員能夠更快速的迭代開發(fā),Sqoop獨立成為一個Apache項目。
(3)傳輸Kafka
Kafka是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),它可以處理消費者規(guī)模的網(wǎng)站中的所有動作流數(shù)據(jù)。 這種動作(網(wǎng)頁瀏覽,搜索和其他用戶的行動)是在現(xiàn)代網(wǎng)絡(luò)上的許多社會功能的一個關(guān)鍵因素。 這些數(shù)據(jù)通常是由于吞吐量的要求而通過處理日志和日志聚合來解決。 對于像Hadoop的一樣的日志數(shù)據(jù)和離線分析系統(tǒng),但又要求實時處理的限制,這是一個可行的解決方案。Kafka的目的是通過Hadoop的并行加載機制來統(tǒng)一線上和離線的消息處理,也是為了通過集群來提供實時的消費。
(4)處理Falcon
Apache Falcon 是一個面向Hadoop的、新的數(shù)據(jù)處理和管理平臺,設(shè)計用于數(shù)據(jù)移動、數(shù)據(jù)管道協(xié)調(diào)、生命周期管理和數(shù)據(jù)發(fā)現(xiàn)。它使終端用戶可以快速地將他們的數(shù)據(jù)及其相關(guān)的處理和管理任務(wù)“上載(onboard)”到Hadoop集群。
Apache Falcon解決了大數(shù)據(jù)領(lǐng)域中一個非常重要和關(guān)鍵的問題。升級為頂級項目是該項目的一個重大進展。Apache Falcon有一個完善的路線圖,可以減少應(yīng)用程序開發(fā)和管理人員編寫和管理復(fù)雜數(shù)據(jù)管理和處理應(yīng)用程序的痛苦。
(5)可視化工具Tableau
Tableau公司將數(shù)據(jù)運算與美觀的圖表完美地嫁接在一起。它的程序很容易上手,各公司可以用它將大量數(shù)據(jù)拖放到數(shù)字“畫布”上,轉(zhuǎn)眼間就能創(chuàng)建好各種圖表。這一軟件的理念是,界面上的數(shù)據(jù)越容易操控,公司對自己在所在業(yè)務(wù)領(lǐng)域里的所作所為到底是正確還是錯誤,就能了解得越透徹。
(6)可視化庫D3
D3是目前最流行的JavaScript可視化圖表庫之一,D3的圖表類型非常豐富,并且支持SVG格式,因此應(yīng)用十分廣泛,也有很多圖表插件基于D3開發(fā),比如MetricsGraphics.js,在D3上構(gòu)建的數(shù)據(jù)圖表非常強大。
4、系統(tǒng)監(jiān)測類
(1)分布式協(xié)調(diào)Zookeeper
ZooKeeper是一個分布式的,開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),是Google的Chubby一個開源的實現(xiàn),是Hadoop和Hbase的重要組件。它是一個為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的功能包括:配置維護、域名服務(wù)、分布式同步、組服務(wù)等。
ZooKeeper的目標(biāo)就是封裝好復(fù)雜易出錯的關(guān)鍵服務(wù),將簡單易用的接口和性能高效、功能穩(wěn)定的系統(tǒng)提供給用戶。
ZooKeeper包含一個簡單的原語集,提供Java和C的接口。
ZooKeeper代碼版本中,提供了分布式獨享鎖、選舉、隊列的接口,代碼在zookeeper-3.4.3\src\recipes。其中分布鎖和隊列有Java和C兩個版本,選舉只有Java版本。
(2)系統(tǒng)監(jiān)控Ambari/Ganglia
Apache Ambari是一種基于Web的工具,支持Apache Hadoop集群的供應(yīng)、管理和監(jiān)控。Ambari目前已支持大多數(shù)Hadoop組件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeper、Sqoop和Hcatalog等。
Apache Ambari 支持HDFS、MapReduce、Hive、Pig、Hbase、Zookeper、Sqoop和Hcatalog等的集中管理。也是5個頂級hadoop管理工具之一。
Ganglia是UC Berkeley發(fā)起的一個開源集群監(jiān)視項目,設(shè)計用于測量數(shù)以千計的節(jié)點。Ganglia的核心包含gmond、gmetad以及一個Web前端。主要是用來監(jiān)控系統(tǒng)性能,如:cpu 、mem、硬盤利用率, I/O負載、網(wǎng)絡(luò)流量情況等,通過曲線很容易見到每個節(jié)點的工作狀態(tài),對合理調(diào)整、分配系統(tǒng)資源,提高系統(tǒng)整體性能起到重要作用。聯(lián)系客服