Windows安装hadoop

来源:互联网 发布:linux安装中文语言包 编辑:程序博客网 时间:2024/05/29 04:35
首先安装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>
 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. 结束,祝大家成功。

原创粉丝点击