首先安裝cygwin 見同一目錄下的“下載安裝Cygwin.mht”,或者上Google搜尋索引鍵“下載安裝Cygwin.mht”。
然後安裝hadoop-0.21.0,步驟如下10步:
1. 開啟cygwin
進入D盤目錄下的Hadoop檔案夾:cd D:/Hadoop
2. 安裝hadoop: tar -zvxf hadoop-0.20.1.tar.gz
3. 解壓完成後進入hadoop-0.20.1的配置目錄,開啟core-site.xml,加入以下內容。這裡是定義namenode運行地址和連接埠
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
4. 開啟hdfs-site.xml,加入以下內容
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/Hadoop/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/Hadoop/datanode</value>
</property>
5. 最後修改hadoop-env.sh,把下面注釋的這行開啟,並設定為你的jdk路徑。
如果你的java在Program Files下,則整個jdk路徑加引號,最好是把jdk目錄設定到如下:D:\Java\jdk1.6.0_26
但是你可以這麼做:
在Hadoop的設定檔,hadoop-env.sh中,需要添加Java SDK的路徑。
要知道,Cygwin中並沒有安裝Java,那麼只能使用Windows下安裝的JDK。
看了網上的文章,只是提到說export後面的路徑需要用雙引號括起來,
因為一般JDK都是安裝在“Program Files”下的。但是我這麼添加以後,就是不行,
報錯“JAVA_HOME is not set”還是“…Program cannot found”來著,不太記得了,
反正就是啟動Hadoop的時候報錯。經過研究後知道,首先Cygwin下不能使用windows的路徑直接存取,
需要是Linux風格的目錄,如果是訪問C盤下安裝的JDK的話,不能使用“C:/Program Files/Java/jdk1.6.0_22”,
而需要使用這樣“/cygdrive/c/Program Files/Java/jdk1.6.0_22”;其次是hadoop好像不能識別帶空格的目錄路徑,
那怎麼辦呢,想到了符號連結,通過在Cygwin下建立一個符號連結,指向我的JDK安裝目錄,
使用這樣的命令:ln “C:/Program Files/Java/jdk1.6.0_22” /usr/local/jdk1.6.0_22.
這樣就在/usr/local/下建立了一個Windows下JDK目錄的符號連結,如果使用:cd /usr/local/jdk1.6.0_22,
然後ls下,就會發現已經在jdk的安裝目錄下了。然後在hadoop-env.sh中export JAVA_HOME=/usr/local/jdk1.6.0_22,
這樣就OK了
因為我安裝的時候,在Program Files中沒有安裝成功。修改為如下內容:
# The java implementation to use. Required.
export JAVA_HOME=/cygdrive/d/Java/jdk1.6.0_26
6. 在cygwin下進入bin目錄,首先需要格式化namenode
cd D:\Hadoop\hadoop-0.21.0\bin
./hadoop namenode -format
這裡會報這個錯:
java.lang.NoClassDefFoundError: org/apache/hadoop/util/PlatformName
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.util.PlatformName
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: org.apache.hadoop.util.PlatformName. Program will exit.
解決辦法如下:
只需要將${HADOOP_HOME}/bin/hadoop-config.sh檔案中的第190行的一下的內容
JAVA_PLATFORM=`CLASSPATH=${CLASSPATH} ${JAVA} -Xmx32m ${HADOOP_JAVA_PLATFORM_OPTS} org.apache.hadoop.util.PlatformName | sed -e "s/ /_/g"`
改成
JAVA_PLATFORM=`CLASSPATH=${CLASSPATH} ${JAVA} -Xmx32m -classpath ${HADOOP_COMMON_HOME}/hadoop-common-0.21.0.jar org.apache.hadoop.util.PlatformName | sed -e "s/ /_/g"`
7. 啟動namenode: ./hadoop namenode
8. 啟動datanode: ./hadoop datanode
9. 嘗試上傳檔案:./hadoop fs -put d:/download/test.rar /tt/vm.rar
然後list一下
./hadoop fs -lsr /tt
結果如下:
-rw-r--r-- 1 Administrator supergroup 20793970 2010-01-18 15:52 /tt/vm.rar
可以在本地檔案中(記得這個配置吧/Hadoop/datanode?資料檔案存放地)
D:\Hadoop\datanode\current\finalized中看到拷貝的檔案,但是檔案名稱是blk_6098310948767462040這種,可以看大小啦。。。
10. 結束,祝大家成功。