如何从本地 IDE 在远程集群上 运行 MapReduce 程序
How to run MapReduce Program from local IDE on remote cluster
我有一个简单的 MapReduce 程序,我想 运行 它在远程集群上。我可以通过简单地 运行ning
从命令行执行此操作
hadoop jar myjar.jar input output
但是当我想 运行 我的 IDE 我的 junit TestCase class 中的一个函数调用 MR 作业时,我收到以下警告:
WARN org.apache.hadoop.mapreduce.JobSubmitter - No job jar file set. User classes may not be found. See Job or Job#setJar(String).
INFO org.apache.hadoop.mapred.YARNRunner - Job jar is not present. Not adding any jar to the list of resources.
尽管我设置了这条线,但在提交 MR 作业之前:
job.setJarByClass(MyJob.class);
因此作业失败,因为它找不到合适的 classes(比如 MyMapKey,它是映射器键 class)来操作。
Error: java.io.IOException: Initialization of all the collectors failed. Error in last collector was :java.lang.RuntimeException: java.lang.ClassNotFoundException: Class MyMapKey not found
at org.apache.hadoop.mapred.MapTask.createSortingCollector(MapTask.java:414)
at org.apache.hadoop.mapred.MapTask.access0(MapTask.java:81)
at org.apache.hadoop.mapred.MapTask$NewOutputCollector.<init>(MapTask.java:698)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:770)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
at org.apache.hadoop.mapred.YarnChild.run(YarnChild.java:164)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1709)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
对此有什么想法吗?
首先你应该添加远程 Hadoop 集群配置文件(即 core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、ssl- client.xml) 作为配置对象的资源。然后按照上面的步骤 link 查看如何手动将作业 jar 添加到远程集群上的类路径。
我有一个简单的 MapReduce 程序,我想 运行 它在远程集群上。我可以通过简单地 运行ning
从命令行执行此操作hadoop jar myjar.jar input output
但是当我想 运行 我的 IDE 我的 junit TestCase class 中的一个函数调用 MR 作业时,我收到以下警告:
WARN org.apache.hadoop.mapreduce.JobSubmitter - No job jar file set. User classes may not be found. See Job or Job#setJar(String).
INFO org.apache.hadoop.mapred.YARNRunner - Job jar is not present. Not adding any jar to the list of resources.
尽管我设置了这条线,但在提交 MR 作业之前:
job.setJarByClass(MyJob.class);
因此作业失败,因为它找不到合适的 classes(比如 MyMapKey,它是映射器键 class)来操作。
Error: java.io.IOException: Initialization of all the collectors failed. Error in last collector was :java.lang.RuntimeException: java.lang.ClassNotFoundException: Class MyMapKey not found
at org.apache.hadoop.mapred.MapTask.createSortingCollector(MapTask.java:414)
at org.apache.hadoop.mapred.MapTask.access0(MapTask.java:81)
at org.apache.hadoop.mapred.MapTask$NewOutputCollector.<init>(MapTask.java:698)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:770)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
at org.apache.hadoop.mapred.YarnChild.run(YarnChild.java:164)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1709)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
对此有什么想法吗?
首先你应该添加远程 Hadoop 集群配置文件(即 core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、ssl- client.xml) 作为配置对象的资源。然后按照上面的步骤 link 查看如何手动将作业 jar 添加到远程集群上的类路径。