版权声明:原创文章,谢绝转载 https://blog.csdn.net/m0_37367424/article/details/84031045
本文的主要目的
本文主要记录了通过windows10上的IDEA向远程HADOOP集群提交应用的配置过程。
安装配置HADOOP集群
略
安装配置IDEA
略
配置windows端HADOOP客户端
- 复制集群中的hadoop文件夹到windows,作为windows上的hadoop客户端。
- 配置windows hadoop环境变量
HADOOP_HOME=D:\hadoop-ocdp3.5
HADOOP_BIN_PATH=%HADOOP_HOME%\bin
HADOOP_PREFIX=%HADOOP_HOME%
在path后追加
;%HADOOP_HOME%\sbin;%HADOOP_HOME%\bin;
- 验证HADOOP
执行hadoop version
,不报错即可。
- 备注
可能还需要hadoop.dll
,winutils.exe
,可以在github上下载。
配置IDEA
- 配置生成可执行jar包
编写相关代码
// 指定日志文件位置,必须使用绝对路径
PropertyConfigurator.configure("D:\\IJworkspace\\bigdata\\src\\main\\resources\\hadoop\\log4j.properties");
// 添加配置文件
Configuration conf = new Configuration();
conf.addResource("hadoop/hdfs-site.xml");
conf.addResource("hadoop/core-site.xml");
conf.addResource("hadoop/mapred-site.xml");
conf.addResource("hadoop/yarn-site.xml");
// 如果要从windows系统中运行这个job提交客户端的程序,则需要加这个跨平台提交的参数
conf.set("mapreduce.app-submission.cross-platform","true");
// 指定jar文件,该jar文件为mapreduce程序,需要是可执行jar包,文件路径可以是本地文件路径或hdfs路径
Job job = Job.getInstance(conf);
job.setJar("D:\\IJworkspace\\bigdata\\out\\artifacts\\bigdata_jar\\bigdata.jar");
配置运行参数,以下图为例进行配置,此处可配置命令行参数
运行
以上配置完成后点击三角
运行即可
实例
此处使用LoadRunner
类封装了一下,相关路径已经写死了
项目Github地址
package common;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.mapreduce.Job;
import org.apache.log4j.PropertyConfigurator;
import java.io.IOException;
/**
* 打包win提交时的运行参数
*/
public class LocalRunner {
static {
PropertyConfigurator.configure("D:\\IJworkspace\\bigdata\\src\\main\\resources\\hadoop\\log4j.properties");
}
/**
* 向配置中添加hadoop集群配置文件
* @param conf Configuration 实例
*/
public static void packageConfiguration(Configuration conf) {
conf.addResource("hadoop/hdfs-site.xml");
conf.addResource("hadoop/core-site.xml");
conf.addResource("hadoop/mapred-site.xml");
conf.addResource("hadoop/yarn-site.xml");
// 如果要从windows系统中运行这个job提交客户端的程序,则需要加这个跨平台提交的参数
conf.set("mapreduce.app-submission.cross-platform","true");
}
/**
* 返回一个包装过的job实例
* @param conf Configuration 实例
* @return Job 包装过的job实例
*/
public static Job packageJob(Configuration conf) throws IOException {
Job job = Job.getInstance(conf);
job.setJar("D:\\IJworkspace\\bigdata\\out\\artifacts\\bigdata_jar\\bigdata.jar");
return job;
}
}
使用时调用如下即可
Configuration conf = getConf();
// 本地提交
LocalRunner.packageConfiguration(conf);
Job job = LocalRunner.packageJob(conf);