一直以来,都以为,想在Win上提交hadoop集群的作业,必须得在eclipse上安装hadoop-eclipse-plugin插件才可以提交,但最近与同事交流,发现其实,不一定必须安装hadoop的eclipse插件,才能提交。今天试了一把,发现果然可以不用安装插件也可以正确提交作业到集群上,故在此总结一下。
既然,无须安装hadoop的eclipse插件,就能提交hadoop作业,那为毛,还出现了这个插件呢? 其实安装插件除了能直接提交作业外,还有一个比较方便的功能,就是能直接在eclipse上对HDFS上的文件,进行删除,上传,新建目录等,这一点是不安装插件做不到的,当然,如果你不需要这些操作,那么就无所谓了,仅仅提交个作业而已。
下面说下,如何在eclipse上使用无插件提交hadoop作业,(在hadoop集群的8088界面上可以看到提交的作业信息是否成功)。
序号 | 操作 | 说明 | 1 | eclipse IDE | 散仙在这里是4.2版本的eclipse | 2 | hadoop2.2的64位完整包 | 散仙在这里放在D盘根目录下 | 3 | 修改源码org/apache/hadoop/mapred/YARNRunner.java,改变linux与windows的路径不一致bug | 散仙已经修改好,文末散仙会上传这个修改好的类 | 4 | 把linux集群上的配置文件,core-site.xml,hdfs-site.xml,mapred.site.xml和yarn-site.xml文件,放在src根目录下,另外在D盘hadoop的/etc/hadoop目录下,覆盖一下 | 注意一致 | 5 | 编写wordcount的MR例子,开始测试 | 入门测试 | 6 | 高富帅工程师一名 | 主角 | 7 | 配置hadoop的win上的环境变量HADOOP_HOME | 只配置这一个即可 |
上面的操作都完成后,就可以进行测试了,散仙在这里的WordCount源码如下:
- package com.mywordcount;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.FilenameFilter;
- import java.io.IOException;
- import org.apache.hadoop.conf.Configuration;
- import org.apache.hadoop.conf.Configured;
- import org.apache.hadoop.fs.FileSystem;
- import org.apache.hadoop.fs.Path;
- import org.apache.hadoop.io.IntWritable;
- import org.apache.hadoop.io.LongWritable;
- import org.apache.hadoop.io.Text;
- import org.apache.hadoop.mapred.JobConf;
- import org.apache.hadoop.mapreduce.Job;
- import org.apache.hadoop.mapreduce.Mapper;
- import org.apache.hadoop.mapreduce.Reducer;
- import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
- import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
- import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
- import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
- import org.apache.hadoop.util.Tool;
- /***
- *
- * Hadoop2.2.0 无插件提交集群作业
- *
- * @author qindongliang
- *
- * hadoop技术交流群: 376932160
- *
- *
- * */
- public class MyWordCount2 {
- /**
- * Mapper
- *
- * **/
- private static class WMapper extends
- Mapper<LongWritable, Text, Text, IntWritable> {
- private IntWritable count = new IntWritable(1);
- private Text text = new Text();
- @Override
- protected void map(LongWritable key, Text value, Context context)
- throws IOException, InterruptedException {
- String values[] = value.toString().split("#");
- // System.out.println(values[0]+"========"+values[1]);
- count.set(Integer.parseInt(values[1]));
- text.set(values[0]);
- context.write(text, count);
- }
- }
- /**
- * Reducer
- *
- * **/
- private static class WReducer extends
- Reducer<Text, IntWritable, Text, Text> {
- private Text t = new Text();
- @Override
- protected void reduce(Text key, Iterable<IntWritable> value,
- Context context) throws IOException, InterruptedException {
- int count = 0;
- for (IntWritable i : value) {
- count += i.get();
- }
- t.set(count + "");
- context.write(key, t);
- }
- }
- public static void printEnv(Job job) {
- Configuration conf = job.getConfiguration();
- System.out.println("###########################################");
- System.out.println("fs.defaultFS:" + conf.get("fs.defaultFS"));
- System.out.println("mapred.job.tracker:"
- + conf.get("mapred.job.tracker"));
- System.out.println("mapreduce.framework.name" + ":"
- + conf.get("mapreduce.framework.name"));
- System.out.println("yarn.nodemanager.aux-services" + ":"
- + conf.get("yarn.nodemanager.aux-services"));
- System.out.println("yarn.resourcemanager.address" + ":"
- + conf.get("yarn.resourcemanager.address"));
- System.out.println("yarn.resourcemanager.scheduler.address" + ":"
- + conf.get("yarn.resourcemanager.scheduler.address"));
- System.out.println("yarn.resourcemanager.resource-tracker.address"
- + ":"
- + conf.get("yarn.resourcemanager.resource-tracker.address"));
- System.out.println("yarn.application.classpath" + ":"
- + conf.get("yarn.application.classpath"));
- System.out.println("zkhost:" + conf.get("zkhost"));
- System.out.println("namespace:" + conf.get("namespace"));
- System.out.println("project:" + conf.get("project"));
- System.out.println("collection:" + conf.get("collection"));
- System.out.println("shard:" + conf.get("shard"));
- System.out.println("###########################################");
- }
- /**
- * 载入hadoop的配置文件
- * 兼容hadoop1.x和hadoop2.x
- *
- * */
- public static void getConf(final Configuration conf) throws FileNotFoundException{
- String HADOOP_CONF_DIR = System.getenv().get("HADOOP_CONF_DIR");
- String HADOOP_HOME = System.getenv().get("HADOOP_HOME");
- System.out.println("HADOOP_HOME:" + HADOOP_HOME);
- System.out.println("HADOOP_CONF_DIR:" + HADOOP_CONF_DIR);//此处兼容hadoop1.x
- //此处兼容hadoop2.x
- if (HADOOP_CONF_DIR == null || HADOOP_CONF_DIR.isEmpty()) {
- HADOOP_CONF_DIR = HADOOP_HOME + "/etc/hadoop";
- }
- //得到hadoop的conf目录的路径加载文件
- File file = new File(HADOOP_CONF_DIR);
- FilenameFilter filter = new FilenameFilter() {
- @Override
- public boolean accept(File dir, String name) {
- return name.endsWith("xml");
- }
- };
- //获取hadoop的仅仅xml结尾的文件列表
- String[] list = file.list(filter);
- for (String fn : list) {
- System.out.println("Loading Configuration: " + HADOOP_CONF_DIR
- + "/" + fn);
- //循环加载xml文件
- conf.addResource(new FileInputStream(HADOOP_CONF_DIR + "/" + fn));
- }
- //yarn的classpath路径,如果为空则加载拼接yarn的路径
- if (conf.get("yarn.application.classpath", "").isEmpty()) {
- StringBuilder sb = new StringBuilder();
- sb.append(System.getenv("CLASSPATH")).append(":");
- sb.append(HADOOP_HOME).append("/share/hadoop/common/lib/*")
- .append(":");
- sb.append(HADOOP_HOME).append("/share/hadoop/common/*").append(":");
- sb.append(HADOOP_HOME).append("/share/hadoop/hdfs/*").append(":");
- sb.append(HADOOP_HOME).append("/share/hadoop/mapreduce/*")
- .append(":");
- sb.append(HADOOP_HOME).append("/share/hadoop/yarn/*").append(":");
- sb.append(HADOOP_HOME).append("/lib/*").append(":");
- conf.set("yarn.application.classpath", sb.toString());
- }
- }
- public static void main(String[] args) throws Exception { {
- Configuration conf = new Configuration();
- conf.set("mapreduce.job.jar", "myjob.jar");//此处代码,一定放在Job任务前面,否则会报类找不到的异常
- Job job = Job.getInstance(conf, "345");
- getConf(conf);
- job.setJarByClass(MyWordCount2.class);
- job.setMapperClass(WMapper.class);
- job.setReducerClass(WReducer.class);
- job.setInputFormatClass(TextInputFormat.class);
- job.setOutputFormatClass(TextOutputFormat.class);
- job.setMapOutputKeyClass(Text.class);
- job.setMapOutputValueClass(IntWritable.class);
- job.setOutputKeyClass(Text.class);
- job.setOutputValueClass(Text.class);
- String path = "/qin/output";
- FileSystem fs = FileSystem.get(conf);
- Path p = new Path(path);
- if (fs.exists(p)) {
- fs.delete(p, true);
- System.out.println("输出路径存在,已删除!");
- }
- FileInputFormat.setInputPaths(job, "/qin/input");
- FileOutputFormat.setOutputPath(job, p);
- printEnv(job);
- System.exit(job.waitForCompletion(true) ? 0 : 1);
- }
- }
- }
package com.mywordcount; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FilenameFilter; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.conf.Configured; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapred.JobConf; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.Reducer; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.input.TextInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat; import org.apache.hadoop.util.Tool; /*** * * Hadoop2.2.0 无插件提交集群作业 * * @author qindongliang * * hadoop技术交流群: 376932160 * * * */ public class MyWordCount2 { /** * Mapper * * **/ private static class WMapper extends Mapper<LongWritable, Text, Text, IntWritable> { private IntWritable count = new IntWritable(1); private Text text = new Text(); @Override protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { String values[] = value.toString().split("#"); // System.out.println(values[0]+"========"+values[1]); count.set(Integer.parseInt(values[1])); text.set(values[0]); context.write(text, count); } } /** * Reducer * * **/ private static class WReducer extends Reducer<Text, IntWritable, Text, Text> { private Text t = new Text(); @Override protected void reduce(Text key, Iterable<IntWritable> value, Context context) throws IOException, InterruptedException { int count = 0; for (IntWritable i : value) { count += i.get(); } t.set(count + ""); context.write(key, t); } } public static void printEnv(Job job) { Configuration conf = job.getConfiguration(); System.out.println("###########################################"); System.out.println("fs.defaultFS:" + conf.get("fs.defaultFS")); System.out.println("mapred.job.tracker:" + conf.get("mapred.job.tracker")); System.out.println("mapreduce.framework.name" + ":" + conf.get("mapreduce.framework.name")); System.out.println("yarn.nodemanager.aux-services" + ":" + conf.get("yarn.nodemanager.aux-services")); System.out.println("yarn.resourcemanager.address" + ":" + conf.get("yarn.resourcemanager.address")); System.out.println("yarn.resourcemanager.scheduler.address" + ":" + conf.get("yarn.resourcemanager.scheduler.address")); System.out.println("yarn.resourcemanager.resource-tracker.address" + ":" + conf.get("yarn.resourcemanager.resource-tracker.address")); System.out.println("yarn.application.classpath" + ":" + conf.get("yarn.application.classpath")); System.out.println("zkhost:" + conf.get("zkhost")); System.out.println("namespace:" + conf.get("namespace")); System.out.println("project:" + conf.get("project")); System.out.println("collection:" + conf.get("collection")); System.out.println("shard:" + conf.get("shard")); System.out.println("###########################################"); } /** * 载入hadoop的配置文件 * 兼容hadoop1.x和hadoop2.x * * */ public static void getConf(final Configuration conf) throws FileNotFoundException{ String HADOOP_CONF_DIR = System.getenv().get("HADOOP_CONF_DIR"); String HADOOP_HOME = System.getenv().get("HADOOP_HOME"); System.out.println("HADOOP_HOME:" + HADOOP_HOME); System.out.println("HADOOP_CONF_DIR:" + HADOOP_CONF_DIR);//此处兼容hadoop1.x //此处兼容hadoop2.x if (HADOOP_CONF_DIR == null || HADOOP_CONF_DIR.isEmpty()) { HADOOP_CONF_DIR = HADOOP_HOME + "/etc/hadoop"; } //得到hadoop的conf目录的路径加载文件 File file = new File(HADOOP_CONF_DIR); FilenameFilter filter = new FilenameFilter() { @Override public boolean accept(File dir, String name) { return name.endsWith("xml"); } }; //获取hadoop的仅仅xml结尾的文件列表 String[] list = file.list(filter); for (String fn : list) { System.out.println("Loading Configuration: " + HADOOP_CONF_DIR + "/" + fn); //循环加载xml文件 conf.addResource(new FileInputStream(HADOOP_CONF_DIR + "/" + fn)); } //yarn的classpath路径,如果为空则加载拼接yarn的路径 if (conf.get("yarn.application.classpath", "").isEmpty()) { StringBuilder sb = new StringBuilder(); sb.append(System.getenv("CLASSPATH")).append(":"); sb.append(HADOOP_HOME).append("/share/hadoop/common/lib/*") .append(":"); sb.append(HADOOP_HOME).append("/share/hadoop/common/*").append(":"); sb.append(HADOOP_HOME).append("/share/hadoop/hdfs/*").append(":"); sb.append(HADOOP_HOME).append("/share/hadoop/mapreduce/*") .append(":"); sb.append(HADOOP_HOME).append("/share/hadoop/yarn/*").append(":"); sb.append(HADOOP_HOME).append("/lib/*").append(":"); conf.set("yarn.application.classpath", sb.toString()); } } public static void main(String[] args) throws Exception { { Configuration conf = new Configuration(); conf.set("mapreduce.job.jar", "myjob.jar");//此处代码,一定放在Job任务前面,否则会报类找不到的异常 Job job = Job.getInstance(conf, "345"); getConf(conf); job.setJarByClass(MyWordCount2.class); job.setMapperClass(WMapper.class); job.setReducerClass(WReducer.class); job.setInputFormatClass(TextInputFormat.class); job.setOutputFormatClass(TextOutputFormat.class); job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass(IntWritable.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(Text.class); String path = "/qin/output"; FileSystem fs = FileSystem.get(conf); Path p = new Path(path); if (fs.exists(p)) { fs.delete(p, true); System.out.println("输出路径存在,已删除!"); } FileInputFormat.setInputPaths(job, "/qin/input"); FileOutputFormat.setOutputPath(job, p); printEnv(job); System.exit(job.waitForCompletion(true) ? 0 : 1); } } }
项目结构目录,截图如下:
运行信息如下:
- HADOOP_HOME:D:\hadoop-2.2.0
- HADOOP_CONF_DIR:null
- Loading Configuration: D:\hadoop-2.2.0/etc/hadoop/capacity-scheduler.xml
- Loading Configuration: D:\hadoop-2.2.0/etc/hadoop/core-site.xml
- Loading Configuration: D:\hadoop-2.2.0/etc/hadoop/hadoop-policy.xml
- Loading Configuration: D:\hadoop-2.2.0/etc/hadoop/hdfs-site.xml
- Loading Configuration: D:\hadoop-2.2.0/etc/hadoop/httpfs-site.xml
- Loading Configuration: D:\hadoop-2.2.0/etc/hadoop/mapred-site.xml
- Loading Configuration: D:\hadoop-2.2.0/etc/hadoop/yarn-site.xml
- 2014-06-25 20:40:08,419 WARN [main] conf.Configuration (Configuration.java:loadProperty(2172)) - java.io.FileInputStream@3ba08dab:an attempt to override final parameter: mapreduce.jobtracker.address; Ignoring.
- 输出路径存在,已删除!
- ###########################################
- fs.defaultFS:hdfs://h1:9000
- 2014-06-25 20:40:08,897 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - mapred.job.tracker is deprecated. Instead, use mapreduce.jobtracker.address
- mapred.job.tracker:h1:8021
- mapreduce.framework.name:yarn
- yarn.nodemanager.aux-services:mapreduce_shuffle
- yarn.resourcemanager.address:h1:8032
- yarn.resourcemanager.scheduler.address:h1:8030
- yarn.resourcemanager.resource-tracker.address:h1:8031
- yarn.application.classpath:$HADOOP_CONF_DIR,$HADOOP_COMMON_HOME/share/hadoop/common/*,$HADOOP_COMMON_HOME/share/hadoop/common/lib/*,$HADOOP_HDFS_HOME/share/hadoop/hdfs/*,$HADOOP_HDFS_HOME/share/hadoop/hdfs/lib/*,$HADOOP_YARN_HOME/share/hadoop/yarn/*,$HADOOP_YARN_HOME/share/hadoop/yarn/lib/*
- zkhost:null
- namespace:null
- project:null
- collection:null
- shard:null
- ###########################################
- 2014-06-25 20:40:08,972 INFO [main] client.RMProxy (RMProxy.java:createRMProxy(56)) - Connecting to ResourceManager at h1/192.168.46.32:8032
- 2014-06-25 20:40:09,153 WARN [main] mapreduce.JobSubmitter (JobSubmitter.java:copyAndConfigureFiles(149)) - Hadoop command-line option parsing not performed. Implement the Tool interface and execute your application with ToolRunner to remedy this.
- 2014-06-25 20:40:09,331 INFO [main] input.FileInputFormat (FileInputFormat.java:listStatus(287)) - Total input paths to process : 1
- 2014-06-25 20:40:09,402 INFO [main] mapreduce.JobSubmitter (JobSubmitter.java:submitJobInternal(394)) - number of splits:1
- 2014-06-25 20:40:09,412 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - user.name is deprecated. Instead, use mapreduce.job.user.name
- 2014-06-25 20:40:09,412 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - mapred.jar is deprecated. Instead, use mapreduce.job.jar
- 2014-06-25 20:40:09,413 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - mapred.output.value.class is deprecated. Instead, use mapreduce.job.output.value.class
- 2014-06-25 20:40:09,413 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - mapred.mapoutput.value.class is deprecated. Instead, use mapreduce.map.output.value.class
- 2014-06-25 20:40:09,413 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - mapreduce.map.class is deprecated. Instead, use mapreduce.job.map.class
- 2014-06-25 20:40:09,414 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - mapred.job.name is deprecated. Instead, use mapreduce.job.name
- 2014-06-25 20:40:09,414 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - mapreduce.reduce.class is deprecated. Instead, use mapreduce.job.reduce.class
- 2014-06-25 20:40:09,414 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - mapreduce.inputformat.class is deprecated. Instead, use mapreduce.job.inputformat.class
- 2014-06-25 20:40:09,414 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - mapred.input.dir is deprecated. Instead, use mapreduce.input.fileinputformat.inputdir
- 2014-06-25 20:40:09,414 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - mapred.output.dir is deprecated. Instead, use mapreduce.output.fileoutputformat.outputdir
- 2014-06-25 20:40:09,415 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - mapreduce.outputformat.class is deprecated. Instead, use mapreduce.job.outputformat.class
- 2014-06-25 20:40:09,416 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - mapred.map.tasks is deprecated. Instead, use mapreduce.job.maps
- 2014-06-25 20:40:09,416 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - mapred.output.key.class is deprecated. Instead, use mapreduce.job.output.key.class
- 2014-06-25 20:40:09,416 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - mapred.mapoutput.key.class is deprecated. Instead, use mapreduce.map.output.key.class
- 2014-06-25 20:40:09,416 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - mapred.working.dir is deprecated. Instead, use mapreduce.job.working.dir
- 2014-06-25 20:40:09,502 INFO [main] mapreduce.JobSubmitter (JobSubmitter.java:printTokens(477)) - Submitting tokens for job: job_1403723552088_0016
- 2014-06-25 20:40:09,651 INFO [main] impl.YarnClientImpl (YarnClientImpl.java:submitApplication(174)) - Submitted application application_1403723552088_0016 to ResourceManager at h1/192.168.46.32:8032
- 2014-06-25 20:40:09,683 INFO [main] mapreduce.Job (Job.java:submit(1272)) - The url to track the job: http://h1:8088/proxy/application_1403723552088_0016/
- 2014-06-25 20:40:09,683 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1317)) - Running job: job_1403723552088_0016
- 2014-06-25 20:40:17,070 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1338)) - Job job_1403723552088_0016 running in uber mode : false
- 2014-06-25 20:40:17,072 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1345)) - map 0% reduce 0%
- 2014-06-25 20:40:23,232 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1345)) - map 100% reduce 0%
- 2014-06-25 20:40:30,273 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1345)) - map 100% reduce 100%
- 2014-06-25 20:40:30,289 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1356)) - Job job_1403723552088_0016 completed successfully
- 2014-06-25 20:40:30,403 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1363)) - Counters: 43
- File System Counters
- FILE: Number of bytes read=58
- FILE: Number of bytes written=160123
- FILE: Number of read operations=0
- FILE: Number of large read operations=0
- FILE: Number of write operations=0
- HDFS: Number of bytes read=136
- HDFS: Number of bytes written=27
- HDFS: Number of read operations=6
- HDFS: Number of large read operations=0
- HDFS: Number of write operations=2
- Job Counters
- Launched map tasks=1
- Launched reduce tasks=1
- Data-local map tasks=1
- Total time spent by all maps in occupied slots (ms)=4398
- Total time spent by all reduces in occupied slots (ms)=4263
- Map-Reduce Framework
- Map input records=4
- Map output records=4
- Map output bytes=44
- Map output materialized bytes=58
- Input split bytes=98
- Combine input records=0
- Combine output records=0
- Reduce input groups=3
- Reduce shuffle bytes=58
- Reduce input records=4
- Reduce output records=3
- Spilled Records=8
- Shuffled Maps =1
- Failed Shuffles=0
- Merged Map outputs=1
- GC time elapsed (ms)=94
- CPU time spent (ms)=980
- Physical memory (bytes) snapshot=310431744
- Virtual memory (bytes) snapshot=1681850368
- Total committed heap usage (bytes)=136450048
- Shuffle Errors
- BAD_ID=0
- CONNECTION=0
- IO_ERROR=0
- WRONG_LENGTH=0
- WRONG_MAP=0
- WRONG_REDUCE=0
- File Input Format Counters
- Bytes Read=38
- File Output Format Counters
- Bytes Written=27
HADOOP_HOME:D:\hadoop-2.2.0 HADOOP_CONF_DIR:null Loading Configuration: D:\hadoop-2.2.0/etc/hadoop/capacity-scheduler.xml Loading Configuration: D:\hadoop-2.2.0/etc/hadoop/core-site.xml Loading Configuration: D:\hadoop-2.2.0/etc/hadoop/hadoop-policy.xml Loading Configuration: D:\hadoop-2.2.0/etc/hadoop/hdfs-site.xml Loading Configuration: D:\hadoop-2.2.0/etc/hadoop/httpfs-site.xml Loading Configuration: D:\hadoop-2.2.0/etc/hadoop/mapred-site.xml Loading Configuration: D:\hadoop-2.2.0/etc/hadoop/yarn-site.xml 2014-06-25 20:40:08,419 WARN [main] conf.Configuration (Configuration.java:loadProperty(2172)) - java.io.FileInputStream@3ba08dab:an attempt to override final parameter: mapreduce.jobtracker.address; Ignoring. 输出路径存在,已删除! ########################################### fs.defaultFS:hdfs://h1:9000 2014-06-25 20:40:08,897 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - mapred.job.tracker is deprecated. Instead, use mapreduce.jobtracker.address mapred.job.tracker:h1:8021 mapreduce.framework.name:yarn yarn.nodemanager.aux-services:mapreduce_shuffle yarn.resourcemanager.address:h1:8032 yarn.resourcemanager.scheduler.address:h1:8030 yarn.resourcemanager.resource-tracker.address:h1:8031 yarn.application.classpath:$HADOOP_CONF_DIR,$HADOOP_COMMON_HOME/share/hadoop/common/*,$HADOOP_COMMON_HOME/share/hadoop/common/lib/*,$HADOOP_HDFS_HOME/share/hadoop/hdfs/*,$HADOOP_HDFS_HOME/share/hadoop/hdfs/lib/*,$HADOOP_YARN_HOME/share/hadoop/yarn/*,$HADOOP_YARN_HOME/share/hadoop/yarn/lib/* zkhost:null namespace:null project:null collection:null shard:null ########################################### 2014-06-25 20:40:08,972 INFO [main] client.RMProxy (RMProxy.java:createRMProxy(56)) - Connecting to ResourceManager at h1/192.168.46.32:8032 2014-06-25 20:40:09,153 WARN [main] mapreduce.JobSubmitter (JobSubmitter.java:copyAndConfigureFiles(149)) - Hadoop command-line option parsing not performed. Implement the Tool interface and execute your application with ToolRunner to remedy this. 2014-06-25 20:40:09,331 INFO [main] input.FileInputFormat (FileInputFormat.java:listStatus(287)) - Total input paths to process : 1 2014-06-25 20:40:09,402 INFO [main] mapreduce.JobSubmitter (JobSubmitter.java:submitJobInternal(394)) - number of splits:1 2014-06-25 20:40:09,412 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - user.name is deprecated. Instead, use mapreduce.job.user.name 2014-06-25 20:40:09,412 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - mapred.jar is deprecated. Instead, use mapreduce.job.jar 2014-06-25 20:40:09,413 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - mapred.output.value.class is deprecated. Instead, use mapreduce.job.output.value.class 2014-06-25 20:40:09,413 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - mapred.mapoutput.value.class is deprecated. Instead, use mapreduce.map.output.value.class 2014-06-25 20:40:09,413 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - mapreduce.map.class is deprecated. Instead, use mapreduce.job.map.class 2014-06-25 20:40:09,414 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - mapred.job.name is deprecated. Instead, use mapreduce.job.name 2014-06-25 20:40:09,414 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - mapreduce.reduce.class is deprecated. Instead, use mapreduce.job.reduce.class 2014-06-25 20:40:09,414 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - mapreduce.inputformat.class is deprecated. Instead, use mapreduce.job.inputformat.class 2014-06-25 20:40:09,414 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - mapred.input.dir is deprecated. Instead, use mapreduce.input.fileinputformat.inputdir 2014-06-25 20:40:09,414 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - mapred.output.dir is deprecated. Instead, use mapreduce.output.fileoutputformat.outputdir 2014-06-25 20:40:09,415 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - mapreduce.outputformat.class is deprecated. Instead, use mapreduce.job.outputformat.class 2014-06-25 20:40:09,416 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - mapred.map.tasks is deprecated. Instead, use mapreduce.job.maps 2014-06-25 20:40:09,416 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - mapred.output.key.class is deprecated. Instead, use mapreduce.job.output.key.class 2014-06-25 20:40:09,416 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - mapred.mapoutput.key.class is deprecated. Instead, use mapreduce.map.output.key.class 2014-06-25 20:40:09,416 INFO [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(840)) - mapred.working.dir is deprecated. Instead, use mapreduce.job.working.dir 2014-06-25 20:40:09,502 INFO [main] mapreduce.JobSubmitter (JobSubmitter.java:printTokens(477)) - Submitting tokens for job: job_1403723552088_0016 2014-06-25 20:40:09,651 INFO [main] impl.YarnClientImpl (YarnClientImpl.java:submitApplication(174)) - Submitted application application_1403723552088_0016 to ResourceManager at h1/192.168.46.32:8032 2014-06-25 20:40:09,683 INFO [main] mapreduce.Job (Job.java:submit(1272)) - The url to track the job: http://h1:8088/proxy/application_1403723552088_0016/ 2014-06-25 20:40:09,683 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1317)) - Running job: job_1403723552088_0016 2014-06-25 20:40:17,070 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1338)) - Job job_1403723552088_0016 running in uber mode : false 2014-06-25 20:40:17,072 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1345)) - map 0% reduce 0% 2014-06-25 20:40:23,232 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1345)) - map 100% reduce 0% 2014-06-25 20:40:30,273 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1345)) - map 100% reduce 100% 2014-06-25 20:40:30,289 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1356)) - Job job_1403723552088_0016 completed successfully 2014-06-25 20:40:30,403 INFO [main] mapreduce.Job (Job.java:monitorAndPrintJob(1363)) - Counters: 43 File System Counters FILE: Number of bytes read=58 FILE: Number of bytes written=160123 FILE: Number of read operations=0 FILE: Number of large read operations=0 FILE: Number of write operations=0 HDFS: Number of bytes read=136 HDFS: Number of bytes written=27 HDFS: Number of read operations=6 HDFS: Number of large read operations=0 HDFS: Number of write operations=2 Job Counters Launched map tasks=1 Launched reduce tasks=1 Data-local map tasks=1 Total time spent by all maps in occupied slots (ms)=4398 Total time spent by all reduces in occupied slots (ms)=4263 Map-Reduce Framework Map input records=4 Map output records=4 Map output bytes=44 Map output materialized bytes=58 Input split bytes=98 Combine input records=0 Combine output records=0 Reduce input groups=3 Reduce shuffle bytes=58 Reduce input records=4 Reduce output records=3 Spilled Records=8 Shuffled Maps =1 Failed Shuffles=0 Merged Map outputs=1 GC time elapsed (ms)=94 CPU time spent (ms)=980 Physical memory (bytes) snapshot=310431744 Virtual memory (bytes) snapshot=1681850368 Total committed heap usage (bytes)=136450048 Shuffle Errors BAD_ID=0 CONNECTION=0 IO_ERROR=0 WRONG_LENGTH=0 WRONG_MAP=0 WRONG_REDUCE=0 File Input Format Counters Bytes Read=38 File Output Format Counters Bytes Written=27
至此,我们已经可以成功的在无插件的环境里提交hadoop任务了,如果提交过程中,出现权限异常,可以在eclipse的run环境里配置,linux上安装hadoop的用户名即可,截图如下:
注意,一定是安装hadoop的用户,写成其他的用户,可能会导致没有权限访问HDFS上的数据,从而使提交的作业运行失败。
相关推荐
TinyYolo2实时视频流物体检测ONNX模型 运行 ONNX 模型,并结合 OpenCV 进行图像处理。具体流程包括: 1. 加载并初始化 ONNX 模型。 2. 从摄像头捕获实时视频流。 3. 对每一帧图像进行模型推理,生成物体检测结果。 4. 在界面上绘制检测结果的边界框和标签。
chromedriver-linux64-134.0.6998.23(Beta).zip
Web开发:ABP框架4-DDD四层架构的详解
chromedriver-linux64-135.0.7029.0(Canary).zip
实现人脸识别的考勤门禁系统可以分为以下步骤: 1. 采集人脸图像数据集:首先需要采集员工的人脸图像数据集,包括正面、侧面等多个角度的图像。可以使用MATLAB中的图像采集工具或者第三方库进行采集。 2. 预处理人脸图像数据:对采集到的人脸图像数据进行预处理,包括人脸检测、人脸对齐、人脸裁剪等操作。MATLAB提供了相关的图像处理工具箱,可以用于实现这些处理步骤。 3. 特征提取与特征匹配:使用人脸识别算法提取人脸图像的特征,比如使用人脸识别中常用的特征提取算法如Eigenfaces、Fisherfaces或者基于深度学习的算法。然后将员工的人脸数据与数据库中的人脸数据进行匹配,判断是否为注册员工。 4. 考勤记录与门禁控制:如果人脸匹配成功,系统可以记录员工的考勤时间,并且控制门禁系统进行开启。MATLAB可以与外部设备进行通信,实现门禁控制以及考勤记录功能。
yugy
企业IT治理体系规划.pptx
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
基于多目标粒子群算法的冷热电联供综合能源系统优化调度与运行策略分析,基于多目标粒子群算法的冷热电联供综合能源系统优化调度与运行策略分析,MATLAB代码:基于多目标粒子群算法冷热电联供综合能源系统运行优化 关键词:综合能源 冷热电三联供 粒子群算法 多目标优化 参考文档:《基于多目标算法的冷热电联供型综合能源系统运行优化》 仿真平台:MATLAB 平台采用粒子群实现求解 优势:代码注释详实,适合参考学习,非目前烂大街的版本,程序非常精品,请仔细辨识 主要内容:代码构建了含冷、热、电负荷的冷热电联供型综合能源系统优化调度模型,考虑了燃气轮机、电制冷机、锅炉以及风光机组等资源,并且考虑与上级电网的购电交易,综合考虑了用户购电购热冷量的成本、CCHP收益以及成本等各种因素,从而实现CCHP系统的经济运行,求解采用的是MOPSO算法(多目标粒子群算法),求解效果极佳,具体可以看图 ,核心关键词: 综合能源系统; 冷热电三联供; 粒子群算法; 多目标优化; MOPSO算法; 优化调度模型; 燃气轮机; 电制冷机; 锅炉; 风光机组; 上级电网购售电交易。,基于多目标粒子群算法的CCHP综合
DSP28379D串口升级方案:单核双核升级与Boot优化,C#上位机开发串口通信方案,DSP28379D串口升级方案:单核双核升级与Boot优化,C#上位机开发实现串口通信,DSP28379D串口升级方案 单核双核升级,boot升级,串口方案。 上位机用c#开发。 ,DSP28379D; 串口升级方案; 单核双核升级; boot升级; 上位机C#开发,DSP28379D串口双核升级方案:Boot串口升级技术使用C#上位机开发
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
基于PLC的双层自动门控制:光电传感触发,有序开关与延时功能实现,附程序、画面及参考文档。,基于PLC的双层自动门控制系统:精准控制,保障无尘环境;门间联动,智能安防新体验。,基于plc的双层自动门控制系统,全部采用博途仿真完成,提供程序,画面,参考文档,详情见图。 实现功能(详见上方演示视频): ① 某房间要求尽可能地保持无尘,在通道上设置了两道电动门,门1和门2,可通过光电传感器自动完成门的打开和关闭。 门1和门2 不能同时打开。 ② 第 1 道门(根据出入方向不同,可能是门 1 或门 2),是由在通道外的开门者通过按开门按钮打开的,而第 2 道门(根据出入方向不同,可能是门 1 或门 2 )则是在打开的第 1 道门关闭后自动地打开的(也可以由通道内的人按开门按钮来打开第2 道门)。 这两道门都是在门开后,经过 3s 的延时而自动关闭的。 ③ 在门关闭期间,如果对应的光电传感器的信号被遮断,则门立即自动打开。 如果在门外或者在门内的开门者按对应的开门按钮时,立即打开。 ④ 出于安全方面的考虑,如果在通道内的某个人经过光电传感器时,对应的门已经打开,则通道外的开门者可以不按开门按钮。
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
DeepSeek+DeepResearch——让科研像聊天一样简单 (1)DeepSeek如何做数据分析? (2)DeepSeek如何分析文件内容? (3)DeepSeek如何进行数据挖掘? (4)DeepSeek如何进行科学研究? (5)DeepSeek如何写综述? (6)DeepSeek如何进行数据可视化? (7)DeepSeek如何写作润色? (8)DeepSeek如何中英文互译? (9)DeepSeek如何做降重? (10)DeepSeek论文参考文献指令 (11)DeepSeek基础知识。
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
1、文件内容:jdepend-demo-2.9.1-10.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/jdepend-demo-2.9.1-10.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行;功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
内容概要:本文档详细介绍了如何利用 MATLAB 实现鲸鱼优化算法 (WOA) 和长短期记忆网络 (LSTM) 相结合的技术——WOA-LSTM,在数据分类和预测领域的应用。文章首先概述了LSTM在网络训练中超参数依赖的问题以及WOA作为一种新颖的全局优化算法的优势。接着阐述了该项目的研究背景、目的及其重要意义,并深入讨论了项目面临的六大主要挑战,从模型优化到超参数空间管理。文档特别强调WOA-LSTM融合所带来的性能提升、降低计算复杂度的能力及其实现自动化的超参数优化流程。除此之外,文中展示了模型的应用广泛性,覆盖了从金融市场的股票预测到智能制造业的各种实际场景,并提供了具体的模型架构细节和代码实例,以帮助理解模型的工作原理和技术要点。 适合人群:具有一定编程技能的研究人员、工程师和科学家们,尤其是对深度学习技术和机器学习感兴趣的专业人士。 使用场景及目标:该文档的目标是向用户传授使用MATLAB实现WOA-LSTM进行复杂数据分类和预测的方法论,旨在指导读者理解和掌握如何利用WOA进行超参数寻优,从而改善LSTM网络性能。 其他说明:通过阅读这份文档,使用者不仅能够获得有关WOA-LSTM技术的具体实现方式的知识,而且还可以获取关于项目规划和实际部署过程中的宝贵经验。
tomcat安装及配置教程.md
**MATLAB下微电网两阶段鲁棒优化经济调度策略:基于CCG算法与min-max-min结构求解**,MATLAB微电网两阶段鲁棒优化经济调度程序:构建min-max-min结构模型,实现恶劣场景下的低成本调度,灵活调整调度保守性,利用列约束生成算法求解,MATLAB代码:微电网两阶段鲁棒优化经济调度程序 关键词:微网优化调度 两阶段鲁棒 CCG算法 经济调度 参考文档:《微电网两阶段鲁棒优化经济调度方法》 仿真平台:MATLAB YALMIP+CPLEX 优势:代码注释详实,出图效果非常好(具体看图),非目前烂大街版本,请仔细辨识 主要内容:构建了微网两阶段鲁棒调度模型,建立了min-max-min 结构的两阶段鲁棒优化模型,可得到最恶劣场景下运行成本最低的调度方案。 模型中考虑了储能、需求侧负荷及可控分布式电源等的运行约束和协调控制,并引入了不确定性调节参数,可灵活调整调度方案的保守性。 基于列约束生成算法和强对偶理论,可将原问题分解为具有混合整数线性特征的主问题和子问题进行交替求解,从而得到原问题的最优解。 最终通过仿真分析验证了所建模型和求解算法的有效性,具体内容可自行查