三天100元从零开始搭建Hadoop集群
? ? 阿法狗把李昌鎬都干掉了,不管是圖形圖片處理集群還是文字文本處理集群都將成為IT公司新一代的基礎設施。公司準備先建立文字文本處理集群,即選擇阿里E-MapReduce產品,快速搭建文本大數據處理系統,謀劃公司新一代大數據處理架構,但是,初級階段,不想為Hadoop的底層維護花費時間,集群維護一個工程師少說也要5K以上吧(四級城市),還有硬件和電費等等,公司決定先跑一個樣本集群,再做下步謀劃,以上也是很多公司對集群的態度吧。
? ?創業階段錢是精打細算了,阿里集群可以按時付費,最低每小時3.88元,就當每小時3.88元的學習費用吧,因此,學習速度要快呀,集群一開,每小時3.88元的學費不斷花費哦。今天就和同學分享,我是如何用三天,一百元以內的學費,高效率地搭建集群,且讓簡單的英文,中文分詞程序在自己的控制下在集群中跑起來的。
? ? 1.錢袋子準備好:阿里需要你賬號資金100元以上,不然,就不讓你學習了。
? ? 2.理解阿里E-MapReduce體系:
? ? 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的相關目錄下看到結果
? ?3.我的第一個E-MapReduce程序:2009年后,本人就沒有編寫JAVA代碼了,離開碼農崗位了,這次也不想過分打擾工程師,主要想讓自己重新體驗下JAVA工程,再為下步集群規劃做準備。因此,在此過程中,自己動手,花了點時間。
? ?1)本地打包程序出錯:在本地安裝了多年不見的Eclipse(還是很熟悉的界面),從阿里E-MapReduce文檔中下載代碼,開始編譯Word Count,興沖沖地把JAR包上傳到OSS,并啟動集群,結果是類沒有打包好,汗呀,確實不會打包了,關鍵是阿里文檔中有打包命令行,我就是按照這個模式打包的呀。
? ? 2)問了阿里同學,說是要在Hadoop集群環境中打包。暈倒,我能夠在本地安裝,配置好Hadoop集群,我還到阿里來購買嗎?顯然,這個應該是把代碼直接上傳到集群主機(用SSH),并在集群上打包呀。具體打包的過程,還是阿里文檔中的打包過程。這邊折騰我幾個小時。(第一天就這樣過去了,我是周六下午4點開始的,晚上11點下班,除了啟動集群,看到我的JAR類沒有打包好外,當然,還花費了塊30元集群費用呀,好像就沒有其它收獲了,當然,阿里同學很給力,說第二天給我在集群上打包,并給我過程截圖,汗呀,JAR包不會打了)
? ?3)(周日,阿里同學傳來打包截圖),重新創建集群,根據阿里同學的截圖,我在集群主機上打包好Word Count,再下載下來,再傳遞到OSS上,再啟動集群,成功啦!可以看到分詞的結果(這個過程當然是一個小時內了,有關集群打包的過程截圖在附件中)
? ? 4.我的第一個E-MapReduce控制程序:由于公司現在計算量不大,準備定時開集群,定時釋放,這樣每天的工作,不該都由人工操作呀,阿里還是不錯的,允許你寫個JAVA程序,運行在公司辦公室或者其它服務器上,定時給阿里云發指令,讓其自動創建集群,定時釋放等等,實現全自動化的作業,這個當然是重要的控制程序了,阿里手冊中都有代碼。在和阿里團隊互動中,我就提出,用戶更加需要工程文件,而不是代碼,代碼我們一眼就看懂,但是,用這些代碼建立工程就痛苦了,即代碼和工程之間還是有距離的,用戶需要高效率工作,基于工程快速實現目標,因此,這些自動化程序都是阿里同學給工程代碼了,很快完成了。(周日,第二天就這樣過去了,順利運行集群,并創建了集群自動化控制程序,還是花費30元呀)
? ? 4.我的第一個中文分詞程序:阿里給的是英文分詞程序,但是,公司需要中文分詞,就尋找了一個開源的中文分詞程序,這個就是第三天的任務,開始脫落阿里的案例代碼,運作自己的程序。
? ?1)第三天任務,不僅有自己的JAR包,此JAR包還有一個外接的JAR包,這個配置有點問題,開始時候,把外部JAR包放在Master的root目錄,結果,Hadoop權限不夠,運行不了。
? ?2)后來把JAR包放在Home的目錄表,Hadoop就可以取到這個外部JAR包了,程序是運行起來了。
? ?3)為了測試集群的能耐,我下載了100多M的中文語料,但是,一直失敗,后來,我想還是放小目標,用集群去分析《紅樓夢》吧,終于成功了。(完成第三天的任務)
? ? 經驗之談:1)要對阿里云,集群有比較清晰的認知,之前,我們就用了ECS幾年了,還有OSS都在用,因此,沒有用的同學,要把他們弄清;2)要對集群的運作機理搞清楚,包括OSS和集群的關系,集群的運作過程,不然,在配置中會遇到問題;3)代碼層面就是像阿里同學要工程,而不是代碼;4)加入他們的互動群,有問題提交工單,不要一個人孤軍奮戰,這個也是商業購買的優點,若讓自己一個人去整個Hadoop集群,是以周為代價的時間。
? ? 其實,自己體驗后,公司的集群規劃,研發計劃都很清楚了,如何省錢,如何提高效率都知道了。
? ? ?
??
? ?
? ??
? ?
總結
以上是生活随笔為你收集整理的三天100元从零开始搭建Hadoop集群的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 单例模式(一)
- 下一篇: 【jackson 异常】com.fas