Hadoop在Windows環境下的部署

fmms 12年前發布 | 86K 次閱讀 Hadoop 分布式/云計算/大數據

經過一整天的折騰,參考了網上很多資料,我機器上的Hadoop似乎是配置成功了。下面分享一下詳細的配置過程。也祝愿大家在配置的過程中少走彎路。

注意:本文的配置環境是:

  • CygWin最新版本2.769下載地址
  • Window7-64bit
  • JDK1.6.0_31-win64 (JRE6)下載地址
  • Eclipse-Indigo..
  • Hadoop 0.20.2 (注意:0.20.203版本不可用,會導致tasktracker無法啟動)下載地址
  • </ul>

    -----------------------------------------華麗分割------------------------------------
    環境安裝&配置:
    1.JDK,我的安裝目錄:C/Java,安裝后視圖
    Hadoop在Windows環境下的部署

    安裝好了JDK,然后配置JAVA_HOME環境變量:
    Hadoop在Windows環境下的部署
    然后,把JDK下面的BIN目錄追加到環境變量PATH后面。

    2.CygWin,安裝過程中記得選擇所需的包,這里需要的是:
    Net Category下的:openssh,openssl
    BaseCategory下的:sed (若需要Eclipse,必須sed)
    Devel Category下的:subversion(建議安裝)。具體請參考下面的圖示:
    Hadoop在Windows環境下的部署
    Hadoop在Windows環境下的部署
    Hadoop在Windows環境下的部署

    安裝完成后,把CygWin的bin目錄以及usr/sbin 追加到系統環境變量PATH中。

    3.Hadoop
    把下載的hadoop-0.20.2.tar.gz解壓到指定目錄。我把解壓后的Hadoop程序放到了Cygwin根目錄下的hadoop文件夾中。具體如下圖示:
    (不要使用0.20.203版本的Hadoop!!!)
    Hadoop在Windows環境下的部署

    下面開始配置Hadoop。需要配置的文件:(hadoop/conf目錄下)
    1. hadoop-env.sh
    2. core-site.xml
    3. hdfs-site.xml
    4. mapred-site.xml
    第一個文件 hadoop-env.sh
    Hadoop在Windows環境下的部署
    把里面的JAVA_HOME改掉,注意export前面的#號要去掉。
    而且必須要使用linux的路徑表達方式。我的jdk路徑是 C:\JAVA\jdk1.6.0_31,在CygWin中對應的路徑為: /cygdrive/c/java/jdk1.6.0_31

    第二個文件:core-site.xml
    首先刪除它,然后把hadoop/src/core目錄下的core-default.xml文件復制到conf目錄下,并命名為core-site.xml。然后修改其中的fs.default.name變量,如下所示。
    (確保端口號(我的是9100)未被占用)
    Hadoop在Windows環境下的部署

    第三個文件:hdfs-site.xml
    首先把它刪除,然后復制src/hdfs目錄下的hdfs-default.xml到conf目錄下,并改名為hdfs-site.xml
    然后修改dfs.replication變量,如下圖示:
    該變量意思是文件系統中文件的復本數量。在單獨的一個數據節點上運行時,HDFS無法將塊復制到三個數據節點上。
    Hadoop在Windows環境下的部署

    第四個文件:mapred-site.xml
    首先刪除它,然后復制src/mapred目錄下的mapred-default.xml到conf目錄下,并改名為mapred-site.xml,然后修改其mapred.job.tracker變量:
    (同樣確保端口號未被占用)
    Hadoop在Windows環境下的部署


    ----------------------------------華麗分割-------------------------------------
    配置SSH服務 (首先確認安裝了OpenSSH,OpenSSL兩個包)
    1.打開CygWin輸入SSH-HOST-CONFIG
    2.系統提示:should privilege  separation be used ? 回答:no
    3.系統提示:if sshd should be installed as service?回答:yes
    4.系統提示:the value of CYGWIN environment variable 輸入: ntsec
    5.成功
    下面是圖示(我自己當時沒記錄,所以參考的是網絡上的圖片)
    Hadoop在Windows環境下的部署

    下一步,進入Window系統的服務菜單,打開Cygwin的SSHD服務:如下圖所示:
    Hadoop在Windows環境下的部署
    下面繼續回到CygWin環境:執行如下命令:
    1.ssh-keygen然后一直回車
    2.cd ~/.ssh
    3.     cp id_rsa_pub anthorized_keys
    4.exit 退出cygwin,若不退出,可能出錯
    再次登錄時查看一下:
    Hadoop在Windows環境下的部署
    5運行 ssh localhost  若有提示,則回車。
    6執行 ps  若看到 有/usr/bin/ssh 進程,說明成功

    ------------------------------------華麗分割----------------------------------
    啟動Hadoop
    第0步:為 了避免jobtracker,info could only be replicated to 0 node,instead of 1錯誤,最好把 hadoop/conf目錄下面的 masters和slaves文件全部改為127.0.0.1(原內容為:localhost)
    第一步,在hadoop目錄下創建目錄logs,用于保存日志

    第二步,格式化管理者,即namenode,創建HDFS
    執行命令: bin/hadoop namenode -format,下面示代表成功
    Hadoop在Windows環境下的部署
    此時,執行ps,應該能看到ssh進程,且看不到java虛擬機進程。

    第三步,啟動Hadoop,執行命令: bin/start-all.sh
    然后執行jps命令,你可能會看到如下圖:
    Hadoop在Windows環境下的部署
    會發現Datanode ,Secondarynamenode以及TaskTracker都沒有啟動。網上有人說是JPS的問題,具體不是很清楚,但本文后面的文件系統可以使用。Datanode可以保存數據,繼續看吧。

    不過此時執行PS命令,能看到5個JVM進程。
    Hadoop在Windows環境下的部署
    不知道這算不算成功,但我的Logs日志文件夾里面沒有報錯。

    ------------------------------華麗分割---------------------------------------
    文件系統操作
    為了驗證HDFS能夠正常工作我們可以進行文件的上傳操作。
    執行命令:
    bin/hadoop fs -mkdir In
    bin/hadoop fs -put  *.txt In
    以上命令會在HDFS中建立In文件夾,然后把本地Hadoop目錄下的所有文本文件上傳到HDFS中,Hadoop目錄下共用四個txt文件:
    Hadoop在Windows環境下的部署
    OK,上傳的太少,不爽,再上傳一部電影。比如,我要把一個視頻文件movie.mpg上傳到HDFS中,首先,在Hadoop根目錄下建立文件夾local,然后把movie.mpg拷貝到其中
    Hadoop在Windows環境下的部署
    下面執行命令:
    Hadoop在Windows環境下的部署
    然后,查看文件系統是否有上述文件:
    Hadoop在Windows環境下的部署
    可以看到Movie.mpg在HDFS中。

    同樣在Eclipse中也能看到哇:
    Hadoop在Windows環境下的部署

    配置Eclipse插件請參考http://www.cnblogs.com/flyoung2008/archive/2011/12/09/2281400.html

    ------------------------------------------------------------------------------------------

    繼續上一篇。上傳完視頻以后,可以通過如下幾個命令查看系統的運行情況:

    bin/hadoop dfsadmin -report

    Hadoop在Windows環境下的部署


    bin/hadoop dfs -lsr / 查看文件系統

    Hadoop在Windows環境下的部署


    OK。我在配置過程中主要遇到的錯誤是:


    錯誤1. ...could only be replicated to 0 nodes,instead of 1

    Hadoop在Windows環境下的部署


    這個錯誤主要的解決方法是:

    1.把 tmp文件全部刪除。

    2.然后把hadoop/conf目錄下的slaves,masters文件內容全部改成 127.0.0.1

    3.重新格式化namenode :(bin/hadoop namenode -format)

    也許你不知道hadoop 的tmp文件在哪里,默認情況下應該才 cygwin根目錄下的tmp文件夾內:

    如下圖所示:

    Hadoop在Windows環境下的部署

    把它們都刪掉。就OK了。 (cd /tmp  ,   rm -rf *)

    參考博客:http://albb0608.iteye.com/blog/1279495


    錯誤2:

    name node is in safe mode

    直接輸入命令: bin/hadoop dfsadmin -safemode leave 離開安全模式

    ----------------------------------華麗分割------------------------------

    記錄配置過程到此結束,如有錯誤,煩請指出,不勝感激。

 本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!