配置IDEA开发环境向远程集群提交MapReduce应用

版权声明:原创文章,谢绝转载 https://blog.csdn.net/m0_37367424/article/details/84031045

本文的主要目的

本文主要记录了通过windows10上的IDEA向远程HADOOP集群提交应用的配置过程。

安装配置HADOOP集群

安装配置IDEA

配置windows端HADOOP客户端

  1. 复制集群中的hadoop文件夹到windows,作为windows上的hadoop客户端。
  2. 配置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;
  1. 验证HADOOP
    执行hadoop version,不报错即可。
  2. 备注
    可能还需要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);

猜你喜欢

转载自blog.csdn.net/m0_37367424/article/details/84031045