想用windows寫MapReduce,但是執行的時候走集羣,該怎麼做

如果直接在linux下安裝eclipse或者idea運行是最方便的。但是linux下編程並不方便,所以想用windows。

直接用idea run一段mapreduce的時候,in是取自hdfs://…. out也是取自hdfs://… 上的,結果是運行不起來的。原因是本地沒有hadoop環境。

1、解壓hadoop放到喜歡的目錄下
2、下載hadoop-common-2.2.0-bin
https://github.com/srccodes/hadoop-common-2.2.0-bin
3、將hadoop-common-2.2.0-bin\bin\winutils.exe複製到win7 hadoop的bin目錄
4、在環境變量中配置 HADOOP_HOME,path中配置HADOOP_HOME\bin、HADOOP_HOME\sbin
5、將hadoop-common-2.2.0-bin\bin\hadoop.dll拷貝到C:\Windows\System32下

6、項目中引入hadoop的依賴

    <!--hadoop-->
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-client</artifactId>
      <version>2.2.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-common</artifactId>
      <version>2.2.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-hdfs</artifactId>
      <version>2.2.0</version>
    </dependency>

7、host中配置hadoop集羣

一些困惑:
本地既然已經下載了hadoop的依賴了,爲什麼還需要安裝win的hadoop,因爲我的hadoop是集羣跑的,本地僅僅是敲代碼爽一點,又不希望配置一個本地脫離的hadoop做獨立實驗,我爲什麼還要提供一個本地的hadoop環境呢?

這點,我也不懂。我當初單純地以爲引入了jar包後就能執行了,但實際上不是的,會報NullpointException,非常地困惑,直到配置了本地的hadoop才跑通。但實際上跑通後的輸入輸出結果都是在hdfs系統上的,和本地沒有半毛錢關係,我的本地也沒有配成linux中hadoop集羣中的配置,完全是單機的。給我的感覺就是有了這個本地的win版的hadoop我就能調用到集羣中的hadoop集羣了,很奇怪。

這裏寫圖片描述

最後:如果都配置了還是不行,很有可能hadoop沒有配置正確,dos中輸入hadoop 或者hadoop -version可以判斷hadoop是否安裝成功。這裏需要注意,如果你的java是安裝在program files下面的,由於有個空格,會使hadoop獲取不到java,但實際上java是配置成功的。這時候需要修改下java的配置方式:

C:\PROGRA~1\java\jdk1.8.0_121

將Program Files 改爲 progra~1這種縮寫方式。

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