導航:首頁 > 網路數據 > 大數據常用組件

大數據常用組件

發布時間:2023-06-08 12:57:08

⑴ 一個典型的大數據解決方案,包含哪些組件

首先,一個典型的大數據解決方案,也就是大數據系統平台的構建,涉及到多個層次,數據採集和傳輸、數據存儲、數據計算、資源管理、任務調度等,每個流程階段當中,都有多個組件可選擇,關鍵是要能夠滿足實際的需求。
簡單舉例說明一下典型的一些組件:
文件存儲:Hadoop HDFS
離線計算:Hadoop MapRece、Spark
流式、實時計算:Storm、Spark Streaming
K-V、NOSQL資料庫:HBase、Redis、MongoDB
資源管理:YARN、Mesos
日誌收集:Flume、Scribe、Logstash、Kibana
消息系統:Kafka、StormMQ、ZeroMQ、RabbitMQ
查詢分析:Hive、Impala、Presto、Phoenix、SparkSQL、Flink、Kylin、Druid
分布式協調服務:Zookeeper
集群管理與監控:Ambari、Ganglia、Nagios、Cloudera Manager
數據挖掘、機器學習:Mahout、Spark MLLib
數據同步:Sqoop
任務調度:Oozie

⑵ 大數據包括哪些

大數據技術龐大復雜,基礎的技術包含數據的採集、數據預處理、分布式存儲、NoSQL數據內庫、容數據倉庫、機器學習、並行計算、可視化等各種技術范疇和不同的技術層面。
大數據主要技術組件:Hadoop、HBase、kafka、Hive、MongoDB、Redis、Spark 、Storm、Flink等。
大數據技術包括數據採集,數據管理,數據分析,數據可視化,數據安全等內容。數據的採集包括感測器採集,系統日誌採集以及網路爬蟲等。數據管理包括傳統的資料庫技術,nosql技術,以及對於針對大規模數據的大數據平台,例如hadoop,spark,storm等。數據分析的核心是機器學習,當然也包括深度學習和強化學習,以及自然語言處理,圖與網路分析等。

⑶ 五種大數據處理架構

五種大數據處理架構
大數據是收集、整理、處理大容量數據集,並從中獲得見解所需的非傳統戰略和技術的總稱。雖然處理數據所需的計算能力或存儲容量早已超過一台計算機的上限,但這種計算類型的普遍性、規模,以及價值在最近幾年才經歷了大規模擴展。
本文將介紹大數據系統一個最基本的組件:處理框架。處理框架負責對系統中的數據進行計算,例如處理從非易失存儲中讀取的數據,或處理剛剛攝入到系統中的數據。數據的計算則是指從大量單一數據點中提取信息和見解的過程。
下文將介紹這些框架:
· 僅批處理框架:
Apache Hadoop
· 僅流處理框架:
Apache Storm
Apache Samza
· 混合框架:
Apache Spark
Apache Flink
大數據處理框架是什麼?
處理框架和處理引擎負責對數據系統中的數據進行計算。雖然「引擎」和「框架」之間的區別沒有什麼權威的定義,但大部分時候可以將前者定義為實際負責處理數據操作的組件,後者則可定義為承擔類似作用的一系列組件。
例如Apache Hadoop可以看作一種以MapRece作為默認處理引擎的處理框架。引擎和框架通常可以相互替換或同時使用。例如另一個框架Apache Spark可以納入Hadoop並取代MapRece。組件之間的這種互操作性是大數據系統靈活性如此之高的原因之一。
雖然負責處理生命周期內這一階段數據的系統通常都很復雜,但從廣義層面來看它們的目標是非常一致的:通過對數據執行操作提高理解能力,揭示出數據蘊含的模式,並針對復雜互動獲得見解。
為了簡化這些組件的討論,我們會通過不同處理框架的設計意圖,按照所處理的數據狀態對其進行分類。一些系統可以用批處理方式處理數據,一些系統可以用流方式處理連續不斷流入系統的數據。此外還有一些系統可以同時處理這兩類數據。
在深入介紹不同實現的指標和結論之前,首先需要對不同處理類型的概念進行一個簡單的介紹。
批處理系統
批處理在大數據世界有著悠久的歷史。批處理主要操作大容量靜態數據集,並在計算過程完成後返回結果。
批處理模式中使用的數據集通常符合下列特徵…
· 有界:批處理數據集代表數據的有限集合
· 持久:數據通常始終存儲在某種類型的持久存儲位置中
· 大量:批處理操作通常是處理極為海量數據集的唯一方法
批處理非常適合需要訪問全套記錄才能完成的計算工作。例如在計算總數和平均數時,必須將數據集作為一個整體加以處理,而不能將其視作多條記錄的集合。這些操作要求在計算進行過程中數據維持自己的狀態。
需要處理大量數據的任務通常最適合用批處理操作進行處理。無論直接從持久存儲設備處理數據集,或首先將數據集載入內存,批處理系統在設計過程中就充分考慮了數據的量,可提供充足的處理資源。由於批處理在應對大量持久數據方面的表現極為出色,因此經常被用於對歷史數據進行分析。
大量數據的處理需要付出大量時間,因此批處理不適合對處理時間要求較高的場合。
Apache Hadoop
Apache Hadoop是一種專用於批處理的處理框架。Hadoop是首個在開源社區獲得極大關注的大數據框架。基於谷歌有關海量數據處理所發表的多篇論文與經驗的Hadoop重新實現了相關演算法和組件堆棧,讓大規模批處理技術變得更易用。
新版Hadoop包含多個組件,即多個層,通過配合使用可處理批數據:
· HDFS:HDFS是一種分布式文件系統層,可對集群節點間的存儲和復制進行協調。HDFS確保了無法避免的節點故障發生後數據依然可用,可將其用作數據來源,可用於存儲中間態的處理結果,並可存儲計算的最終結果。
· YARN:YARN是Yet Another Resource Negotiator(另一個資源管理器)的縮寫,可充當Hadoop堆棧的集群協調組件。該組件負責協調並管理底層資源和調度作業的運行。通過充當集群資源的介面,YARN使得用戶能在Hadoop集群中使用比以往的迭代方式運行更多類型的工作負載。
· MapRece:MapRece是Hadoop的原生批處理引擎。
批處理模式
Hadoop的處理功能來自MapRece引擎。MapRece的處理技術符合使用鍵值對的map、shuffle、rece演算法要求。基本處理過程包括:
· 從HDFS文件系統讀取數據集
· 將數據集拆分成小塊並分配給所有可用節點
· 針對每個節點上的數據子集進行計算(計算的中間態結果會重新寫入HDFS)
· 重新分配中間態結果並按照鍵進行分組
· 通過對每個節點計算的結果進行匯總和組合對每個鍵的值進行「Recing」
· 將計算而來的最終結果重新寫入 HDFS
優勢和局限
由於這種方法嚴重依賴持久存儲,每個任務需要多次執行讀取和寫入操作,因此速度相對較慢。但另一方面由於磁碟空間通常是伺服器上最豐富的資源,這意味著MapRece可以處理非常海量的數據集。同時也意味著相比其他類似技術,Hadoop的MapRece通常可以在廉價硬體上運行,因為該技術並不需要將一切都存儲在內存中。MapRece具備極高的縮放潛力,生產環境中曾經出現過包含數萬個節點的應用。
MapRece的學習曲線較為陡峭,雖然Hadoop生態系統的其他周邊技術可以大幅降低這一問題的影響,但通過Hadoop集群快速實現某些應用時依然需要注意這個問題。
圍繞Hadoop已經形成了遼闊的生態系統,Hadoop集群本身也經常被用作其他軟體的組成部件。很多其他處理框架和引擎通過與Hadoop集成也可以使用HDFS和YARN資源管理器。
總結
Apache Hadoop及其MapRece處理引擎提供了一套久經考驗的批處理模型,最適合處理對時間要求不高的非常大規模數據集。通過非常低成本的組件即可搭建完整功能的Hadoop集群,使得這一廉價且高效的處理技術可以靈活應用在很多案例中。與其他框架和引擎的兼容與集成能力使得Hadoop可以成為使用不同技術的多種工作負載處理平台的底層基礎。
流處理系統
流處理系統會對隨時進入系統的數據進行計算。相比批處理模式,這是一種截然不同的處理方式。流處理方式無需針對整個數據集執行操作,而是對通過系統傳輸的每個數據項執行操作。
· 流處理中的數據集是「無邊界」的,這就產生了幾個重要的影響:
· 完整數據集只能代表截至目前已經進入到系統中的數據總量。
· 工作數據集也許更相關,在特定時間只能代表某個單一數據項。
處理工作是基於事件的,除非明確停止否則沒有「盡頭」。處理結果立刻可用,並會隨著新數據的抵達繼續更新。
流處理系統可以處理幾乎無限量的數據,但同一時間只能處理一條(真正的流處理)或很少量(微批處理,Micro-batch Processing)數據,不同記錄間只維持最少量的狀態。雖然大部分系統提供了用於維持某些狀態的方法,但流處理主要針對副作用更少,更加功能性的處理(Functional processing)進行優化。
功能性操作主要側重於狀態或副作用有限的離散步驟。針對同一個數據執行同一個操作會或略其他因素產生相同的結果,此類處理非常適合流處理,因為不同項的狀態通常是某些困難、限制,以及某些情況下不需要的結果的結合體。因此雖然某些類型的狀態管理通常是可行的,但這些框架通常在不具備狀態管理機制時更簡單也更高效。
此類處理非常適合某些類型的工作負載。有近實時處理需求的任務很適合使用流處理模式。分析、伺服器或應用程序錯誤日誌,以及其他基於時間的衡量指標是最適合的類型,因為對這些領域的數據變化做出響應對於業務職能來說是極為關鍵的。流處理很適合用來處理必須對變動或峰值做出響應,並且關注一段時間內變化趨勢的數據。
Apache Storm
Apache Storm是一種側重於極低延遲的流處理框架,也許是要求近實時處理的工作負載的最佳選擇。該技術可處理非常大量的數據,通過比其他解決方案更低的延遲提供結果。
流處理模式
Storm的流處理可對框架中名為Topology(拓撲)的DAG(Directed Acyclic Graph,有向無環圖)進行編排。這些拓撲描述了當數據片段進入系統後,需要對每個傳入的片段執行的不同轉換或步驟。
拓撲包含:
· Stream:普通的數據流,這是一種會持續抵達系統的無邊界數據。
· Spout:位於拓撲邊緣的數據流來源,例如可以是API或查詢等,從這里可以產生待處理的數據。
· Bolt:Bolt代表需要消耗流數據,對其應用操作,並將結果以流的形式進行輸出的處理步驟。Bolt需要與每個Spout建立連接,隨後相互連接以組成所有必要的處理。在拓撲的尾部,可以使用最終的Bolt輸出作為相互連接的其他系統的輸入。
Storm背後的想法是使用上述組件定義大量小型的離散操作,隨後將多個組件組成所需拓撲。默認情況下Storm提供了「至少一次」的處理保證,這意味著可以確保每條消息至少可以被處理一次,但某些情況下如果遇到失敗可能會處理多次。Storm無法確保可以按照特定順序處理消息。
為了實現嚴格的一次處理,即有狀態處理,可以使用一種名為Trident的抽象。嚴格來說不使用Trident的Storm通常可稱之為Core Storm。Trident會對Storm的處理能力產生極大影響,會增加延遲,為處理提供狀態,使用微批模式代替逐項處理的純粹流處理模式。
為避免這些問題,通常建議Storm用戶盡可能使用Core Storm。然而也要注意,Trident對內容嚴格的一次處理保證在某些情況下也比較有用,例如系統無法智能地處理重復消息時。如果需要在項之間維持狀態,例如想要計算一個小時內有多少用戶點擊了某個鏈接,此時Trident將是你唯一的選擇。盡管不能充分發揮框架與生俱來的優勢,但Trident提高了Storm的靈活性。
Trident拓撲包含:
· 流批(Stream batch):這是指流數據的微批,可通過分塊提供批處理語義。
· 操作(Operation):是指可以對數據執行的批處理過程。
優勢和局限
目前來說Storm可能是近實時處理領域的最佳解決方案。該技術可以用極低延遲處理數據,可用於希望獲得最低延遲的工作負載。如果處理速度直接影響用戶體驗,例如需要將處理結果直接提供給訪客打開的網站頁面,此時Storm將會是一個很好的選擇。
Storm與Trident配合使得用戶可以用微批代替純粹的流處理。雖然藉此用戶可以獲得更大靈活性打造更符合要求的工具,但同時這種做法會削弱該技術相比其他解決方案最大的優勢。話雖如此,但多一種流處理方式總是好的。
Core Storm無法保證消息的處理順序。Core Storm為消息提供了「至少一次」的處理保證,這意味著可以保證每條消息都能被處理,但也可能發生重復。Trident提供了嚴格的一次處理保證,可以在不同批之間提供順序處理,但無法在一個批內部實現順序處理。
在互操作性方面,Storm可與Hadoop的YARN資源管理器進行集成,因此可以很方便地融入現有Hadoop部署。除了支持大部分處理框架,Storm還可支持多種語言,為用戶的拓撲定義提供了更多選擇。
總結
對於延遲需求很高的純粹的流處理工作負載,Storm可能是最適合的技術。該技術可以保證每條消息都被處理,可配合多種編程語言使用。由於Storm無法進行批處理,如果需要這些能力可能還需要使用其他軟體。如果對嚴格的一次處理保證有比較高的要求,此時可考慮使用Trident。不過這種情況下其他流處理框架也許更適合。
Apache Samza
Apache Samza是一種與Apache Kafka消息系統緊密綁定的流處理框架。雖然Kafka可用於很多流處理系統,但按照設計,Samza可以更好地發揮Kafka獨特的架構優勢和保障。該技術可通過Kafka提供容錯、緩沖,以及狀態存儲。
Samza可使用YARN作為資源管理器。這意味著默認情況下需要具備Hadoop集群(至少具備HDFS和YARN),但同時也意味著Samza可以直接使用YARN豐富的內建功能。
流處理模式
Samza依賴Kafka的語義定義流的處理方式。Kafka在處理數據時涉及下列概念:
· Topic(話題):進入Kafka系統的每個數據流可稱之為一個話題。話題基本上是一種可供消耗方訂閱的,由相關信息組成的數據流。
· Partition(分區):為了將一個話題分散至多個節點,Kafka會將傳入的消息劃分為多個分區。分區的劃分將基於鍵(Key)進行,這樣可以保證包含同一個鍵的每條消息可以劃分至同一個分區。分區的順序可獲得保證。
· Broker(代理):組成Kafka集群的每個節點也叫做代理。
· Procer(生成方):任何向Kafka話題寫入數據的組件可以叫做生成方。生成方可提供將話題劃分為分區所需的鍵。
· Consumer(消耗方):任何從Kafka讀取話題的組件可叫做消耗方。消耗方需要負責維持有關自己分支的信息,這樣即可在失敗後知道哪些記錄已經被處理過了。
由於Kafka相當於永恆不變的日誌,Samza也需要處理永恆不變的數據流。這意味著任何轉換創建的新數據流都可被其他組件所使用,而不會對最初的數據流產生影響。
優勢和局限
乍看之下,Samza對Kafka類查詢系統的依賴似乎是一種限制,然而這也可以為系統提供一些獨特的保證和功能,這些內容也是其他流處理系統不具備的。
例如Kafka已經提供了可以通過低延遲方式訪問的數據存儲副本,此外還可以為每個數據分區提供非常易用且低成本的多訂閱者模型。所有輸出內容,包括中間態的結果都可寫入到Kafka,並可被下游步驟獨立使用。
這種對Kafka的緊密依賴在很多方面類似於MapRece引擎對HDFS的依賴。雖然在批處理的每個計算之間對HDFS的依賴導致了一些嚴重的性能問題,但也避免了流處理遇到的很多其他問題。
Samza與Kafka之間緊密的關系使得處理步驟本身可以非常鬆散地耦合在一起。無需事先協調,即可在輸出的任何步驟中增加任意數量的訂閱者,對於有多個團隊需要訪問類似數據的組織,這一特性非常有用。多個團隊可以全部訂閱進入系統的數據話題,或任意訂閱其他團隊對數據進行過某些處理後創建的話題。這一切並不會對資料庫等負載密集型基礎架構造成額外的壓力。
直接寫入Kafka還可避免回壓(Backpressure)問題。回壓是指當負載峰值導致數據流入速度超過組件實時處理能力的情況,這種情況可能導致處理工作停頓並可能丟失數據。按照設計,Kafka可以將數據保存很長時間,這意味著組件可以在方便的時候繼續進行處理,並可直接重啟動而無需擔心造成任何後果。
Samza可以使用以本地鍵值存儲方式實現的容錯檢查點系統存儲數據。這樣Samza即可獲得「至少一次」的交付保障,但面對由於數據可能多次交付造成的失敗,該技術無法對匯總後狀態(例如計數)提供精確恢復。
Samza提供的高級抽象使其在很多方面比Storm等系統提供的基元(Primitive)更易於配合使用。目前Samza只支持JVM語言,這意味著它在語言支持方面不如Storm靈活。
總結
對於已經具備或易於實現Hadoop和Kafka的環境,Apache Samza是流處理工作負載一個很好的選擇。Samza本身很適合有多個團隊需要使用(但相互之間並不一定緊密協調)不同處理階段的多個數據流的組織。Samza可大幅簡化很多流處理工作,可實現低延遲的性能。如果部署需求與當前系統不兼容,也許並不適合使用,但如果需要極低延遲的處理,或對嚴格的一次處理語義有較高需求,此時依然適合考慮。
混合處理系統:批處理和流處理
一些處理框架可同時處理批處理和流處理工作負載。這些框架可以用相同或相關的組件和API處理兩種類型的數據,藉此讓不同的處理需求得以簡化。
如你所見,這一特性主要是由Spark和Flink實現的,下文將介紹這兩種框架。實現這樣的功能重點在於兩種不同處理模式如何進行統一,以及要對固定和不固定數據集之間的關系進行何種假設。
雖然側重於某一種處理類型的項目會更好地滿足具體用例的要求,但混合框架意在提供一種數據處理的通用解決方案。這種框架不僅可以提供處理數據所需的方法,而且提供了自己的集成項、庫、工具,可勝任圖形分析、機器學習、互動式查詢等多種任務。
Apache Spark
Apache Spark是一種包含流處理能力的下一代批處理框架。與Hadoop的MapRece引擎基於各種相同原則開發而來的Spark主要側重於通過完善的內存計算和處理優化機制加快批處理工作負載的運行速度。
Spark可作為獨立集群部署(需要相應存儲層的配合),或可與Hadoop集成並取代MapRece引擎。
批處理模式
與MapRece不同,Spark的數據處理工作全部在內存中進行,只在一開始將數據讀入內存,以及將最終結果持久存儲時需要與存儲層交互。所有中間態的處理結果均存儲在內存中。
雖然內存中處理方式可大幅改善性能,Spark在處理與磁碟有關的任務時速度也有很大提升,因為通過提前對整個任務集進行分析可以實現更完善的整體式優化。為此Spark可創建代表所需執行的全部操作,需要操作的數據,以及操作和數據之間關系的Directed Acyclic Graph(有向無環圖),即DAG,藉此處理器可以對任務進行更智能的協調。
為了實現內存中批計算,Spark會使用一種名為Resilient Distributed Dataset(彈性分布式數據集),即RDD的模型來處理數據。這是一種代表數據集,只位於內存中,永恆不變的結構。針對RDD執行的操作可生成新的RDD。每個RDD可通過世系(Lineage)回溯至父級RDD,並最終回溯至磁碟上的數據。Spark可通過RDD在無需將每個操作的結果寫回磁碟的前提下實現容錯。
流處理模式
流處理能力是由Spark Streaming實現的。Spark本身在設計上主要面向批處理工作負載,為了彌補引擎設計和流處理工作負載特徵方面的差異,Spark實現了一種叫做微批(Micro-batch)*的概念。在具體策略方面該技術可以將數據流視作一系列非常小的「批」,藉此即可通過批處理引擎的原生語義進行處理。
Spark Streaming會以亞秒級增量對流進行緩沖,隨後這些緩沖會作為小規模的固定數據集進行批處理。這種方式的實際效果非常好,但相比真正的流處理框架在性能方面依然存在不足。
優勢和局限
使用Spark而非Hadoop MapRece的主要原因是速度。在內存計算策略和先進的DAG調度等機制的幫助下,Spark可以用更快速度處理相同的數據集。
Spark的另一個重要優勢在於多樣性。該產品可作為獨立集群部署,或與現有Hadoop集群集成。該產品可運行批處理和流處理,運行一個集群即可處理不同類型的任務。
除了引擎自身的能力外,圍繞Spark還建立了包含各種庫的生態系統,可為機器學習、互動式查詢等任務提供更好的支持。相比MapRece,Spark任務更是「眾所周知」地易於編寫,因此可大幅提高生產力。
為流處理系統採用批處理的方法,需要對進入系統的數據進行緩沖。緩沖機制使得該技術可以處理非常大量的傳入數據,提高整體吞吐率,但等待緩沖區清空也會導致延遲增高。這意味著Spark Streaming可能不適合處理對延遲有較高要求的工作負載。
由於內存通常比磁碟空間更貴,因此相比基於磁碟的系統,Spark成本更高。然而處理速度的提升意味著可以更快速完成任務,在需要按照小時數為資源付費的環境中,這一特性通常可以抵消增加的成本。
Spark內存計算這一設計的另一個後果是,如果部署在共享的集群中可能會遇到資源不足的問題。相比HadoopMapRece,Spark的資源消耗更大,可能會對需要在同一時間使用集群的其他任務產生影響。從本質來看,Spark更不適合與Hadoop堆棧的其他組件共存一處。
總結
Spark是多樣化工作負載處理任務的最佳選擇。Spark批處理能力以更高內存佔用為代價提供了無與倫比的速度優勢。對於重視吞吐率而非延遲的工作負載,則比較適合使用Spark Streaming作為流處理解決方案。
Apache Flink
Apache Flink是一種可以處理批處理任務的流處理框架。該技術可將批處理數據視作具備有限邊界的數據流,藉此將批處理任務作為流處理的子集加以處理。為所有處理任務採取流處理為先的方法會產生一系列有趣的副作用。
這種流處理為先的方法也叫做Kappa架構,與之相對的是更加被廣為人知的Lambda架構(該架構中使用批處理作為主要處理方法,使用流作為補充並提供早期未經提煉的結果)。Kappa架構中會對一切進行流處理,藉此對模型進行簡化,而這一切是在最近流處理引擎逐漸成熟後才可行的。
流處理模型
Flink的流處理模型在處理傳入數據時會將每一項視作真正的數據流。Flink提供的DataStream API可用於處理無盡的數據流。Flink可配合使用的基本組件包括:
· Stream(流)是指在系統中流轉的,永恆不變的無邊界數據集
· Operator(操作方)是指針對數據流執行操作以產生其他數據流的功能
· Source(源)是指數據流進入系統的入口點
· Sink(槽)是指數據流離開Flink系統後進入到的位置,槽可以是資料庫或到其他系統的連接器
為了在計算過程中遇到問題後能夠恢復,流處理任務會在預定時間點創建快照。為了實現狀態存儲,Flink可配合多種狀態後端系統使用,具體取決於所需實現的復雜度和持久性級別。
此外Flink的流處理能力還可以理解「事件時間」這一概念,這是指事件實際發生的時間,此外該功能還可以處理會話。這意味著可以通過某種有趣的方式確保執行順序和分組。
批處理模型
Flink的批處理模型在很大程度上僅僅是對流處理模型的擴展。此時模型不再從持續流中讀取數據,而是從持久存儲中以流的形式讀取有邊界的數據集。Flink會對這些處理模型使用完全相同的運行時。
Flink可以對批處理工作負載實現一定的優化。例如由於批處理操作可通過持久存儲加以支持,Flink可以不對批處理工作負載創建快照。數據依然可以恢復,但常規處理操作可以執行得更快。
另一個優化是對批處理任務進行分解,這樣即可在需要的時候調用不同階段和組件。藉此Flink可以與集群的其他用戶更好地共存。對任務提前進行分析使得Flink可以查看需要執行的所有操作、數據集的大小,以及下游需要執行的操作步驟,藉此實現進一步的優化。
優勢和局限
Flink目前是處理框架領域一個獨特的技術。雖然Spark也可以執行批處理和流處理,但Spark的流處理採取的微批架構使其無法適用於很多用例。Flink流處理為先的方法可提供低延遲,高吞吐率,近乎逐項處理的能力。
Flink的很多組件是自行管理的。雖然這種做法較為罕見,但出於性能方面的原因,該技術可自行管理內存,無需依賴原生的java垃圾回收機制。與Spark不同,待處理數據的特徵發生變化後Flink無需手工優化和調整,並且該技術也可以自行處理數據分區和自動緩存等操作。
Flink會通過多種方式對工作進行分許進而優化任務。這種分析在部分程度上類似於SQL查詢規劃器對關系型資料庫所做的優化,可針對特定任務確定最高效的實現方法。該技術還支持多階段並行執行,同時可將受阻任務的數據集合在一起。對於迭代式任務,出於性能方面的考慮,Flink會嘗試在存儲數據的節點上執行相應的計算任務。此外還可進行「增量迭代」,或僅對數據中有改動的部分進行迭代。
在用戶工具方面,Flink提供了基於Web的調度視圖,藉此可輕松管理任務並查看系統狀態。用戶也可以查看已提交任務的優化方案,藉此了解任務最終是如何在集群中實現的。對於分析類任務,Flink提供了類似SQL的查詢,圖形化處理,以及機器學習庫,此外還支持內存計算。
Flink能很好地與其他組件配合使用。如果配合Hadoop 堆棧使用,該技術可以很好地融入整個環境,在任何時候都只佔用必要的資源。該技術可輕松地與YARN、HDFS和Kafka 集成。在兼容包的幫助下,Flink還可以運行為其他處理框架,例如Hadoop和Storm編寫的任務。
目前Flink最大的局限之一在於這依然是一個非常「年幼」的項目。現實環境中該項目的大規模部署尚不如其他處理框架那麼常見,對於Flink在縮放能力方面的局限目前也沒有較為深入的研究。隨著快速開發周期的推進和兼容包等功能的完善,當越來越多的組織開始嘗試時,可能會出現越來越多的Flink部署
總結
Flink提供了低延遲流處理,同時可支持傳統的批處理任務。Flink也許最適合有極高流處理需求,並有少量批處理任務的組織。該技術可兼容原生Storm和Hadoop程序,可在YARN管理的集群上運行,因此可以很方便地進行評估。快速進展的開發工作使其值得被大家關注。
結論
大數據系統可使用多種處理技術。
對於僅需要批處理的工作負載,如果對時間不敏感,比其他解決方案實現成本更低的Hadoop將會是一個好選擇。
對於僅需要流處理的工作負載,Storm可支持更廣泛的語言並實現極低延遲的處理,但默認配置可能產生重復結果並且無法保證順序。Samza與YARN和Kafka緊密集成可提供更大靈活性,更易用的多團隊使用,以及更簡單的復制和狀態管理。
對於混合型工作負載,Spark可提供高速批處理和微批處理模式的流處理。該技術的支持更完善,具備各種集成庫和工具,可實現靈活的集成。Flink提供了真正的流處理並具備批處理能力,通過深度優化可運行針對其他平台編寫的任務,提供低延遲的處理,但實際應用方面還為時過早。
最適合的解決方案主要取決於待處理數據的狀態,對處理所需時間的需求,以及希望得到的結果。具體是使用全功能解決方案或主要側重於某種項目的解決方案,這個問題需要慎重權衡。隨著逐漸成熟並被廣泛接受,在評估任何新出現的創新型解決方案時都需要考慮類似的問題。

⑷ 大數據組件之oozie

官網首頁介紹: http://oozie.apache.org

簡單項目的話可以用crontab來做控制,但是項目比較復雜的話會發現還是有很多不方便的,比如失敗重啟和日誌查看等問題,所以我們通常在Azkaban和oozie之間做對比,選擇適合自己公司或者項目的任務調度工具

Oozie主要有三個層層包裹的主要概念

Oozie的作業有三部分組成,分別是job.properties,workflow.xml,lib文件夾。下面分別介紹

從名稱也能看出來,這個文件是用來配置作業(job)中用到的各種參數的,總結如下

註:
1、這個文件如果是在本地通過命令行進行任務提交的話,這個文件在本地就可以了,當然也可以放在hdfs上,與workflow.xml和lib處於同一層級。
2、nameNode,jobTracker和workflow.xml在hdfs中的位置必須設置。

一個簡單的job.properties文件如下:

這個文件是定義任務的整體流程的文件,需要注意的有三點:版本信息,EL函數,節點信息。
先上一個例子:

在xmls屬性中定義了workflow的版本為0.4,workflow的版本不能高於oozie兼容的最高版本,可以降低。

A. 流程式控制制節點

案例:

B. 動作節點

Workflow.xml綜述
文件需要被放在HDFS上才能被oozie調度,如果在啟動需要調動MR任務,jar包同樣需要在hdfs上。最終的目錄結構如下:

在workflow工作流定義的同級目錄下,需要有一個lib目錄,在lib目錄中存在java節點MapRece使用的jar包。需要注意的是,oozie並不是使用指定jar包的名稱來啟動任務的,而是通過制定主類來啟動任務的。在lib包中絕對不能存在某個jar包的不同版本,不能夠出現多個相同主類。

在搭建好CDH後,可以直接通過添加服務的方式實現oozie的安裝,比較方便。當然也可以在伺服器上搭建獨立的oozie服務,具體可參考 https://oozie.apache.org/docs/5.0.0/AG_Install.html

搭設後進入oozie web控制台,地址為:OozieserverIp:11000/oozie/ (OozieserverIp為oozie所在的伺服器的ip地址),界面如下:

1.拷貝官方自帶實例模板

2.修改job.properties

3.修改workflow.xml

4.在shell目錄下創建mem.sh

註:/usr/bin/date為命令絕對路徑,可以通過which date獲得

5.上傳到hdfs

6.執行:

7.檢查結果

⑸ 大數據專業都需要學習哪些軟體啊

大數據處理分析能力在21世紀至關重要。使用正確的大數據工具是企業提高自身優勢、戰勝競爭對手的必要條件。下面讓我們來了解一下最常用的30種大數據工具,緊跟大數據發展腳步。

第一部分、數據提取工具
Octoparse是一種簡單直觀的網路爬蟲,可以從網站上直接提取數據,不需要編寫代碼。無論你是初學者、大數據專家、還是企業管理層,都能通過其企業級的服務滿足需求。為了方便操作,Octoparse還添加了涵蓋30多個網站的「任務模板 (Task Templates)」,操作簡單易上手。用戶無需任務配置即可提取數據。隨著你對Octoparse的操作更加熟悉,你還可以使用其「向導模式 (Wizard Mode)」來構建爬蟲。除此之外,大數據專家們可以使用「高級模式 (Advanced Mode)」在數分鍾內提取企業批量數據。你還可以設置「自動雲提取 (Scheled Cloud Extraction)」,以便實時獲取動態數據,保持跟蹤記錄。

02

Content Graber

Content Graber是比較進階的網路爬網軟體,具有可用於開發、測試和生產伺服器的編程操作環境。用戶可以使用C#或VB.NET調試或編寫腳本來構建爬蟲。Content Graber還允許你在爬蟲的基礎上添加第三方擴展軟體。憑借全面的功能,Content Grabber對於具有基本技術知識的用戶來說功能極其強大。
Import.io是基於網頁的數據提取工具。Import.io於2016年首次啟動,現已將其業務模式從B2C轉變為B2B。2019年,Import.io並購了Connotate,成為了一個網路數據集成平台 (Web Data Integration Platform)。憑借廣泛的網路數據服務,Import.io成為了商業分析的絕佳選擇。
Parsehub是基於網頁的數據爬蟲。它可以使用AJax,JavaScript等等從網站上提取動態的的數據。Parsehub提供為期一周的免費試用,供用戶體驗其功能。
Mozenda是網路數據抓取軟體,提供企業級數據抓取服務。它既可以從雲端也可以從內部軟體中提取可伸縮的數據。
第二部分、開源數據工具

01Knime

KNIME是一個分析平台,可以幫助你分析企業數據,發現潛在的趨勢價值,在市場中發揮更大潛能。KNIME提供Eclipse平台以及其他用於數據挖掘和機器學習的外部擴展。KNIME為數據分析師提供了2,000多個模塊。

02OpenRefine(過去的Google Refine)是處理雜亂數據的強有力工具,可用於清理、轉換、鏈接數據集。藉助其分組功能,用戶可以輕松地對數據進行規范化。

03R-Programming

R大家都不陌生,是用於統計計算和繪制圖形的免費軟體編程語言和軟體環境。R語言在數據挖掘中很流行,常用於開發統計軟體和數據分析。近年來,由於其使用方便、功能強大,得到了很大普及。

04RapidMiner

與KNIME相似,RapidMiner通過可視化程序進行操作,能夠進行分析、建模等等操作。它通過開源平台、機器學習和模型部署來提高數據分析效率。統一的數據科學平台可加快從數據准備到實施的數據分析流程,極大地提高了效率。
第三部分、數據可視化工具

01

Datawrapper

Microsoft PowerBI既提供本地服務又提供雲服務。它最初是作為Excel附加組件引入的,後來因其強大的功能而廣受歡迎。截至目前,它已被視為數據分析領域的領頭羊,並且可以提供數據可視化和商業智能功能,使用戶能夠以較低的成本輕松創建美觀的報告或BI儀錶板。

02

Solver

Solver專用於企業績效管理 (CPM) 數據可視化。其BI360軟體既可用於雲端又可用於本地部署,該軟體側重於財務報告、預算、儀錶板和數據倉庫的四個關鍵分析領域。

03

Qlik

Qlik是一種自助式數據分析和可視化工具。可視化的儀錶板可幫助公司有效地「理解」其業務績效。
04

Tableau Public



Tableau是一種互動式數據可視化工具。與大多數需要腳本的可視化工具不同,Tableau可幫助新手克服最初的困難並動手實踐。拖放功能使數據分析變得簡單。除此之外,Tableau還提供了入門工具包和豐富的培訓資源來幫助用戶創建報告。

05

Google Fusion Tables

Fusion Table是Google提供的數據管理平台。你可以使用它來收集,可視化和共享數據。Fusion Table與電子表格類似,但功能更強大、更專業。你可以通過添加CSV,KML和電子表格中的數據集與同事進行協作。你還可以發布數據作品並將其嵌入到其他網路媒體資源中。

06

Infogram

Infogram提供了超過35種互動式圖表和500多種地圖,幫助你進行數據可視化。多種多樣的圖表(包括柱形圖,條形圖,餅形圖和文字雲等等)一定會使你的聽眾印象深刻。

第四部分、情感分析工具

01

HubSpot』s ServiceHub

HubSpot具有客戶反饋工具,可以收集客戶反饋和評論,然後使用自然語言處理 (NLP) 分析數據以確定積極意圖或消極意圖,最終通過儀錶板上的圖形和圖表將結果可視化。你還可以將HubSpot』s ServiceHub連接到CRM系統,將調查結果與特定聯系人聯系起來。這樣,你可以識別不滿意的客戶,改善服務,以增加客戶保留率。

02

Semantria

Semantria是一款從各種社交媒體收集帖子、推文和評論的工具。Semantria使用自然語言處理來解析文本並分析客戶的態度。通過Semantria,公司可以了解客戶對於產品或服務的感受,並提出更好的方案來改善產品或服務。

03

Trackur

Trackur的社交媒體監控工具可跟蹤提到某一用戶的不同來源。它會瀏覽大量網頁,包括視頻、博客、論壇和圖像,以搜索相關消息。用戶可以利用這一功能維護公司聲譽,或是了解客戶對品牌和產品的評價。

04

SAS Sentiment Analysis



SAS Sentiment Analysis是一款功能全面的軟體。網頁文本分析中最具挑戰性的部分是拼寫錯誤。SAS可以輕松校對並進行聚類分析。通過基於規則的自然語言處理,SAS可以有效地對消息進行分級和分類。

05

Hootsuit Insight

Hootsuit Insight可以分析評論、帖子、論壇、新聞站點以及超過50種語言的上千萬種其他來源。除此之外,它還可以按性別和位置對數據進行分類,使用戶可以制定針對特定群體的戰略營銷計劃。你還可以訪問實時數據並檢查在線對話。

第五部分、資料庫

01

Oracle



毫無疑問,Oracle是開源資料庫中的佼佼者,功能豐富,支持不同平台的集成,是企業的最佳選擇。並且,Oracle可以在AWS中輕松設置,是關系型資料庫的可靠選擇。除此之外,Oracle集成信用卡等私人數據的高安全性是其他軟體難以匹敵的。

02

PostgreSQL

PostgreSQL超越了Oracle、MySQL和Microsoft SQL Server,成為第四大最受歡迎的資料庫。憑借其堅如磐石的穩定性,它可以處理大量數據。

03

Airtable

Airtable是基於雲端的資料庫軟體,善於捕獲和顯示數據表中的信息。Airtable提供一系列入門模板,例如:潛在客戶管理、錯誤跟蹤和申請人跟蹤等,使用戶可以輕松進行操作。

04

MariaDB

MariaDB是一個免費的開源資料庫,用於數據存儲、插入、修改和檢索。此外,Maria提供強大的社區支持,用戶可以在這里分享信息和知識。

05

Improvado

Improvado是一種供營銷人員使用自動化儀錶板和報告將所有數據實時地顯示在一個地方的工具。作為營銷和分析領導者,如果你希望在一個地方查看所有營銷平台收集的數據,那麼Inprovado對你再合適不過了。你可以選擇在Improvado儀錶板中查看數據,也可以將其通過管道傳輸到你選擇的數據倉庫或可視化工具中,例如Tableau、Looker、Excel等。品牌,代理商和大學往往都喜歡使用Improvado,以大大節省人工報告時間和營銷花費。

⑹ 常用的大數據BI工具有哪些_bi大數據是什麼

1、億信ABI

億信ABI是億信華辰開發的一款全能型數據分析平台。支持連接多種類型的數據源,包括:關系型資料庫,分布式資料庫,文件數據源,介面數據源等;也能靈活支持跨源跨庫的數據分析。內置了數倉實施工具,通過拖拽式的流程設計,實現了數據抽取、清洗、轉換、裝載及調度。支持業務人員自助分析,拖拖拽拽就能做出數據分析。

2、Tableau

Tableau是國外比較流行的一款數據可視化工具,可視化功能很強大,對計算機的硬體要求較高,部署較復雜。支持與Matlab進行集成計算。目前在數據挖掘領域做得相對比較簡單,只是內置了預測和聚類兩個挖掘分析演算法,但支持R語言等挖掘語言集成。

3、QlikView

QlikView比較靈活,展示樣式多樣。它允許設置和調整每個對象的每個小方面,並自定義可視化和儀錶板的外觀。QlikView數據文件(QVD文件)概念的引入,一定程度上取代了ETL工具的功能,擁有可集成的ETL(提取,轉換,載入)引擎,能夠執行普通的數據清理操作,但是這可能會很昂貴。

4、PowerBI

PowerBI是微軟提供的一種商業分析產品,因為是微軟的產品,所以它的知名度很高。在產品的功能、易用性、美觀程度液凳舉上都有很好的表現。這個產品的學習成本較低、上手快,因為桌面版粗岩不提供協作選項,因此最適合獨立用戶或在同一個辦公區工作的人使用,對於有復雜業務場景需求的客戶,包鬧碧括有定製開發需求的客戶來說,存在不小的障礙。

5、Finebi

Finebi是帆軟開發的一款敏捷BI工具,帆軟早期專注於傳統報表的圖表組件功能,以價格優勢佔到了不低的市場份額,作為傳統報表起步的公司,在敏捷BI的沖擊下市場受到了沖擊並開始轉向敏捷路線。Finebi做到了將IT人員從分析環節的中心淡去,提供了從數據採集到數據加工處理、數據存儲、數據分析、數據可視化為一體的一站式商業智能解決方案。

關於常用的大數據BI工具有哪些,青藤小編就和您分享到這里了。如果你對大數據工程有濃厚的興趣,希望這篇文章能夠對你有所幫助。如果您還想了解更多數據分析師、大數據工程師的技巧及素材等內容,可以點擊本站的其他文章進行學習。

⑺ 常見的大數據開發工具有哪些

1.Hadoop


Hadoop是一個由Apache基金會所開發的分布式體系基礎架構。用戶能夠在不了解分布式底層細節的情況下,開發分布式程序。充分利用集群的威力進行高速運算和存儲。Hadoop是一個能夠對很多數據進行分布式處理的軟體結構。Hadoop 以一種牢靠、高效、可伸縮的方式進行數據處理。


2.Apache Hive


Hive是一個建立在Hadoop上的開源數據倉庫基礎設施,經過Hive能夠很簡略的進行數據的ETL,對數據進行結構化處理,並對Hadoop上大數據文件進行查詢和處理等。 Hive供給了一種簡略的類似SQL的查詢言語—HiveQL,這為了解SQL言語的用戶查詢數據供給了便利。


3. Apache Spark


Apache Spark是Hadoop開源生態體系的新成員。它供給了一個比Hive更快的查詢引擎,由於它依賴於自己的數據處理結構而不是依靠Hadoop的HDFS服務。一起,它還用於事情流處理、實時查詢和機器學習等方面。


4. Keen IO


Keen IO是個強壯的移動應用分析東西。開發者只需要簡略到一行代碼, 就能夠跟蹤他們想要的關於他們應用的任何信息。開發者接下來只需要做一些Dashboard或者查詢的工作就能夠了。


5. Ambari


Apache Ambari是一種基於Web的東西,支撐Apache Hadoop集群的供給、管理和監控。Ambari已支撐大多數Hadoop組件,包含HDFS、MapRece、Hive、Pig、 Hbase、Zookeper、Sqoop和Hcatalog等。


6. Flume


Flume是Cloudera供給的一個高可用的,高牢靠的,分布式的海量日誌搜集、聚合和傳輸的體系,Flume支撐在日誌體系中定製各類數據發送方,用於搜集數據;一起,Flume供給對數據進行簡略處理,並寫到各種數據接受方(可定製)的才能。


7.MapRece


MapRece是一種編程模型,用於大規模數據集(大於1TB)的並行運算。概念"Map(映射)"和"Rece(歸約)",是它們的首要思維,都是從函數式編程言語里借來的,還有從矢量編程言語里借來的特性。它極大地便利了編程人員在不會分布式並行編程的情況下,將自己的程序運行在分布式體繫上。


關於常見的大數據開發工具有哪些,青藤小編就和您分享到這里了。如果您對大數據工程有濃厚的興趣,希望這篇文章可以為您提供幫助。如果您還想了解更多關於數據分析師、大數據工程師的技巧及素材等內容,可以點擊本站的其他文章進行學習。

⑻ 大數據包括什麼

大數據技術伍拿龐大復雜,基礎的技術包含數據的採集、數據預處理、分布式存儲、NoSQL資料庫、數據倉庫、機器學習、並行計算、可視化等各種技術范疇和不同的技術層面。

大數據主要技術組件:Hadoop、HBase、kafka、Hive、MongoDB、Redis、Spark、Storm、Flink等。

大數據技術包括數據採集,數據管襲宏理,數據分析,數據可視化,數據安全等內容。數據的採集包括感測器採集,系統日誌採集以及網路爬蟲等。數據管理包括傳統的資料庫技術,nosql技術,以及對於針對大規模數據的大數據平台,例如hadoop,spark,storm等。數據分析的核心是機器學習,當然也包括深度學習和強化學習,以及自然語言處理腔禪搭,圖與網路分析等。

⑼ 大數據開發工程師要掌握哪些技術

1. Java編程技術

Java編程技術是大數據學習的基礎塌並,Java是一種強類型語言,擁有極高的跨平台能力,可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序等,是大數據工程師最喜歡的編程工具,因此,想學好大數據,掌握Java基礎是必不陵亮可少的。

2.Linux命令

對於大數據開發通常是在Linux環境下進行的,相比Linux操作系統,Windows操作系統是封閉的操作系統,開源的大數據軟體很受限制,因此,想從事大數據開發相關工作,還需掌握Linux基礎操作命令。

3. Hadoop

Hadoop是大數據開發的重要框架,其核心是HDFS和MapRece,HDFS為海量的數據提供了存儲,MapRece為海量的數據提供了計算,因此,需要重點掌握,除此之外,還需要掌握Hadoop集群、Hadoop集群管理、YARN以及Hadoop高級管理等相關技術與操作!

4. Hive

Hive是基於Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張資料庫表,並提供簡單的sql查詢功能,可以將sql語句轉換為MapRece任務進行運行,十分適合數據倉庫的統尺衫寬計分析。對於Hive需掌握其安裝、應用及高級操作等。

5. Avro與Protobuf

Avro與Protobuf均是數據序列化系統,可以提供豐富的數據結構類型,十分適合做數據存儲,還可進行不同語言之間相互通信的數據交換格式,學習大數據,需掌握其具體用法。

6.ZooKeeper

ZooKeeper是Hadoop和Hbase的重要組件,是一個為分布式應用提供一致性服務的軟體,提供的功能包括:配置維護、域名服務、分布式同步、組件服務等,在大數據開發中要掌握ZooKeeper的常用命令及功能的實現方法。

關於大數據開發工程師要掌握哪些技術,小編就和您分享到這里了。

閱讀全文

與大數據常用組件相關的資料

熱點內容
為什麼硬碟裡面沒有文件卻占內存 瀏覽:242
模具繪圖自學教程 瀏覽:753
怎樣避免u盤吞文件 瀏覽:320
另存為圖層文件為什麼導入無效 瀏覽:340
怎麼把文件標題復制到excel 瀏覽:755
編程軟體用什麼編輯 瀏覽:993
ab編程plc怎麼讓綠燈閃爍3秒 瀏覽:171
linux查找五天內的文件 瀏覽:676
目標文件載入單片機需要什麼軟體 瀏覽:745
豬八戒網網站怎麼注冊 瀏覽:725
為什麼手機文件傳不到微信 瀏覽:212
哪個網站考公務員 瀏覽:164
建築方案設計教程 瀏覽:600
鄭州哪裡兒童學編程比較好 瀏覽:105
Mac登陸密碼怎麼改 瀏覽:388
硬碟什麼情況恢復不了數據 瀏覽:966
蘋果mac開windows界面 瀏覽:752
雲盤的文件夾怎麼發到u盤 瀏覽:87
手機主板修理專用工具 瀏覽:230
web伺服器開發pdf文件 瀏覽:706

友情鏈接