Spark精華問答 | 為什麼選擇Spark作為流計算引擎?

2019-08-05     科技百分百

總的來說,Spark採用更先進的架構,使得靈活性、易用性、性能等方面都比Hadoop更有優勢,有取代Hadoop的趨勢,但其穩定性有待進一步提高。我總結,具體表現在如下幾個方面。

1

Q:為什麼選擇Kafka去承擔類似數據總線的角色

A:絕大部分是由於它簡單的架構以及出色的吞吐量, 並且與Spark也有專門的集成模塊. Kafka的出色吞吐量主要是來自於最大化利用系統緩存以及順序讀寫所帶來的優點, 同時offset和partition的涉及也提供了較好的容災性.

2

Q:為什麼選擇Spark作為流計算引擎?

A:主要是由於Spark本身優雅的RDD設計讓分布式編程更簡單, 同時結合Spark的內存緩存層也使得計算更快,而Spark對各種技術的集成與支持, 能夠使技術棧更簡單和通用, 也是選用它的一個重要原因. 而Spark的DirectKafkaInputDStream也提供了簡單有效的HA.

3

Q:Spark和Hadoop的操作模型區別

A:Hadoop:只提供了Map和Reduce兩種操作所有的作業都得轉換成Map和Reduce的操作。

Spark:提供很多種的數據集操作類型比如Transformations 包括map, filter, flatMap, sample, groupByKey, reduceByKey, union, join, cogroup, mapValues,sort,partionBy等多種操作類型,還提供actions操作包括Count,collect, reduce, lookup, save等多種。這些多種多樣的數據集操作類型,給開發上層應用的用戶提供了方便。

4

Q:spark Streaming 是什麼?

A:Spark Streaming是一種構建在Spark上的實時計算框架,它擴展了Spark處理大規模流式數據的能力。

首先,Spark Streaming把實時輸入數據流以時間片Δt (如1秒)為單位切分成塊,Spark Streaming會把每塊數據作為一個RDD,並使用RDD操作處理每一小塊數據,每個塊都會生成一個Spark Job處理,最終結果也返回多塊。在Spark Streaming中,則通過操作DStream(表示數據流的RDD序列)提供的接口,這些接口和RDD提供的接口類似。

正如Spark Streaming最初的目標一樣,它通過豐富的API和基於內存的高速計算引擎讓用戶可以結合流式處理,批處理和交互查詢等應用。因此Spark Streaming適合一些需要歷史數據和實時數據結合分析的應用場合。當然,對於實時性要求不是特別高的應用也能完全勝任,另外通過RDD的數據重用機制可以得到更高效的容錯處理。

5

Q:Spark streaming+Kafka應用

A:WeTest輿情監控對於每天爬取的千萬級遊戲玩家評論信息都要實時的進行詞頻統計,對於爬取到的遊戲玩家評論數據,我們會生產到Kafka中,而另一端的消費者我們採用了Spark Streaming來進行流式處理,首先利用上文我們闡述的Direct方式從Kafka拉取batch,之後經過分詞、統計等相關處理,回寫到DB上(至於Spark中,由此高效實時的完成每天大量數據的詞頻統計任務。

小夥伴們沖鴨,後台留言區等著你!

關於Spark,今天你學到了什麼?還有哪些不懂的?除此還對哪些話題感興趣?快來留言區打卡啦!留言方式:打開第XX天,答:……

同時歡迎大家搜集更多問題,投稿給我們!風裡雨里留言區里等你~

福利

1、掃描添加小編微信,備註「姓名+公司職位」,加入【雲計算學習交流群】,和志同道合的朋友們共同打卡學習!

文章來源: https://twgreatdaily.com/zh/TRK2YWwBUcHTFCnfYxEC.html