这里是接着之前的一篇 《hadoop在windows下的环境搭建 》来的~~~
一、安装文件准备
1:下载好hadoop-1.0.0.tar.gz,
下载地址是https://archive.apache.org/dist/hadoop/core/hadoop-1.0.0/
2:解压到D:\hadoop\cygwin\zhangmanyi\目录下。
二、启动hadoop
1、修改hadoop配置文件,在conf目录下,修改mapred-site.xml、core-site.xml和hdfs-site.xml三个文件。
mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
core-site.xml:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
在Windows环境下,还需要在hadoop-env.xml中添加
export JAVA_HOME=D:/hadoop/Java/jdk1.6.0_45
2、设置免密码登录
由于在使用启动hadoop和停止hadoop脚本过程中需要通过ssh发送命令,因此每次发送命令都需要输入密码进行验证。
打开cygwin,进入D:\hadoop\cygwin\zhangmanyi\hadoop-1.0.0\目录下
ssh –keygen –t rsa
过程中需要输入存储id_rsa的文件,其中需要输入文件的位置,如果只输入文件名,那么不会存储到.ssh目录下。后面需要输入使用密钥的密码,设置为空。
进入~/.ssh目录
cat id_rsa.pub >> authorized_keys
3、启动hadoop
进入hadoop安装目录
首先格式化HDFS:
bin/hadoop namenode –format
启动hadoop
bin/start-all.sh
通过http://localhost:50030/查看MapReduce是否启动成功
通过http://localhost:50070/查看HDFS是否启动成功
发现只有HDFS启动成功,于是执行一次停止脚本再重新启动。
停止脚本:
bin/stop-all.sh
前面MapReduce没有启动成功是由于datanode没有启动起来。
启动成功。但是这里点击Browse the filesystem会出现问题:
由于网页转向的地址用的是hadoop集群的某一个datanode的主机名,客户端的浏览器无法解析这个主机名,因此该页无法显示。
因此需要在客户端的hosts文件里加入hadoop集群的ip地址与对应的主机名,这样就能解决问题了。(待解决)
三、hadoop eclipse插件制作
问题1。
进入%Hadoop_HOME%\src\contrib\目录下
编辑build-contrib.xml
加入
<property name="version" value="1.0.0"/>
<property name="eclipse.home" location="D:/hadoop/eclipse"/>
问题2。针对直接编译代码后生成的jar包缺少依赖的lib文件
需要对配置文件进行修改,包含src/contrib/eclipse-plugin/目录下的build.xml和META-INF/MANIFEST.MF。
build.xml:
在后面加入:
<copy file="${hadoop.root}/lib/commons-configuration-1.6.jar" todir="${build.dir}/lib" verbose="true"/>
<copy file="${hadoop.root}/lib/commons-lang-2.4.jar" todir="${build.dir}/lib" verbose="true"/>
<copy file="${hadoop.root}/lib/jackson-core-asl-1.0.1.jar" todir="${build.dir}/lib" verbose="true"/>
<copy file="${hadoop.root}/lib/jackson-mapper-asl-1.0.1.jar" todir="${build.dir}/lib" verbose="true"/>
<copy file="${hadoop.root}/lib/commons-httpclient-3.0.1.jar" todir="${build.dir}/lib" verbose="true"/>
MANIFEST.MF:
Bundle-ClassPath: classes/,lib/hadoop-core.jar,lib/commons-cli-1.2.jar,lib/commons-httpclient-3.0.1.jar,lib/jackson-core-asl-1.0.1.jar,lib/jackson-mapper-asl-1.0.1.jar,lib/commons-configuration-1.6.jar,lib/commons-lang-2.4.jar
问题3。针对hadoop中文件权限的问题 Failed to set permissions of path: \tmp\hadoop-zhangmanyi\mapred\staging\zhangmanyi-1980807403.staging to 0700
需要修改src\core\org\apache\hadoop\fs\FileUitl.java
注释掉三行代码:
private static void checkReturnValue(boolean rv, File p,
FsPermission permission
) throws IOException {
if (!rv) {
// throw new IOException("Failed to set permissions of path: " + p +
// " to " +
// String.format("%04o", permission.toShort()));
}
}
上面问题都是在实践中遇到了的,但是问题2在改正并重新编译后还是不正确,因此选择重新来,将所有文件修改好后再进行编译。
1、 编译生成eclipse插件
先在hadoop安装目录下,执行命令
ant eclipse
然后在hadoop-1.0.0/src/contrib/eclipse-plugin/目录下执行命令
ant -Dversion.home=D:\hadoop\eclipse -Dversion=1.0.0
执行成功后会在%Hadoop_HOME%\build\contrib\eclipse-plugin\目录下生成hadoop-eclipse-plugin-1.0.0.jar文件。
2、 安装eclipse插件
将生成的hadoop-eclipse-plugin-1.0.0.jar复制到eclipse目录中的plugin文件夹中。
新建java project项目,hadoop-1.0.0,使用jdk为1.6的版本
并在Project——Properties——Java Build Path(右边选择Libraries)——Add External JARs
选择导入hadoop-eclipse-plugin-1.0.0.jar
工程建立完成
3、 测试安装
在菜单栏中依次单击windows——show view——other…——MapReduce Tools——Map/Reduce Locations。
设置完成后可以显示hdfs的目录内容,说明eclipse插件安装成功。