windows上搭建hadoop2开发环境
搭建前的准备:
1》安装ant-->配置ant环境变量和java的环境变量
2》配置jdk环境变量---》这里的jdk版本要求和build.xml 编译的版本一致否则不通过
正式搭建:
1.使用eclipse创建java project-->bigdata (这里也需要配置一下eclipse中运行的ant路径 由于该路径下有eclipse默认的ant没有的jar包---jscn-0.1.15.jar 该jar包作用就是运行window下hadoop程序用的)
2.创建lib包---》和src同级(这里必须创建lib文件夹否则后期用ant 运行build.xml 无法找到对应的hadoop的jar包)
3.创建类hdfs.App1
package hdfs;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
public class App1 {
public static void main(String[] args) throws IOException, URISyntaxException {
FileSystem fileSystem = FileSystem.get(new URI("hdfs://hadoop1:9000"), new Configuration());
System.out.println(fileSystem);
}
}
4.创建build.xml-->并运行
<?xml version="1.0" encoding="utf-8"?>
<project name="项目名称" basedir="." default="sshexec">
<description>本配置文件共ANT编辑项目、自动化进行单元测试、打包并部署使用</description>
<description>默认操作 (输入命令:ant) 为编译源程序并发布运行</description>
<!-- 属性设置 -->
<!-- property environment="env"/ -->
<!--property file="build.properties"/ -->
<!--property name="java.lib.dir" value="${env.JAVA_HOME}/lib"/ -->
<property name="project" location="bigdata"/>
<property name="src.dir" value="${basedir}/src"/><!-- 设置变量,指向被编译的java代码的位置 -->
<property name="classes.dir" value="${basedir}/classes"/><!-- 设置变量,指向编译后的class文件的位置 -->
<property name="dist.dir" value="${basedir}/dist"/> <!-- 设置变量,指向编译后生成jar包的位置 -->
<property name="project.lib.dir" value="${basedir}/lib"/><!-- 设置变量,指向所依赖的jar包所在的位置 -->
<property name="localpath.dir" value="${basedir}"/>
<property name="remote.home" value="~"/>
<!-- 可以修改 -->
<property name="remote.hostname" value="hadoop1"/>
<!-- 可以修改 -->
<property name="remote.username" value="root"/>
<!-- 可以修改 -->
<property name="remote.password" value="root"/>
<!-- 可以修改:每次需要知道的main类,写到这里 -->
<property name="main.class" value="hdfs.App1"/>
<!-- 基本编译路径设置 -->
<path id="compile.classes">
<pathelement path="${dist.dir}" />
<fileset dir="${project.lib.dir}">
<include name="**/*.jar"/>
</fileset>
</path>
<!-- 清理删除临时目录-->
<target name="clean" description="清理删除临时文件">
<!-- delete dir="${build.dir}"-->
<delete dir="${dist.dir}" />
<delete dir="${classes.dir}" />
</target>
<!-- 初始化,建立目录,复制文件-->
<target name="init" depends="clean" description="初始化,建立目录,复制文件">
<mkdir dir="${classes.dir}"/>
<mkdir dir="${dist.dir}"/>
</target>
<!-- 编译源文件-->
<target name="compile" depends="init" description="编译源文件">
<!-- 编译的版本不能比运行的版本高 -->
<javac srcdir="${src.dir}" destdir="${classes.dir}" fork="true"
executable="E:\Java\jdk1.7.0_80\bin\javac"
includeantruntime="on"
classpath="${project.lib.dir}">
<classpath refid="compile.classes"/>
</javac>
</target>
<!-- 打包类文件-->
<target name="jar" depends="compile" description="打包类文件">
<jar jarfile="${dist.dir}/jar.jar" basedir="${classes.dir}">
<!--fileset dir="${classes.dir}" includes="**/*.*"/-->
</jar>
</target>
<!-- 上传到服务器
**需要把lib目录下jsch-0.1.15拷贝到$ANT_HOME/lib下,如果Eclipse下的ant环境必须在Windows->preference->ANT->RUNIIME->CLASSPATH中加入jscn-0.1.15.
-->
<target name="ssh" depends="jar">
<scp file="${dist.dir}/jar.jar" todir="${remote.username}@${remote.hostname}:${remote.home}" password="${remote.password}" trust="true"/>
</target>
<target name="sshexec" depends="ssh">
<sshexec command="/usr/hadoop1/hadoop-2.7.5/bin/hadoop jar ${remote.home}/jar.jar ${main.class}" host="${remote.hostname}" username="${remote.username}" password="${remote.password}" trust="true" />
</target>
</project>
最终运行效果: