1. 程式人生 > >Hadoop 2.8 在 windows 平臺上的搭建(單節點)

Hadoop 2.8 在 windows 平臺上的搭建(單節點)

Hadoop 2.0及以後的版本可以直接在windows上跑, 不用cygwin了, 凡是講cygwin的攻略都可以忽略.

關於環境變數: 我實驗下來要加的唯一一個環境變數是系統變數裡的Path, 往裡加上Hadoop的bin目錄的路徑.

關於winutils: 除了Hadoop安裝包和JDK外,還要下載的一個第三方工具是名為winutils的一套類庫, 下載地址:

注意比如你hadoop下載的是2.8版本, 那麼這個類庫你也要用2.8的. 下載完了把裡面所有的dll等檔案都覆蓋到hadoop目錄的bin子目錄下去.

關於hadoop的配置: 在hadoop目錄下的etc/hadoop下找到大量配置檔案, 檔案字尾名為sh的是linux環境用的, cmd的就是windows的指令碼,先要配置hadcoop-env.cmd: 這個檔案唯一要配置的地方是:

 set JAVA_HOME=C:\Java\jdk1.8.0_121

尤其要注意的一點是如果你的Java裝在Program Files這樣帶空格的資料夾下的話, 一定要把這個資料夾命名為不帶空格的名字, 或者用 "C:\PROGRA~1" 來表示 "C:\Program Files", 否則會報錯, 這是一個坑.

4個xml檔案的配置:

C:\hadoop\etc\hadoop\core-site.xml (該檔案裡面都是一些通用配置)

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://localhost:9000</value>
        </property>
</configuration>

fs.defaultFS/fs.default.name in core-site.xml is to allow dfs commands without providing full site name in the command. Running hdfs dfs -ls / instead of hdfs dfs -ls hdfs://hdfs/ (預設根目錄名)

C:\hadoop\etc\hadoop\hdfs-site.xml(該檔案是一些與hdfs有關的配置項, 這裡別忘了預先建立好datanode和namenode兩個目錄, 本例中他們在hadoop所在碟符下的hadoop/data/dfs/目錄下

)

<configuration>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/hadoop/data/dfs/namenode</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/hadoop/data/dfs/datanode</value>
        </property>
</configuration>

C:\hadoop\etc\hadoop\mapred-site.xml(mapred-site.xml.template去掉template字尾名而來) 

<configuration>
        <property>
           <name>mapreduce.framework.name</name>
           <value>yarn</value>
        </property>
</configuration>

C:\hadoop\etc\hadoop\yarn-site.xml

<configuration>
        <property>
           <name>yarn.nodemanager.aux-services</name>
           <value>mapreduce_shuffle</value>
        </property>
        <property>
           <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
           <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        </property>
</configuration>

這裡可能會發生端口占用的問題, 比如之前一次執行的hadoop沒有退出還佔著埠, 可以用netstat 找到佔用埠的程序, kill掉, 或者乾脆重啟電腦. 

執行hadoop:

cd X:/hadoop-2.8.0/bin
hadoop namenode -format  #一定先要格式化hdfs!!!!!

cd X:/hadoop-2.8.0/sbin


start-dfs.cmd   #先啟動dfs
start-yarn.cmd  #再啟動yarn
	
start-all.cmd  #等於上面兩條命令的組合

stop-dfs.cmd
stop-yarn.cmd

如果報/tmp下某些檔案沒有許可權, 可以以管理員身份來執行cmd, 去執行上面的指令碼.

此外成功執行後可以到兩個URL去看Hadoop執行狀態:

http://localhost:8088/


http://localhost:50070/