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/