給剛玩Hadoop的朋友一些建議

鴨脖發表於2015-08-11

隨著兩會中間央視新聞天天說大資料,很多人紛紛開始關注大資料和Hadoop以及資料探勘和資料視覺化了,我現在創業,遇到很多傳統資料行業往Hadoop上面去轉型的公司和個人,提了很多問題,大多數問題還都是差不多的。所以我想整理一些,也可能是很多人都關注的問題。


關於Hadoop版本的選擇?

   目前為止,作為半隻腳邁進Hadoop大門的人,我建議大家還是選擇Hadoop 1.x用。可能很多人會說,Hadoop都出到2.4,為啥還用1.x呢,說這話一聽就沒玩過hadoop。

   理由一: Hadoop 1.x和2.x是完全兩個不同的東西,並不是像說單機的webserver從1.0升級到2.0那麼簡單的事情。也不是說我現在用的mysql 5.0,只要編譯一個新版本就直接無縫遷移到5.5的事情。Hadoop從1.0過度到2.0是整個架構體系全部推翻重寫的。從實現方式到使用者介面完全是兩個完全不同的東西,不要簡單的認為那不過就像nginx從0.8升級到1.4一樣。所以我給的建議是,生產環境用1.x,實驗環境部署2.x作為熟悉使用。

   理由二: 依然是,Hadoop不是webserver,分散式系統儘管Hadoop實現出來了,但是他仍然是非常複雜的一套體系,單說HDFS儲存,以前Hadoop 0.20.2想升級到0.20.203,首先你需要在所有節點部署上新版的Hadoop,然後停止整個叢集的所有服務,做好後設資料備份,然後做HDFS升級,還不能保證HDFS一定能升級成功。這樣升級一次的代價是很大的,停服務不說,萬一升級不成功能不能保證後設資料完整無誤都是不可預知的。遠比你想象的麻煩的多得多得多。千萬不要以為有了Cloudera Manager或者其他管理軟體你就真的可以自動化運維了,部署Hadoop只是萬里長征的第一步而已。

   理由三: Hadoop 2.x目前很不穩定,Bug比較多,更新迭代速度太快,如果你想選擇2.x,想清楚再做決定,這玩意不是說你選擇新的版本就萬無一失了,Openssl多少年了,還出現了心臟滴血的漏洞,何況剛出來才不到一年的Hadoop2,要知道,Hadoop升級到1.0用了差不多7,8年的時間,而且經過了無數大公司包括Yahoo,Facebook,BAT這樣的公司不停的更新,修補,才穩定下來。Hadoop2才出現不到一年,根本沒有經過長期穩定的測試和執行,看最近Hadoop從2.3升級到2.4只用了一個半月,就修復了400多個bug。

   所以,不建議大家現在直接在生產叢集就上2.x,再等等看吧,等穩定了再上也不遲。如果大家關注Apache JIRA的話,可以看到Hadoop 3.0已經開始內部bug跟蹤了。


關於Hadoop的人才?

   我覺得企業需要從兩個方面來考慮hadoop的人才問題,一個是開發人才,一個是維護人才。

   開發人才目前比較匱乏,基本都集中在網際網路,但這個是一個在相對短時間內能解決的事情,隨著Hadoop培訓的普及和傳播。以及Hadoop本身在介面方面的完善,這樣的人才會越來越多。

   維護人才我覺得網際網路外的行業一段時間內基本不用考慮,不是太多了,而是根本沒有。Hadoop和雲端計算最後拼的就是運維,大規模分散式系統的運維人才極難培養。特別是DevOps,本身DevOps就很稀缺,而在稀缺人才中大部分又是用puppet, fabric去搞web運維的,轉向分散式系統運維難度還是有的。所以這種人才很難招聘,也很難培養。參看左耳朵耗子的InfoQ訪談 http://www.infoq.com/cn/articles/chenhao-on-cloud

   然後你需要明確自己想要的開發人才型別,打個比方Hadoop就好象是windows或者linux作業系統,在這個作業系統上,既可以用photoshop畫圖,又可以用3dmax做動畫,也可以用Office處理表格,但是應用軟體所實現的目的是不一樣的。這還是需要CTO,CIO對大資料和Hadoop及周邊應用有個起碼的瞭解。不要把Hadoop跟mysql php或者傳統的J2EE做類比,認為沒什麼難的,大不了外包。完全不是這麼回事。


關於Hadoop的培訓內容?

   經過幾家企業的Hadoop內部培訓,我發現剛轉型企業都有一個問題是貪多。想做一次培訓把hadoop和周邊所有東西都瞭解透了,比較典型的是我最近去上海培訓的一個公司,從Hadoop到HBase到Mahout到分詞到Spark Storm全要聽。然後培訓機構就只能找幾個老師分別講不同的內容,我覺得這種培訓對企業的意義不大,頂多就是給員工一個扎堆睡午覺的機會。

   第一、Hadoop就不是一兩次講課就能搞明白的東西,除了理論知識,還需要大量的實踐經驗的支援。

   第二、每個Hadoop生態元件都是一個很複雜的玩意,使用確實簡單,但是要真正理解每一個元件沒那麼容易。尤其是Mahout,Spark,R這些涉及大量統計學和數學理論的玩意,你叫一幫搞產品的,毫無程式設計和統計學背景的人來聽課,他們真的只能睡午覺,我都覺得讓他們過來聽Hadoop是很殘忍的事情,明明聽不懂,因為領導在旁邊,還不得不努力堅持不睡覺。

   第三、每個人擅長的領域不同,沒有任何一個老師既能講Windows伺服器運維,又能講Excal高階技巧還能講3DMax動畫PhotoShop繪圖的。而培訓機構為了搶單,往往承諾企業找幾個老師一起講,企業也往往覺得,一樣的價格,我把所有都聽了,多爽啊。其實不然,每個老師的講課風格,知識點水平,內容設計都是不同的,雞肉,麵粉,蔬菜放在一起不一定是大盤雞和皮帶面,也很有可能是方便麵,最後搞得食之無味棄之可惜。所以企業在選擇做培訓的時候一定要有的放矢,不要搞大而全,浪費資源不說,還毫無效果。可以分開幾種不同的培訓方向,找不同的,專業性強的培訓機構來完成。當然,這也需要CTO,CIO具有一定的想法和眼光,更多的是,起碼你作為領導者,應該比別人瞭解的更多一點,不是說技術細節上的,而是技術方向上的把握要比員工更精準。


關於與傳統業務的對接?

   這個也是很多人關心的,特別是傳統企業,之前用的是Oracle,大量的資料存放在裡面,一下子用Hadoop替代是不可能的。這個我覺得就屬於想多了,Hadoop說白了是離線分析處理工具,目的不是代替你的資料庫,事實上也根本不可能代替關係型資料庫。他所作的是關係型資料庫做不了的髒活累活,是原有業務架構的補充,而不是替換者。

   而且這種輔助和替換是逐步完成的,不能一蹴而就,在我所認知的範圍內,沒有任何一家公司上來就說我直接把mysql不用了,直接上Hadoop,碰上這樣的,我首先會讚歎他的決心,然後我拒絕給他出方案,我會明確告訴他,這樣是不可能的。

   Hadoop提供了多種工具給大家做傳統資料庫業務的對接,除了sqoop,你還可以自己寫,Hadoop介面很簡單的,JDBC介面也很簡單的。


有日子沒更新部落格了,創業真的很忙,也很難。好在大批的Hadoop圈子裡的朋友都很支援我們,給予我們很多無私的幫助,謝謝大家。

轉自 本文出自 “實踐檢驗真理” 部落格,轉載請與作者聯絡!

相關文章