大數據Hadoop:殺雞用的宰牛刀

Hadoop是個龐大的重型解決方案,它的設計目標本來就是大規模甚至超大規模的集羣,面對的是上百甚至上千個節點,這樣就會帶來兩個問題:

自動化管理管任務分配機制:這樣規模的集羣,顯然不大可能針對每個節點提供個性化的管理控制,否則工作量會大到累死人,必須採用自動化的管理和任務分配手段,而這並不是件簡單的事情。

強容錯能力:大規模集羣在某個任務執行週期內,也就是幾小時之內,都有可能發生設備故障。如果沒有強容錯能力可能任何任務都無法執行出來。而容錯同樣並不容易實現,同樣非常消耗計算和存儲資源。

而且,Hadoop的產品線豐富,這本來是好事情,但要把這些模塊都放在一個平臺上運行,還要梳理好各個模塊之間的相互依賴性,就需要一個包羅萬象的複雜框架,這也使得Hadoop體系顯得很沉重。

但是,很多情況下,用戶的數據並不總會有那麼多。除了一些互聯網巨頭企業和國家級通信運營商及銀行外,大多數用戶的數據量並沒有大到需要幾百上千個節點才能處理的地步。而且,很多用戶也只是爲了常規的結構化數據運算(主要也就是SQL),用不着那麼完整的產品線。

結果,我們經常看到的現象是:用戶上了Hadoop,只有四個或八個節點,多的也就十來個,而且也只是安裝個Hive(或別的類似解決方案)來跑跑SQL。

這就是“殺雞用牛刀了”!

爲什麼會這樣?

分享之前我還是要推薦下我自己創建的大數據學習交流Qun531629188
無論是大牛還是想轉行想學習的大學生
小編我都挺歡迎,今天的已經資訊上傳到羣文件,不定期分享乾貨,包括我自己整理的一份最新的適合2018年學習的大數據教程,歡迎初學和進階中的小夥伴。

道理很簡單。現在大數據平臺是個業界趨勢,而經過幾年的宣傳,用戶都覺得傳統關係數據庫不再是未來的方向,即使現在還能用,但總覺得繼續投資在關係數據庫上就有被時代甩下的風險,於是都想去嘗試新技術。但找來找去,也只有Hadoop勉強可用了,選擇Hadoop變成一個政治正確的事情了。

那麼,選用Hadoop有什麼不好呢?牛刀就牛刀,牛刀也可以用來殺雞,反正它開源不要錢,

不是這樣的。雖然Hadoop軟件本身是開源免費的(其實很多用戶上的是商業公司的產品,本來也並不便宜),但因爲它的複雜性,想配置用好它並不容易,維護支持的成本一點也不低。Hadoop事實上是個高端產品,並不很適合數據量規模沒有大到需要上百節點的中小用戶。

大集羣和小集羣的實現技術是完全不一樣的,Hadoop爲了解決大集羣問題而付出的努力並不是沒有成本的。

統一的自動化管理機制固然讓管理工作變簡單了,但也限制了程序員的靈活性。開發人員只能去適應,難以寫出適合業務和數據特徵的代碼,這樣無法發揮機器的最大效能。比如想控制HDFS的文件冗餘方案,讓不同文件的冗餘數不同,而特定的冗餘方案能有效地減少網絡傳輸量從而提高性能。這也許能夠通過修改Hadoop源碼來實現,但並不輕鬆,而且隨意修改底層源碼又會影響升級。

對於小規模的集羣,則沒有必要採用統一管理方式,可以針對每個節點進行個性化配置,程序員也可以自由決定每個節點的計算任務和數據分佈,這樣可以更有效地利用硬件資源,獲得最高的性能,雖然會需要更細緻的工作,但對於小規模集羣,這增加的工作量仍然是可以接受的。

Hadoop投入了相當多資源來實現超強的容錯,這對於大集羣當然也非常必要的。比如MapReduce爲了容錯把任務拆得太碎,而且每次執行結果都會寫盤,以保證任務過程中有節點故障時仍然可以執行下去,這會嚴重影響性能。而且,這種體系也難以直接控制執行次序,在編寫有序有關聯運算時就很困難,需要費勁去繞(這個問題以後還會再談到)。

而對於幾個到十幾個節點的小集羣,就不需要這麼強的容錯能力了。在幾小時的任務週期內,整個集羣所有節點都能正常工作是個大概率事件。對於小集羣,我們只要保證有少數節點故障時整個集羣還能繼續工作以接受新任務,而讓當前正在執行的任務失敗也是可以容忍的,畢竟這並不會經常發生。

複雜的框架本身也會消耗很多資源。小集羣本來就沒有幾個節點,還要把有限的資源花費在這些不實際計算的事情上,顯然是不划算的。在目標任務類型較爲單一時,應當選擇更適合的框架,沒必要去追求大而全的東西。

“牛刀”應當去做它適合做的事,也就數據量大但運算簡單的任務,用俗話說就是“傻大笨粗”。真到了幾百個節點的集羣,那還只有Hadoop能做了,而精細的活兒真不合適它來幹。

對於小集羣,我們需要更輕量級的大數據解決方案。

大數據的技術本質是高性能,而提高性能的需求無處不在,並不是只有那種規模的大數據。比即時查詢設計的數據量就不會也不可能太大(否則不可能即時),這種場景會要求有很好的集成性,但Hadoop基本上不可能被嵌到應用程序裏面,它只能在邊上作爲一個數據源工作;有些臨時性數據處理時需要隨時使用,也不可能再爲之專門建設大數據平臺,比如爲了處理一批日誌而搭建一個Hadoop,等環境搭好時任務已經過期了。

有一句話叫做三人行必有我師,其實做爲一個開發者,有一個學習的氛圍跟一個交流圈子特別重要這是一個我的大數據交流學習羣531629188不管你是小白還是大牛歡迎入駐,正在求職的也可以加入,大家一起交流學習,話糙理不糙,互相學習,共同進步,一起加油吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章