然后安装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.再启动一个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. 结束,祝大家成功。