cp
或classpath
选项指定依赖项,然后运行主类。确保所有必要的库都已正确配置。 编译并运行MapReduce应用
(图片来源网络,侵删)以下是一个简单的步骤指南,用于编译和运行一个基本的MapReduce应用,我们将使用Hadoop MapReduce框架作为示例。
步骤1:准备环境
确保你已经安装了Java开发工具包(JDK)和Hadoop,你需要有一个文本文件作为输入数据,以及一个包含MapReduce任务的Java类。
步骤2:编写MapReduce程序
创建一个名为WordCount.java
的文件,并编写以下代码:
import java.io.IOException; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.Reducer; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; public class WordCount { public static class TokenizerMapper extends Mapper<LongWritable, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { String[] tokens = value.toString().split("\s+"); for (String token : tokens) { word.set(token); context.write(word, one); } } } public static class IntSumReducer extends Reducer<Text, IntWritable, Text, IntWritable> { private IntWritable result = new IntWritable(); public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException { int sum = 0; for (IntWritable val : values) { sum += val.get(); } result.set(sum); context.write(key, result); } } public static void main(String[] args) throws Exception { Job job = Job.getInstance(); job.setJarByClass(WordCount.class); job.setMapperClass(TokenizerMapper.class); job.setCombinerClass(IntSumReducer.class); job.setReducerClass(IntSumReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); FileInputFormat.addInputPath(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); System.exit(job.waitForCompletion(true) ? 0 : 1); } }
步骤3:编译MapReduce程序
在命令行中,导航到包含WordCount.java
文件的目录,然后执行以下命令来编译程序:
$ javac classpathhadoop classpath
WordCount.java
这将生成一个名为WordCount.class
的文件。
步骤4:运行MapReduce程序
你可以运行编译好的MapReduce程序,假设你的输入数据位于HDFS上的/input
目录,输出结果将写入/output
目录,执行以下命令:
$ hadoop jar WordCount.jar WordCount /input /output
等待程序完成运行,完成后,你可以在HDFS上查看/output
目录以获取结果。
最新评论
本站CDN与莫名CDN同款、亚太CDN、速度还不错,值得推荐。
感谢推荐我们公司产品、有什么活动会第一时间公布!
我在用这类站群服务器、还可以. 用很多年了。