Intellij IDEA远程向hadoop集群提交mapreduce作业,需要依赖到hadoop的库,hadoop集群的配置信息,还有本地项目的jar包。

一、软件环境

(1)window本地安装hadoop软件

首先将集群上的hadoop环境下载到本地,本文是在“A:\soft\hadoop-2.6.0”

(2)设置环境变量HADOOP_HOME

HADOOP_HOME=A:\soft\hadoop-2.6.0
HADOOP_BIN_PATH=%HADOOP_HOME%\bin
HADOOP_PREFIX=A:\soft\hadoop-2.6.0
PATH追加路径;%HADOOP_HOME%\bin

注意:配置好环境变量重启电脑 

(3)添加winutils.exe和hadoop.dll(x86)

下载对应版本的文件:https://github.com/steveloughran/winutils

winutils.exe放置到HADOOP_HOME/bin下  

hadoop.dll放置到HADOOP_HOME/bin和C:\Windows\System32下

选择正确的版本,下载相同版本的hadoop.dll,或者版本稍高

注意:hadoop-2.6.0的hadoop.dll大小是94KB,网上的其他hadoop.dll的大小不一样的不是2.6.0版本的。

 

常见问题:

1)Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable HADOOP_HOME\bin\winutils.exe in the Hadoop binaries.

HADOOP_HOME/bin没有winutils.exe

2)Could not locate executable null \bin\winutils.exe in the hadoop binaries

环境变量未生效

3)Unable to load native-hadoop library for your platform… using builtin-Java classes where applicable

4)java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.NativeCrc32.nativeComputeChunkedSumsByteArray

hadoop.dll未放置到C:\Windows\System32或者hadoop.dll文件不正确

 

 

二、项目设置

(1)配置文件

拷贝hadoop集群中配置文件core-site.xml、mapred-site.xml、yarn-site.xml到项目,以及设置log4j.properties文件

(2)设置配置文件的host

(3)设置项目打包

右击项目名称,选择Open Module Settings,选择Artifacts,点击中间绿色的+号,选择JAR,再选择From module with dependencies,填写启动主类MainClass保存

(4)跨平台设置

  Configuration conf = new Configuration();
  conf.set("mapreduce.app-submission.cross-platform", "true");
//跨平台提交,在windows下如果没有这句代码会报错 "/bin/bash: line 0: fg: no job control"

(5)设置jar路径,否则hadoop会找不到jar

项目的jar输出路径为.\\out\\artifacts\\hadoop_test_jar\\hadoop-test.jar,在项目打包设置的输出路径

Job job = new Job(conf, "word count");
String jar = ".\\out\\artifacts\\hadoop_test_jar\\hadoop-test.jar";
job.setJar(jar);//项目打包的jar设置到jar
job.setJarByClass(WordCount.class);

 

常见问题:

1)Exception message: /bin/bash: 第 0 行:fg: 无任务控制

Stack trace: ExitCodeException exitCode=1: /bin/bash: 第 0 行:fg: 无任务控制

未设置跨平台提交job

2)Error: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class com.mk.mapreduce.WordCount$MyMapper not found

 未设置job.setJar()方法

3)system times on machines may be out of sync

1、安装ntpdate工具

#cenos
yum -y install ntp ntpdate
#ubuntu
sudo apt install ntp ntpdate

2、 设置系统时间与网络时间同步

ntpdate cn.pool.ntp.org
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐