您好,登錄后才能下訂單哦!
本篇內容介紹了“Flume、Kafka、Spark基本概念是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
Flume是Cloudera提供的一個高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸的系統,Flume支持在日志系統中定制各類數據發送方,用于收集數據;同時,Flume提供對數據進行簡單處理,并寫到各種數據接受方(可定制)的能力。
Flume提供對數據進行簡單處理,并寫到各種數據接受方(可定制)的能力 Flume提供了從console(控制臺)、RPC(Thrift-RPC)、text(文件)、tail(UNIX tail)、syslog(syslog日志系統,支持TCP和UDP等2種模式),exec(命令執行)等數據源上收集數據的能力。
Flume-og采用了多Master的方式。為了保證配置數據的一致性,Flume引入了ZooKeeper,用于保存配置數據,ZooKeeper本身可保證配置數據的一致性和高可用,另外,在配置數據發生變化時,ZooKeeper可以通知Flume Master節點。Flume Master間使用gossip協議同步數據。
Flume-ng最明顯的改動就是取消了集中管理配置的 Master 和 Zookeeper,變為一個純粹的傳輸工具。Flume-ng另一個主要的不同點是讀入數據和寫出數據現在由不同的工作線程處理(稱為 Runner)。 在 Flume-og 中,讀入線程同樣做寫出工作(除了故障重試)。如果寫出慢的話(不是完全失敗),它將阻塞 Flume 接收數據的能力。這種異步的設計使讀入線程可以順暢的工作而無需關注下游的任何問題。
Kafka是一種高吞吐量的分布式發布訂閱消息系統,有如下特性:
通過O(1)的磁盤數據結構提供消息的持久化,這種結構對于即使數以TB的消息存儲也能夠保持長時間的穩定性能。
高吞吐量:即使是非常普通的硬件Kafka也可以支持每秒數百萬的消息。
支持通過Kafka服務器和消費機集群來分區消息。
支持Hadoop并行數據加載。
Twitter將Storm正式開源了,這是一個分布式的、容錯的實時計算系統,它被托管在GitHub上,遵循 Eclipse Public License 1.0。Storm是實時處理系統。Storm基本是用Clojure(還有一部分是用java)寫的。
Storm為分布式實時計算提供了一組通用原語,可被用于“流處理”之中,實時處理消息并更新數據庫。這是管理隊列及工作者集群的另一種方式。 Storm也可被用于“連續計算”(continuous computation),對數據流做連續查詢,在計算時就將結果以流的形式輸出給用戶。它還可被用于“分布式RPC”,以并行的方式運行昂貴的運算。 Storm的主工程師Nathan Marz表示:
Storm可以方便地在一個計算機集群中編寫與擴展復雜的實時計算,Storm用于實時處理,就好比 Hadoop 用于批處理。Storm保證每個消息都會得到處理,而且它很快——在一個小集群中,每秒可以處理數以百萬計的消息。更棒的是你可以使用任意編程語言來做開發。
Storm的主要特點如下:
簡單的編程模型。類似于MapReduce降低了并行批處理復雜性,Storm降低了進行實時處理的復雜性。
可以使用各種編程語言。你可以在Storm之上使用各種編程語言。默認支持Clojure、Java、Ruby和Python。要增加對其他語言的支持,只需實現一個簡單的Storm通信協議即可。
容錯性。Storm會管理工作進程和節點的故障。
水平擴展。計算是在多個線程、進程和服務器之間并行進行的。
可靠的消息處理。Storm保證每個消息至少能得到一次完整處理。任務失敗時,它會負責從消息源重試消息。
快速。系統的設計保證了消息能得到快速的處理,使用?MQ作為其底層消息隊列。
本地模式。Storm有一個“本地模式”,可以在處理過程中完全模擬Storm集群。這讓你可以快速進行開發和單元測試。
Storm集群由一個主節點和多個工作節點組成。主節點運行了一個名為“Nimbus”的守護進程,用于分配代碼、布置任務及故障檢測。每個工作節 點都運行了一個名為“Supervisor”的守護進程,用于監聽工作,開始并終止工作進程。Nimbus和Supervisor都能快速失敗,而且是無狀態的,這樣一來它們就變得十分健壯,兩者的協調工作是由Apache ZooKeeper來完成的。
Storm的術語包括Stream、Spout、Bolt、Task、Worker、Stream Grouping和Topology。Stream是被處理的數據。Spout是數據源。Bolt處理數據。Task是運行于Spout或Bolt中的 線程。Worker是運行這些線程的進程。Stream Grouping規定了Bolt接收什么東西作為輸入數據。數據可以隨機分配(術語為Shuffle),或者根據字段值分配(術語為Fields),或者 廣播(術語為All),或者總是發給一個Task(術語為Global),也可以不關心該數據(術語為None),或者由自定義邏輯來決定(術語為 Direct)。Topology是由Stream Grouping連接起來的Spout和Bolt節點網絡。在Storm Concepts頁面里對這些術語有更詳細的描述。
Scala是一門多范式的編程語言,一種類似java的編程語言,設計初衷是實現可伸縮的語言、并集成面向對象編程和函數式編程的各種特性。
Scala有幾項關鍵特性表明了它的面向對象的本質。例如,Scala中的每個值都是一個對象,包括基本數據類型(即布爾值、數字等)在內,連函數也是對象。另外,類可以被子類化,而且Scala還提供了基于mixin的組合(mixin-based composition)。
與只支持單繼承的語言相比,Scala具有更廣泛意義上的類重用。Scala允許定義新類的時候重用“一個類中新增的成員定義(即相較于其父類的差異之處)”。Scala稱之為mixin類組合。
Scala還包含了若干函數式語言的關鍵概念,包括高階函數(Higher-Order Function)、局部套用(Currying)、嵌套函數(Nested Function)、序列解讀(Sequence Comprehensions)等等。
Scala是靜態類型的,這就允許它提供泛型類、內部類、甚至多態方法(Polymorphic Method)。另外值得一提的是,Scala被特意設計成能夠與Java和.NET互操作。Scala當前版本還不能在.NET上運行(雖然上一版可以-_-b),但按照計劃將來可以在.NET上運行。
Scala可以與Java互操作。它用scalac這個編譯器把源文件編譯成Java的class文件(即在JVM上運行的字節碼)。你可以從Scala中調用所有的Java類庫,也同樣可以從Java應用程序中調用Scala的代碼。用David Rupp的話來說,
它也可以訪問現存的數之不盡的Java類庫,這讓(潛在地)遷移到Scala更加容易。
這是一個大規模并行處理(MPP)式 SQL 大數據分析引擎(注:
Impala像Dremel一樣,其借鑒了MPP(Massively Parallel Processing,大規模并行處理)并行數據庫的思想,拋棄了MapReduce這個不太適合做SQL查詢的范式,從而讓Hadoop支持處理交互式的工作負載
Impala 號稱在性能上比Hive高出3~30倍,甚至預言說在將來的某一天可能會超過Hive的使用率而成為Hadoop上最流行的實時計算平臺
Impala的目的不在于替換現有的MapReduce工具,如Hive,而是提供一個統一的平臺用于實時查詢。事實上Impala的運行也是依賴Hive的元數據。
與Hive類似,Impala也可以直接與HDFS和HBase庫直接交互。只不過Hive和其它建立在MapReduce上的框架適合需要長時間運行的批處理任務。例如那些批量提取,轉化,加載(ETL)類型的Job。而Impala主要用于實時查詢。
hive是基于Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張數據庫表,并提供簡單的sql查詢功能,可以將sql語句轉換為MapReduce任務進行運行。 其優點是學習成本低,可以通過類SQL語句快速實現簡單的MapReduce統計,不必開發專門的MapReduce應用,十分適合數據倉庫的統計分析。
Hive是建立在 Hadoop 上的數據倉庫基礎構架。它提供了一系列的工具,可以用來進行數據提取轉化加載(ETL),這是一種可以存儲、查詢和分析存儲在 Hadoop 中的大規模數據的機制。Hive 定義了簡單的類 SQL 查詢語言,稱為 HQL,它允許熟悉 SQL 的用戶查詢數據。同時,這個語言也允許熟悉 MapReduce 開發者的開發自定義的 mapper 和 reducer 來處理內建的 mapper 和 reducer 無法完成的復雜的分析工作。
Hive 沒有專門的數據格式。 Hive 可以很好的工作在 Thrift 之上,控制分隔符,也允許用戶指定數據格式。
Spark是UC Berkeley AMP lab所開源的類Hadoop MapReduce的通用并行框架,Spark,擁有Hadoop MapReduce所具有的優點;但不同于MapReduce的是Job中間輸出結果可以保存在內存中,從而不再需要讀寫HDFS,因此Spark能更好地適用于數據挖掘與機器學習等需要迭代的MapReduce的算法。
Spark 是一種與 Hadoop 相似的開源集群計算環境,但是兩者之間還存在一些不同之處,這些有用的不同之處使 Spark 在某些工作負載方面表現得更加優越,換句話說,Spark 啟用了內存分布數據集,除了能夠提供交互式查詢外,它還可以優化迭代工作負載。
Spark 是在 Scala 語言中實現的,它將 Scala 用作其應用程序框架。與 Hadoop 不同,Spark 和 Scala 能夠緊密集成,其中的 Scala 可以像操作本地集合對象一樣輕松地操作分布式數據集。
盡管創建 Spark 是為了支持分布式數據集上的迭代作業,但是實際上它是對 Hadoop 的補充,可以在 Hadoop 文件系統中并行運行。通過名為 Mesos 的第三方集群框架可以支持此行為。Spark 由加州大學伯克利分校 AMP 實驗室 (Algorithms, Machines, and People Lab) 開發,可用來構建大型的、低延遲的數據分析應用程序。
“Flume、Kafka、Spark基本概念是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。