Hadoop on Windows With Eclipse(僞分佈式)

1介紹

Hadoop是一個強大的架構,用於自動並行化的計算任務。不幸的是某些編程對於它是個挑戰。Hadoop程序讓人難以理解和調試。有一種方法可以在開發人員的機器上本地運行一個簡化版的Hadoop集羣使之更容易一些。本教程描述如何設置這樣一個集羣運Windows平臺上。它還描述瞭如何使用Eclipse集成這個集羣,一個主要的Java開發環境。

2.安裝前的準備

在我們開始之前,要確保以下組件安裝在了你的機器上。

l  Java 1.7.0_17

l  Eclipse-SDK-4.2.2

注:本教程測試環境是Hadoop1.0.4版本,如果你使用的是其他版本可以酌情去安裝

    爲了確保不出現問題,建議都使用最新版本,我這兩個版本都是最新下載的。

2.1 安裝Cygwin

  安裝完預安裝軟件後,下一步就是安裝Cygwin環境。Cygwin是一個組從Unix上移植到Windows的包。因爲Hadoop都是寫在Unix平臺上的,所以用Cygwin提供Hadoop的運行環境。

  安裝cygwin環境有以下步驟:

1)        首先從http://www.cygwin.com網站下載所需的安裝文件

2)        點擊下載文件,你會看到如下的截圖-本教程版本爲1.7.17-1版本

CygwinInstaller

3) 當你看到上面的截圖的時候,點擊下一步按鈕你會看到屏幕上有選擇包的界面。要確保你選擇了net category裏的”openssh”。這個包是確保Hadoop集羣正常運作和Eclipse的插件。


4)你選擇完這些包後,點擊下一步,完成安裝。

3.設置環境變量

  下一步是設置路徑環境變量,以至於Eclipse IDE可以訪問Cygwin命令。

  設置環境變量需要以下步驟:

1)  我的計算機右鍵->屬性

2)當你看到這個屬性對話框,點擊環境變量按鈕如下所示


  3)當環境變量對話框出現時,單擊路徑變量位於系統變量欄,然後單擊Edit按鈕。


  4)當編輯對話框在Path末尾添加以下文本

$ ;d:\cygwin\bin;d:\cygwin\usr\sbin

     注:這個路徑要根據你cygwin安裝到那個目錄

  5)OK!!!

4 設置SSH守護進程

   兩個Hadoop的腳本和Eclipse的插件需要無密碼的SSH來操作。本節描述了在Cygwin環境如何設置。

4.1 配置ssh

  Xp下:

  1)打開Cygwin命令

  2)執行如下命令

$ ssh-host-config

  3) when asked “Shouldprivilege separation be used”, answer yes.

 4) When asked “new local account 'sshd'”, answer yes.

  5) When asked “(Say "no" if it is already installed as a service)”,answeryes.

  6) When asked Enter”the valueof CYGWIN for the daemon”, enter ntsec.

 7)When asked “Do you want to use a differentname?”,answeryes.

  8)輸入密碼

 9)下面是一個示例會話的命令。


4.2 開啓ssh服務

第一種方法:直接輸入命令

$ net start sshd 或者 cygrunsrv –S sshd

第二種方法:圖形化操作

  1)在你的桌面或者開始菜單裏找到”我的計算機”,然後鼠標右鍵選擇管理。

  2)在左邊的面板展開服務和應用程序,然後選擇服務選項。

  3)找到CYGWIN sshd 選項,然後鼠標右鍵

  4)在菜單欄點擊開啓。


Win7下比較麻煩:

如果win7也按照跟xp一樣的安裝,就算你運行cygwin以管理員權限運行,到最後估計一樣會報錯,反正我這是這樣子的,服務可以起來,但在最終密鑰什麼的都配置完成後執行會報:

Elvis@Elvis-PC ~

$ssh localhost

connection closed by ::1

後來針對這個問題我找了N多資料,主要是E文,難爲我了,其中有官網的FQA裏的文章還有很多國外的博客吧!具體連接我也搞亂了,就不貼出來了,根據幾篇資料方法總結如下:

1)  如果你安裝了SSH(估計很多都安裝瞭然後發現有錯誤),可以按以下命令卸載:

$net stop sshd
$ cygrunsrv-R sshd
$net user sshd /DELETE  # See note below
$ rm-R /etc/ssh*
$mkpasswd -cl > /etc/passwd
$mkgroup --local > /etc/group


2)  決定一個用來運行sshd進程的用戶,相信使用win7的同學肯定都至少會有一個非Administror用戶,我的環境現在就是平時都使用Elvis用戶具有管理員權限。而下一步需要執行的命令是必須要Administrator纔有權利執行的,而管理員用戶一般都是被禁的,具體怎麼開啓請看我博客裏的一篇帖子:

http://blog.csdn.net/elvis_dataguru/article/details/8739987

3)        使用管理員用戶執行以下命令來查看用戶現在所具有權限(或者說叫許可?)

$ editrights -l -u Elvis

4)        估計大家上述命令執行後肯定沒有我們現在所需要的權限,執行以下命令來增加吧!

$ editrights.exe -a SeAssignPrimaryTokenPrivilege -u Elvis
$ editrights.exe -a SeCreateTokenPrivilege -u Elvis
$ editrights.exe -a SeTcbPrivilege -u Elvis
$ editrights.exe -a SeServiceLogonRight -u Elvis

  5)做完這些後,可以註銷進入Elvis用戶下繼續操作,而後面的操作動作與前面xp下安裝過程一樣了,就不在詳述了。

4.3 建立權限密鑰

  Eclipse插件和Hadoop的腳本都需要通過權限密鑰ssh權限來執行而不用密碼了。以下步驟就是描述怎麼建立權限密鑰。

1)  打開cygwin終端

2)  執行以下命令生成密鑰

$ ssh-keygen

3)      當提示輸入文件名等直接ENTER接受默認值

4)      命令完成後生成密鑰,輸入以下命令到.ssh目錄

$ cd ~/.ssh

5)      執行以下命令查看密鑰是否真的生成

$ ls -l

      你應該能看到兩個文件id_rsa.pub和id_rsa,看生成日期是最近生成的。這些文件中包含權限密鑰。

6)      執行以下命令註冊到新的authorization_keys文件中。

$ cat id_rsa.pub >> authorized_keys

7)      現在輸入以下命令驗證密鑰是否正確

$ ssh lcoalhost

因爲它是一個新的ssh安裝,你將會被警告,主機無法確認你是否真的想連接。輸入YES並且按ENTER。你會看到Cygwin在一次執行,那意味着你成功連接了。

  8)現在再次執行下面命令:

 $ ssh lcoalhost

 


Setting upauthorization keys

5.下載,複製和解壓Hadoop

   1)下載hadoop 1.0.4並且放到你指定的文件夾裏比如我的放在了D:\java。

   2)打開Cygwin

   3)執行以下命令

$ cd

4)執行下面命令直接在windows上以窗口形式打開home目錄

$ explorer .


5)        把hadoop安裝文件copy到你的Home目錄下。

6. 解壓Hadoop安裝包

   解壓安裝包有以下步驟:

1)  打開一個新的Cygwin

2)  執行以下命令

$ tar –zvxf hadoop-1.0.4.tar.gz

 3) 解壓完後,執行以下命令

$ ls -l

     這個命令列出home目錄下的內容。你應該能看一個新生成的文件hadoop-1.0.4

4)下一步執行以下命令:

$ cd hadoop-1.0.4
$ ls -l

如果你與下面相似的信息,就說明你解壓成功了,可以進行下一步

 

7. 配置Hadoop

  1)開啓一個Cygwin窗口並且執行以下命令:

 $ cd hadoop-1.0.4
 $ cd conf
 $ explorer .

  2) 最後一個命令打開了Explorer窗體進入到conf文件夾

  3)配置hadoop-env.sh文件

export JAVA_HOME=/cygdrive/c/Progra~1/Java/jdk1.7.0_02
   知識補充:   注:因爲我的Java安裝目錄Program Files有空格,所以用縮寫成Progra~1

  4)然後使用編輯軟甲打開,我就用UE了,也可以使用eclipse來打開,主要是編輯core-site.xml、mapred-site.xml和hdfs-site.xml

  5)在3個文件中<configuration>和</configuration>裏插入以下內容

    

core-site.xml

<configuration>

<property>

<name>fs.default.name</name>

<value>hdfs://localhost:9000</value>  

</property>

</configuration>

mapred-site.xml

<configuration>

<property>

<name>mapred.job.tracker</name>

<value>localhost:9001</value>

</property>

</configuration>

hdfs-site.xml

<property>      

<name>dfs.http.address</name>

<value>localhost:50070</value>

</property>

<property>      

<name>dfs.name.dir</name>

<value>/usr/local/hadoop/namenode</value>

</property>

<property>      

<name>dfs.data.dir</name>

<value>/usr/local/hadoop/data</value>

</property>

<property>

<name>dfs.replication</name>

<value>1</value>   

注:在目錄/usr/local目錄下創建一個hadoop文件夾,這個是根據你前面配置中制定的namenode和datanode而定。

    還有就是localhost最好直接寫成ip地址,我寫的是電腦本機的ip:10.60.115.150

8.格式化namenode

  1)打開Cygwin,執行以下命令


$ cd hadoop-1.0.4
$ mkdir logs
$ bin/hadoop namenode -format

  2) 最後一個命令產生的輸出

 

現在文件系統已經創建,可以繼續下一步工作。

9.安裝Hadoop插件

 1)通過以下命令,打開eclipse-plugin文件夾

$ cd hadoop-1.0.4
$ cd contrib.
$ cd eclipse-plugin
$ explorer .

   2) 然後把裏面的hadoop-x.x.x-eclipse-plugin.jar拷貝到eclipse安裝包裏的plugin目錄裏

注:但本次教程的hadoop-1.0.4裏面沒有,所以我從網上找到了這個jar直接拷貝到eclipseplugin目錄裏

3)  啓動eclipse

4) 打開Window->OpenPerspective->other->Map/Reduce

然後在打開Window->Show View->Other 搜索mapreduce視圖

5)如圖IDE


6)        配置Hadoop的安裝目錄


現在Hadoop安裝和配置完了,還有eclipse的插件,下一步拿一個小Project測試下。

10.測試集羣

10.1開啓本地hadoop集羣

1)開啓5個Cygwin,然後分別執行以下命令:

Window1:
$ cd hadoop-1.0.4
$ bin/hadoop namenode
Window2:
$ bin/hadoop secondarynamenode
Window3:
$bin/hadoop jobtracker
Window4:
$bin/hadoop datanode
Window5:
$bin/hadoop tasktracker
或者:直接輸入以下命令
$bin/start-all.sh

這個時候進羣起來了,進行下一步。

注:這個時候前3個窗口可能是一直卡在某個地方,這個是正常現象無需擔心,也可以在後面加上”&”使進程在後臺運行,不在詳述,感興趣的同學可以自行查閱Linux關於”&”的用法

10.2 在Eclipse建立本地Hadoop

1)在切換到Map /Reduce的角度來看,選擇Map / Reduce位置選項卡下面的Eclipse環境。然後單擊空白空間右鍵選項卡並選擇“新Hadoop位置....“從上下文菜單。您應該會看到一個對話框所示類似。


3)  填入項目,以下所示:

Location Name – localhost   --當然這個自己可以隨便起名

Map/Reduce Master     --一定要與mapred-site.xml裏面一致

Host –10.60.115.150

Port – 9001    

DFS Master

Check "Use M/R Master Host"  --要與core-site.xml裏一致

Port -- 9000

User name – Elvis

然後點擊完成。

4) 然後你會看到IDE


5)  可以通過eclipse直接copyfromlocal數據。

6)  到這裏,在Win下的Hadoop僞分佈式集羣構建完畢了+Eclipse的配置

10.3 hello測試

  用Hadoop自帶的WordCount實例可以統計一批文本文件中各單詞出現的次數。

1)  首先先做以下動作

$ mkdir input
$ cd input
$ echo “hello world” > test1.txt
$ echo “hello hadoop”> test2.txt
$ cat test1.txt #可以使用這個命令查看文件內容
$ bin/hadoop dfs –put ../input in
$ bin/hadoop dfs –ls in
$ bin/hadoop jar hadoop-examples-1.0.4.jar wordcount in out
$ bin/hadoop dfs –cat out/*

最後,儘管這種在win下的開發生產環境不會應用,但自己在實驗機中做些開發測試還是蠻不錯的選擇的,希望對同學們有所幫助。

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