天天看點

三天100元從零開始搭建Hadoop叢集

    阿法狗把李昌鎬都幹掉了,不管是圖形圖檔處理叢集還是文字文本處理叢集都将成為it公司新一代的基礎設施。公司準備先建立文字文本處理叢集,即選擇阿裡e-mapreduce産品,快速搭建文本大資料處理系統,謀劃公司新一代大資料處理架構,但是,初級階段,不想為hadoop的底層維護花費時間,叢集維護一個工程師少說也要5k以上吧(四級城市),還有硬體和電費等等,公司決定先跑一個樣本叢集,再做下步謀劃,以上也是很多公司對叢集的态度吧。

   創業階段錢是精打細算了,阿裡叢集可以按時付費,最低每小時3.88元,就當每小時3.88元的學習費用吧,是以,學習速度要快呀,叢集一開,每小時3.88元的學費不斷花費哦。今天就和同學分享,我是如何用三天,一百元以内的學費,高效率地搭建叢集,且讓簡單的英文,中文分詞程式在自己的控制下在叢集中跑起來的。

    <b>1.錢袋子準備好</b>:阿裡需要你賬号資金100元以上,不然,就不讓你學習了。

    <b>2.了解阿裡e-mapreduce體系</b>:

    1)整個阿裡雲我們常見到的是ecs,就是在龐大的硬體設施上,根據使用者需要虛拟出來的一台台計算機,他們是建立在實體cpu,硬碟,記憶體等之上的,可以随時釋放,也可以臨時組合。

    2)叢集就是跑在這些ecs之上,是以,同學想租幾台ecs自己搭建hadoop估計也是沒有問題,顯然,我是沒有這個興趣,阿裡的同學也是把在ecs上搭建叢集的過程自動化了。

    3)當然,若是僅僅依靠ecs叢集,有個問題,即運作的記錄和資料都放在叢集上,随着叢集的釋放,運算資料也丢失了,在商業環境中,可以讓叢集開幾個小時,再釋放,不是一直要啟動一個叢集,若全天候啟動,每小時3.88,每天24*3.88=93.12,每月93.12*30=2793元,心疼呀,當然,包月省電,但是很多時候還是不一定要全天候運作,還有,擴大叢集後,也要釋放。不過,阿裡倒是很厚道,就是有了對象存儲oss,這個就相當于存儲空間,你采購阿裡雲上的oss,叢集就可以把輸入和輸出資料,放在oss這個大硬碟上,這個大硬碟是很便宜啦,1tb每月144元,白菜價格啦,是以,建立叢集前一定要買個大硬碟,便于把自己叢集運算的結果放在這個大硬碟上。

    4)建立叢集後,你就是主人了。當然,要了解hadoop叢集結構了。叢集至少有兩個“孩子”,一個是老大你可以通過公網通路它,比如,把代碼用ssh等放在相關目錄,當然,你也可以把程式放在大硬碟oss上,設定後讓叢集來取,當然,要深入了解叢集,還是要踏入自己孩子在房間看看為好。在建立叢集後,可以看到master機器的公網位址,你就當一台ecs的主機就好,登入可以做相關操作,當然,另外一個孩子是不要我們控制的,叢集自己管理,是内部位址。是以,需要安裝一個常見的ssh登入工具。

    5)叢集的大緻規劃:先規劃oss,在上面建立檔案夾,放置自己叢集計算内容,我們還是以分析一篇英文小說中的詞彙狀态,即英文切詞為例吧,這個在阿裡的手冊中有代碼,這也算是叢集的“hello world”程式,比如,在oss上建立input檔案夾,當然,還有叢集的輸出檔案夾output(注意:輸入檔案夾可以反複使用,輸出檔案夾不能是已經存在的目錄,即阿裡認為,輸出的東西是花錢的很寶貴呀,每次輸出,都要是全新的檔案夾,保證客戶花錢的結果不能被弄亂,是以,每次叢集運作的時候,我們都要給叢集指定輸出的檔案夾,我一般采用output/2014-4-25-2模式建立輸出檔案夾);有了語料,程式,有了輸出檔案夾,叢集就可以開始工作了,并把輸出結果放置在相關oss硬碟中;這樣,我們就可以省錢了,比如,建立一個叢集,并打開相關作業,再一定時間後關閉,安心下班睡覺,錢不會漏呀!

    6)叢集運作機制的大緻了解:相關hadoop資料,多如牛毛,我也沒有過多時間了解,但是,我們應該對叢集的運作有個大緻了解。

    —叢集購買啟動等待你的配置

    —配置作業:一個作業(任務)至少,要給叢集oss設定,包括運作的java程式包的位置,輸出的檔案的位置,等等參數吧

    —啟動作業(任務),叢集開始運作

    —叢集運作,master機器,肯定先看看運作的oss配置變量,從oss下載下傳jar包,還有計算的資料,比如,英文小說的資料檔案,這些檔案再根據一定規律配置設定給子節點,在啟動叢集程式運作

    —叢集運作過程中,若有什麼情況,肯定報告給控制台,我們點選獲得叢集的運作狀态

    —叢集作業結束,并傳回運作資料到oss

    —我們可以在output的相關目錄下看到結果

  <b> 3.我的第一個e-mapreduce程式</b>:2009年後,本人就沒有編寫java代碼了,離開碼農崗位了,這次也不想過分打擾工程師,主要想讓自己重新體驗下java工程,再為下步叢集規劃做準備。是以,在此過程中,自己動手,花了點時間。

   1)本地打包程式出錯:在本地安裝了多年不見的eclipse(還是很熟悉的界面),從阿裡e-mapreduce文檔中下載下傳代碼,開始編譯word count,興沖沖地把jar包上傳到oss,并啟動叢集,結果是類沒有打包好,汗呀,确實不會打包了,關鍵是阿裡文檔中有打包指令行,我就是按照這個模式打包的呀。

    2)問了阿裡同學,說是要在hadoop叢集環境中打包。暈倒,我能夠在本地安裝,配置好hadoop叢集,我還到阿裡來購買嗎?顯然,這個應該是把代碼直接上傳到叢集主機(用ssh),并在叢集上打包呀。具體打包的過程,還是阿裡文檔中的打包過程。這邊折騰我幾個小時。(第一天就這樣過去了,我是周六下午4點開始的,晚上11點下班,除了啟動叢集,看到我的jar類沒有打包好外,當然,還花費了塊30元叢集費用呀,好像就沒有其它收獲了,當然,阿裡同學很給力,說第二天給我在叢集上打包,并給我過程截圖,汗呀,jar包不會打了)

   3)(周日,阿裡同學傳來打包截圖),重新建立叢集,根據阿裡同學的截圖,我在叢集主機上打包好word count,再下載下傳下來,再傳遞到oss上,再啟動叢集,成功啦!可以看到分詞的結果(這個過程當然是一個小時内了,有關叢集打包的過程截圖在附件中)

   <b> 4.我的第一個e-mapreduce控制程式</b>:由于公司現在計算量不大,準備定時開叢集,定時釋放,這樣每天的工作,不該都由人工操作呀,阿裡還是不錯的,允許你寫個java程式,運作在公司辦公室或者其它伺服器上,定時給阿裡雲發指令,讓其自動建立叢集,定時釋放等等,實作全自動化的作業,這個當然是重要的控制程式了,阿裡手冊中都有代碼。在和阿裡團隊互動中,我就提出,使用者更加需要工程檔案,而不是代碼,代碼我們一眼就看懂,但是,用這些代碼建立工程就痛苦了,即代碼和工程之間還是有距離的,使用者需要高效率工作,基于工程快速實作目标,是以,這些自動化程式都是阿裡同學給工程代碼了,很快完成了。(周日,第二天就這樣過去了,順利運作叢集,并建立了叢集自動化控制程式,還是花費30元呀)

   <b> 4.我的第一個中文分詞程式</b>:阿裡給的是英文分詞程式,但是,公司需要中文分詞,就尋找了一個開源的中文分詞程式,這個就是第三天的任務,開始脫落阿裡的案例代碼,運作自己的程式。

   1)第三天任務,不僅有自己的jar包,此jar包還有一個外接的jar包,這個配置有點問題,開始時候,把外部jar包放在master的root目錄,結果,hadoop權限不夠,運作不了。

   2)後來把jar包放在home的目錄表,hadoop就可以取到這個外部jar包了,程式是運作起來了。

   3)為了測試叢集的能耐,我下載下傳了100多m的中文語料,但是,一直失敗,後來,我想還是放小目标,用叢集去分析《紅樓夢》吧,終于成功了。(完成第三天的任務)

    經驗之談:1)要對阿裡雲,叢集有比較清晰的認知,之前,我們就用了ecs幾年了,還有oss都在用,是以,沒有用的同學,要把他們弄清;2)要對叢集的運作機理搞清楚,包括oss和叢集的關系,叢集的運作過程,不然,在配置中會遇到問題;3)代碼層面就是像阿裡同學要工程,而不是代碼;4)加入他們的互動群,有問題送出工單,不要一個人孤軍奮戰,這個也是商業購買的優點,若讓自己一個人去整個hadoop叢集,是以周為代價的時間。

    其實,自己體驗後,公司的叢集規劃,研發計劃都很清楚了,如何省錢,如何提高效率都知道了。

上一篇: 自動化測試
下一篇: 接口自動化