工業大數據漫談10:開源工業大數據軟件簡介(下)

        (7)分析框架SparkSQL

        SparkSQL的前身是Shark,給熟悉RDBMS但又不理解MapReduce的技術人員提供快速上手的工具,Hive應運而生,它是當時唯一運行在Hadoop上的SQL-on-Hadoop工具。但是MapReduce計算過程中大量的中間磁盤落地過程消耗了大量的I/O,降低的運行效率,爲了提高SQL-on-Hadoop的效率,大量的SQL-on-Hadoop工具開始產生。其中Shark是伯克利實驗室Spark生態環境的組件之一,它修改了下圖所示的右下角的內存管理、物理計劃、執行三個模塊,並使之能運行在Spark引擎上,從而使得SQL查詢的速度得到10-100倍的提升。

        但是,隨着Spark的發展,對於野心勃勃的Spark團隊來說,Shark對於Hive的太多依賴(如採用Hive的語法解析器、查詢優化器等等),制約了Spark的One Stack Rule Them All的既定方針,制約了Spark各個組件的相互集成,所以提出了SparkSQL項目。SparkSQL拋棄原有Shark的代碼,汲取了Shark的一些優點,如內存列存儲(In-Memory Columnar Storage)、Hive兼容性等,重新開發了SparkSQL代碼;由於擺脫了對Hive的依賴性,SparkSQL無論在數據兼容、性能優化、組件擴展方面都得到了極大的方便,真可謂“退一步,海闊天空”。2014年6月1日Shark項目和SparkSQL項目的主持人Reynold Xin宣佈:停止對Shark的開發,團隊將所有資源放SparkSQL項目上,至此,Shark的發展畫上了句號。

        (8)分析框架Impala

        Impala是Cloudera公司主導開發的新型查詢系統,它提供SQL語義,能查詢存儲在Hadoop的HDFS和HBase中的PB級大數據。已有的Hive系統雖然也提供了SQL語義,但由於Hive底層執行使用的是MapReduce引擎,仍然是一個批處理過程,難以滿足查詢的交互性。相比之下,Impala的最大特點也是最大賣點就是它的快速。

        (9)分析框架Parameter Server

        參數服務器是個編程框架,用於方便分佈式並行程序的編寫,其中重點是對大規模參數的分佈式存儲和協同的支持。工業界需要訓練大型的機器學習模型,一些廣泛使用的特定的模型在規模上的兩個特點:1. 參數很大,超過單個機器的容納能力(比如大型Logistic Regression和神經網絡)2. 訓練數據巨大,需要分佈式並行提速(大數據)這種需求下,當前類似MapReduce的框架並不能很好適合。因此需要自己實現分佈式並行程序,其實在Hadoop出來之前,對於大規模數據的處理,都需要自己寫分佈式的程序(MPI)。 之後這方面的工作流程被Google的工程師總結和抽象成MapReduce框架,大一統了。參數服務器就類似於MapReduce,是大規模機器學習在不斷使用過程中,抽象出來的框架之一。重點支持的就是參數的分佈式,畢竟巨大的模型其實就是巨大的參數。

        (10)機器學習Mahout

        Mahout 是 Apache Software Foundation(ASF) 旗下的一個開源項目,提供一些可擴展的機器學習領域經典算法的實現,旨在幫助開發人員更加方便快捷地創建智能應用程序。Mahout包含許多實現,包括聚類、分類、推薦過濾、頻繁子項挖掘。此外,通過使用 Apache Hadoop 庫,Mahout 可以有效地擴展到雲中。

        (11)深度學習TensorFlow

        TensorFlow是谷歌基於DistBelief進行研發的第二代人工智能學習系統,其命名來源於本身的運行原理。Tensor(張量)意味着N維數組,Flow(流)意味着基於數據流圖的計算,TensorFlow爲張量從流圖的一端流動到另一端計算過程。TensorFlow是將複雜的數據結構傳輸至人工智能神經網中進行分析和處理過程的系統。

        TensorFlow可被用於語音識別或圖像識別等多項機器深度學習領域,對2011年開發的深度學習基礎架構DistBelief進行了各方面的改進,它可在小到一部智能手機、大到數千臺數據中心服務器的各種設備上運行。TensorFlow將完全開源,任何人都可以用。

        (12)深度學習Paddle

        PaddlePaddle 是百度自主研發的性能優先、靈活易用的深度學習平臺,是一個已經解決和將要解決一些實際問題的平臺。目前百度有超過30個主要產品都在使用 PaddlePaddle。

        (13)任務工作流Oozia

        Oozie是一個工作流引擎服務器,用於運行Hadoop Map/Reduce和Pig 任務工作流。

同時Oozie還是一個Java Web程序,運行在Java Servlet容器中,如Tomcat。它使用數據庫來存儲以下內容:工作流定義和當前運行的工作流實例,包括實例的狀態和變量。

Oozie工作流是放置在控制依賴DAG(有向無環圖 Direct Acyclic Graph)中的一組動作(例如,Hadoop的Map/Reduce作業、Pig作業等),其中指定了動作執行的順序。

        3、數據應用類

        (1)採集Flume

        Flume最早是Cloudera提供的日誌收集系統,目前是Apache下的一個孵化項目,Flume支持在日誌系統中定製各類數據發送方,用於收集數據。

        Flume是一個高可用的,高可靠的,分佈式的海量日誌採集、聚合和傳輸的系統,Flume支持在日誌系統中定製各類數據發送方,用於收集數據;同時,Flume提供對數據進行簡單處理,並寫到各種數據接受方(可定製)的能力。 

        (2)導入Sqoop

        Sqoop(發音:skup)是一款開源的工具,主要用於在Hadoop(Hive)與傳統的數據庫(mysql、postgresql...)間進行數據的傳遞,可以將一個關係型數據庫(例如 : MySQL ,Oracle ,Postgres等)中的數據導進到Hadoop的HDFS中,也可以將HDFS的數據導進到關係型數據庫中。

        Sqoop項目開始於2009年,最早是作爲Hadoop的一個第三方模塊存在,後來爲了讓使用者能夠快速部署,也爲了讓開發人員能夠更快速的迭代開發,Sqoop獨立成爲一個Apache項目。

        (3)傳輸Kafka

        Kafka是一種高吞吐量的分佈式發佈訂閱消息系統,它可以處理消費者規模的網站中的所有動作流數據。 這種動作(網頁瀏覽,搜索和其他用戶的行動)是在現代網絡上的許多社會功能的一個關鍵因素。 這些數據通常是由於吞吐量的要求而通過處理日誌和日誌聚合來解決。 對於像Hadoop的一樣的日誌數據和離線分析系統,但又要求實時處理的限制,這是一個可行的解決方案。Kafka的目的是通過Hadoop的並行加載機制來統一線上和離線的消息處理,也是爲了通過集羣來提供實時的消費。

        (4)處理Falcon

        Apache Falcon 是一個面向Hadoop的、新的數據處理和管理平臺,設計用於數據移動、數據管道協調、生命週期管理和數據發現。它使終端用戶可以快速地將他們的數據及其相關的處理和管理任務“上載(onboard)”到Hadoop集羣。

        Apache Falcon解決了大數據領域中一個非常重要和關鍵的問題。升級爲頂級項目是該項目的一個重大進展。Apache Falcon有一個完善的路線圖,可以減少應用程序開發和管理人員編寫和管理複雜數據管理和處理應用程序的痛苦。

        (5)可視化工具Tableau

        Tableau公司將數據運算與美觀的圖表完美地嫁接在一起。它的程序很容易上手,各公司可以用它將大量數據拖放到數字“畫布”上,轉眼間就能創建好各種圖表。這一軟件的理念是,界面上的數據越容易操控,公司對自己在所在業務領域裏的所作所爲到底是正確還是錯誤,就能瞭解得越透徹。

        (6)可視化庫D3

        D3是目前最流行的JavaScript可視化圖表庫之一,D3的圖表類型非常豐富,並且支持SVG格式,因此應用十分廣泛,也有很多圖表插件基於D3開發,比如MetricsGraphics.js,在D3上構建的數據圖表非常強大。

        4、系統監測類

        (1)分佈式協調Zookeeper

        ZooKeeper是一個分佈式的,開放源碼的分佈式應用程序協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要組件。它是一個爲分佈式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分佈式同步、組服務等。

        ZooKeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的接口和性能高效、功能穩定的系統提供給用戶。

        ZooKeeper包含一個簡單的原語集,提供Java和C的接口。

        ZooKeeper代碼版本中,提供了分佈式獨享鎖、選舉、隊列的接口,代碼在zookeeper-3.4.3\src\recipes。其中分佈鎖和隊列有Java和C兩個版本,選舉只有Java版本。 

        (2)系統監控Ambari/Ganglia

         Apache Ambari是一種基於Web的工具,支持Apache Hadoop集羣的供應、管理和監控。Ambari目前已支持大多數Hadoop組件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeper、Sqoop和Hcatalog等。

        Apache Ambari 支持HDFS、MapReduce、Hive、Pig、Hbase、Zookeper、Sqoop和Hcatalog等的集中管理。也是5個頂級hadoop管理工具之一。

Ganglia是UC Berkeley發起的一個開源集羣監視項目,設計用於測量數以千計的節點。Ganglia的核心包含gmond、gmetad以及一個Web前端。主要是用來監控系統性能,如:cpu 、mem、硬盤利用率, I/O負載、網絡流量情況等,通過曲線很容易見到每個節點的工作狀態,對合理調整、分配系統資源,提高系統整體性能起到重要作用。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章