1.概述
這篇部落格不涉及到具體的編碼,只是解答最近一些朋友心中的疑惑。最近,一些朋友和網友紛紛私密我,我總結了一下,疑問大致包含以下幾點:
- 我學 Hadoop 後能從事什麼崗位?
- 在遇到問題,我該如何去尋求解決方案?
針對以上問題,我在這裡贅述下個人的經驗,給即將步入 Hadoop 行業的同學做個參考。
2.我學 Hadoop 後能從事什麼崗位
目前 Hadoop 相關的工作大致分為三類:應用,運維,二次開發
2.1 應用
這方面的主要工作是編寫MapReduce作業,利用Hive之類的套件來進行資料分析或資料探勘,Hadoop在這裡只是一個基礎平臺,仍然是需要自己編寫相應的邏輯去實現對應的業務。從事這方面的工作,你至少要懂一門程式語言,如Java,Shell,Python等。由於Hadoop的原始碼是用Java語言編寫的,目前業界Java方面的Hadoop社群活躍度相對較高,Shell和Python對應的活躍度較少。目前培訓機構都是在這方面進行培養的比較多,你只需要對Hadoop的框架構造,基本的組織結構有所瞭解,理解MapReduce的程式設計框架和模式,懂得程式碼調優,能夠使用Hadoop的相關套件,如:Hive,Sqoop,Flume等。
2.2運維
這方面主要負責Hadoop叢集的搭建,系統的各種引數的調優,叢集故障處理和保持叢集執行穩定,這部分人才目前市場上是較為奇缺的,也是很多在Hadoop平臺相對成熟的企業所青睞的人才,對於從事這部分工作的人同學來說,他可以不懂Java語言,但是在工作上必須處事冷靜,做事嚴謹認真。如果由較強的鑽研精神,可以通過自己的在實際工作中摸索一些調優的解決方案。同樣,也可以參加一些峰會,沙龍之類的互動活動與業界的一些牛人交流工作心得,從而來獲取一些有價值的方案。另外一個能體現Hadoop運維價值的因素,遇到問題能夠快速定位並找到解決方案,不過這部分的工作經驗都是靠平時工作日積月累出來的,當然和你運維的叢集規模大小也有一定關係,若你由機會進入到擁有大叢集的公司進行這方面的工作,你的成長會很快,不單單是運維Hadoop。Hadoop運維這類工作是沒法弄虛作假的,你想隨便谷歌點資料去忽悠,很容易被識破。
2.3二次開發
從事這方面工作的要求較高,而且也不是所有的企業都設有這樣的工作崗位,這部分的工作有:按照企業實際需求,對Hadoop的框架本身進行修改以適用於企業本身業務;研究版本的新特性;規劃版本升級等等。這方面就需要你對Hadoop的原始碼進行深入瞭解學習和研究,時刻關注Hadoop官網及Hadoop社群,瞭解最新版本的特性,把握Hadoop未來的發展前景及房子方向。
但是並不是所有的企業將這些崗位劃分的這麼明細的,有些企業根本不涉及二次開發,一個Hadoop工程師同時負責開發和運維,所以,我們不僅要在Hadoop應用這塊爛熟於心,而且,基本的Hadoop運維我們也必須要掌握,至少叢集的搭建,基本的叢集維護這些我們要會去做。
3.在遇到問題,我該如何去尋求解決方案
這個問題是很多初入Hadoop的同學會遇到的,在開發時遇到異常,或叢集在執行時丟擲一些異常,不知所措,下面我給出自己在實際工作中的一些心得體會。
一般丟擲異常,log 檔案都會有記錄,這些問題很大一部分可能是你首次遇到,遇到問題我得先備份這些資訊(log檔案,異常操作記錄)。然後,我們在仔細分析日誌資訊,若實在是沒有解決思路,則可參考以下方案:
- Google 關鍵字
這裡給大家舉個例子,異常資訊如下所示:
java.io.ioexception could not obtain block blk_
這個異常資訊我只擷取了部分,我們首先到Google去搜尋對應得關鍵字,如下圖所示:
然後,Google會列出匹配到得或是相似得問題得結果,我們可以從中篩選出我們想要得結果。
- Hadoop Jira
若是在Google後找不到想要得結果,可在Apache的官方Jira上查詢關鍵字,這裡有來自世界各地從事這方面的人,他們會把出現的這些現象做詳細的描述,有的甚至會給出解決方案,和附上相應的patch。
部分 Comments 截圖如下所示:
通過閱讀評論,我們知道出現這種情況大多數是節點斷開了,連線不上,原因找到後,我們就好去解決了。
- 原始碼
若以上兩中方式都未能解決,檢視原始碼,理解工作原理,初步猜測原因,除錯驗證。其實解決只是時間問題。如果你想深入瞭解,閱讀官方的Jira,找到你感興趣的問題去研究。絕對會有不一樣的體驗。
4.結束語
這篇答疑部落格就和大家分享到這裡,如果大家在研究的過程當中,有什麼疑問可以加群進行討論或傳送郵件給我,我會盡我所能為您解答,與君共勉!