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