大數據前景分析:Hadoop將被Spark替代?

談到大數據,相信大家對HadoopApache Spark這兩個名字並不陌生。然而,最近業界有一些人正在大張旗鼓的宣揚Hadoop將死,Spark將立。他們究竟是危言聳聽譁衆取寵還是眼光獨到堪破未來呢?Hadoop相比,Spark技術如何?現工業界大數據技術都在使用何種技術?如果現在想要參加大數據培訓的話,應該從哪一種開始呢?

 

1先說二者之間的區別吧。

首先,HadoopSpark解決問題的層面不同。

HadoopApache Spark兩者都是大數據框架,但是各自存在的目的不盡相同。Hadoop實質上更多是一個分佈式數據基礎設施: 它將巨大的數據集分派到一個由普通計算機組成的集羣中的多個節點進行存儲,意味着您不需要購買和維護昂貴的服務器硬件。

同時,Hadoop還會索引和跟蹤這些數據,讓大數據處理和分析效率達到前所未有的高度。Spark,則是那麼一個專門用來對那些分佈式存儲的大數據進行處理的工具,它並不會進行分佈式數據的存儲。

其次,還有一點也值得注意——這兩者的災難恢復方式迥異。因爲Hadoop將每次處理後的數據都寫入到磁盤上,所以其天生就能很有彈性的對系統錯誤進行處理。

Spark的數據對象存儲在分佈於數據集羣中的叫做彈性分佈式數據集(RDD: Resilient Distributed Dataset)中。這些數據對象既可以放在內存,也可以放在磁盤,所以RDD同樣也可以提供完成的災難恢復功能。

由於兩者的側重點不同,使用場景不同,大講臺老師認爲其實並沒有替代之說。Spark更適合於迭代運算比較多的MLDM運算。因爲在Spark裏面,有RDD的概念。RDD可以cache到內存中,那麼每次對RDD數據集的操作之後的結果,都可以存放到內存中,下一個操作可以直接從內存中輸入,省去了MapReduce大量的磁盤IO操作。但是,我們也要看到spark的限制:內存。我認爲Hadoop雖然費時,但是在OLAP等大規模數據的應用場景,還是受歡迎的。目前Hadoop涵蓋了從數據收集、到分佈式存儲,再到分佈式計算的各個領域,在各領域都有自己獨特優勢。

 

2爲什麼有這麼多人不看好Hadoop力捧Spark?

很多人在談到Spark代替Hadoop的時候,其實很大程度上指的是代替MapReduce

MapReduce的缺陷很多,最大的缺陷之一是Map + Reduce的模型。這個模型並不適合描述複雜的數據處理過程。很多公司把各種奇怪的Machine Learning計算用MR模型描述,不斷挖掘MR潛力,對系統工程師和Ops也是極大挑戰了。很多計算,本質上並不是一個MapShuffleReduce的結構,比如我編譯一個SubQuerySQL,每個Query都做一次Group By,我可能需要MapReduce+Reduce,中間不希望有無用的Map;又或者我需要Join,這對MapReduce來說簡直是噩夢,什麼給左右表加標籤,小表用Distributed Cache分發,各種不同JoinHack,都是因爲MapReduce本身是不直接支持Join的,其實我需要的是,兩組不同的計算節點掃描了數據之後按照Key分發數據到下一個階段再計算,就這麼簡單的規則而已;再或者我要表示一組複雜的數據Pipeline,數據在一個無數節點組成的圖上流動,而因爲MapReduce的呆板模型,我必須一次一次在一個Map/Reduce步驟完成之後不必要地把數據寫到磁盤上再讀出,才能繼續下一個節點,因爲Map Reduce2個階段完成之後,就算是一個獨立計算步驟完成,必定會寫到磁盤上等待下一個Map Reduce計算。

上面這些問題,算是每個號稱下一代平臺都嘗試解決的。現在號稱次世代平臺現在做的相對有前景的是HortonworksTezDatabricksSpark。他們都嘗試解決了上面說的那些問題。TezSpark都可以很自由地描述一個Job裏執行流。他們相對現在的MapReduce模型來說,極大的提升了對各種複雜處理的直接支持,不需要再絞盡腦汁“挖掘”MR模型的潛力。綜上,Spark數據處理速度秒殺MapReduce因爲其處理數據的方式不一樣,會比MapReduce快上很多。

 

3可以Hadoop“死刑”嗎?

目前備受追捧的Spark還有很多缺陷,比如:

1穩定性方面,由於代碼質量問題,Spark長時間運行會經常出錯,在架構方面,由於大量數據被緩存在RAM中,Java回收垃圾緩慢的情況嚴重,導致Spark性能不穩定,在複雜場景中SQL的性能甚至不如現有的Map/Reduce

2不能處理大數據,單獨機器處理數據過大,或者由於數據出現問題導致中間結果超過RAM的大小時,常常出現RAM空間不足或無法得出結果。然而,Map/Reduce運算框架可以處理大數據,在這方面,Spark不如Map/Reduce運算框架有效。

3不能支持複雜的SQL統計;目前Spark支持的SQL語法完整程度還不能應用在複雜數據分析中。在可管理性方面,SparkYARN的結合不完善,這就爲使用過程中埋下隱憂,容易出現各種難題。

大講臺老師並不想說SparkHadoop誰強誰弱,而是想告訴大家——在比較HadoopSpark方面要記住的最重要一點就是,它們並不是非此即彼的關係,因爲它們不是相互排斥,也不是說一方是另一方的簡易替代者。兩者彼此兼容,這使得這對組合成爲一種功能極其強大的解決方案,適合諸多大數據應用場合。

 

也就是說,大數據行業的老鳥們如果只會Hadoop就要當心了,擠出時間來學習Spark和其他新技術是絕對必要的;而對於目前正準備嘗試大數據的朋友們,從Hadoop開始仍然是最好的選擇。長遠來看新技術總會不斷出現,不管是Spark還是Tez似乎都有着更美妙的大數據前景,然而沒有人會勸你完全拋開Hadoop

發佈了36 篇原創文章 · 獲贊 10 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章