Windows安裝hadoop

 
首先安裝cygwin 見同一目錄下的“下載安裝Cygwin.mht”,或者上谷歌搜索關鍵字“下載安裝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>
我在配置是,namenode總是啓動不了,後來將localhost改爲了本機的IP就啓動了
 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.再啓動一個Cygwin,啓動datanode: ./hadoop datanode
 9. 再啓動一個Cygwin,嘗試上傳文件:./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. 結束,祝大家成功。

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