分享以下大數據處理工具 大數據處理工具有哪些?( 二 )


Spark不只是在批處理上有所成績,而是更加注重整個生態圈的建設,其擁有流式處理框架SparkStreaming,采用微批的形式達到類似流處理的效果,現在又推出了Structured Streaming,實現基于狀態的流處理框架 。 此外還擁有SparkSQL來幫助非開發人員更加便捷的調用Spark的服務和Spark MLlib這個機器學習庫 。
Spark雖好,但其對內存資源消耗也很大,同時也使得他在穩定性上不如MapReduce,所以有些大公司數倉的日常任務仍舊采用傳統MapReduce的方式執行,不求最快,但求最穩 。 我們的系統在剛從MapReduce上切到Spark時,每天夜里也是任務異常頻發,最后調整了任務和資源分配,再加上一個很粗暴的重試機制解決了 。
Apache Flink官網:https://flink.apache.org/
Flink是德國Data Artisans公司開發一款分布式計算系統,該公司于19年初被阿里巴巴集團收購 。 包括Spark和Kafka,也都看到了未來流式計算的前景是非常巨大的,紛紛建立屬于自己的流式計算生態圈 。
Flink和Spark Streaming相比,前者是真正的流式計算,而后者是微批處理,雖然批次足夠小,但其本質畢竟還是批處理,這就導致有些場景SparkStreaming注定無法滿足,雖然Spark現在將重心轉移到了Structured Streaming,它彌補了Spark Streaming很多的不足,但是在處理流程上仍然是微批處理 。
而Flink在設計之初就同時考慮了批處理和流處理這兩種需求,所以使用者也可以只通過一個計算引擎,就能實現批處理和流處理兩種計算場景,其主要幾個需要清楚的特性我覺得分別是:State狀態管理,CheckPoint容錯機制,Window滑動窗口,和Watermark亂序解決 。 這些內容網上都有很多介紹,不再闡述 。
Apache Impala官網:https://impala.apache.org/
Impala是Cloudera公司用C++開發的支持SQL語義的查詢系統,可以用來查詢HDFS、HBase、Kudu的內容,也支持多種序列化和壓縮格式,因為也是基于內存的計算,比傳統MapReduce快很多 。 不過因為已經使用了Spark,所以組里并沒有對Impala進行大規模的應用 。 經過一些零散的調研和了解,好像其它公司對Impala的應用也不是非常多 。
Apach Zookeeper官網:https://zookeeper.apache.org/
Zookeeper無論在數據系統還是在其它后端系統的使用場景都非常廣,它可以用作分布式鎖服務,可以用做系統的配置中心,可以協助完成一致性算法的選主過程,可以用于ZKFC做節點健康情況的探查,總之用處還有很多 。 而它的工作機制,基本就是ZAB協議的機制,一個支持崩潰恢復的原子廣播協議,其主要組成也是由一個Leader和多個Follower組成的,數據的提交遵循2PC協議 。 當Leader崩潰時,Follower會自動切換狀態開始重新選主,重新選完之后再進行多節點的數據對齊 。
Apache Sqoop官網:https://sqoop.apache.org/
一款用于在傳統關系型數據庫和HDFS之間互相進行數據傳遞的工具,無論是import還是export都提供了大量的參數,因為是分布式執行,數據傳輸的速度也非???。 只是在使用的過程中需要注意數據源中的異常數據,會比較容易造成數據傳遞過程中的異常退出 。 為了彌補Sqoop的功能單一,推出了Sqoop 2,架構上比Sqoop 1復雜了很多,不過我沒有用過 。
Apache Flume官網:http://flume.apache.org/
分布式數據傳輸工具,支持包含文件、Netcat、JMS、HTTP在內的多種數據源 。 其結構上分成Source、Channel、Sink三部分,Source將獲取到的數據緩存在Channel中,這個Channel可以是文件,可以是內存,也可以使用JDBC,Sink從Channel消費數據,傳遞給系統中的其他模塊,比如HBase、HDFS、Kafka等等 。
Apache Kafka官網:http://kafka.apache.org/
曾經是一款由Scala開發的分布式消息隊列產品,現在生態已經擴展了,因為它推出了Kafka Streaming,所以現在也應該被稱作是一個流處理平臺了,但這里不說Kafka Streaming,因為沒有用過和了解過 。
Kafka的隊列按照Topic劃分,每個Topic下由多個Partition組成,在單個Partition中的消息保證是有序的 。 這種結構下確保了消息是在磁盤順序寫入的,節省了磁盤尋址的時間,所以數據落盤的速度非常快 。 加之采用了mmap的方式,減少了用戶態和內核態之間的數據拷貝次數,mmap是一種將文件內容和內存地址映射的技術,提效十分明顯 。 Kafka和Flume的配合使用,形成了流式處理領域里的經典框架 。
Apache Ranger & Sentry官網:http://ranger.apache.org/
官網:http://sentry.apache.org/
Ranger和Sentry都是分布式的數據安全工具,這兩個產品的功能也基本是一樣的,就是去管理大數據計算生態圈產品的權限,Sentry是采用插件的形式,將自己集成到Impala、Hive、HDFS、Solr等產品上,當用戶向這些產品發起請求,產品會先向Sentry Server進行校驗,Sentry也可以和Kerberos配合使用,從而完成跨平臺統一權限管理 。 而Ranger所提供的功能也類似,但是所支持的產品更加多樣,包括HDFS、HBase、Hive、YARN、Storm、Solr、Kafka、Atlas等,其同樣也是采用一個Ranger Admin連接多個集成到產品上的Ranger插件完成的權限驗證過程 。

推薦閱讀