[MapReduce程序编写运行打包 ]

目录

🍀🍁前言:

🍀🍁编写MapReduce程序

🍀🍁代码中提交作业示意。

🍀🍁打包MapReduce程序

🍀🍁使用Eclipse打包MapReduce程序

🍀🍁使用Maven打包MapReduce程序

在pom.xml文件中,添加以下插件配置:

🍀🍁打包第三种方式:

🍀🍁部署MapReduce程序

🍀🍁可以使用hadoop fs命令或者Hadoop Web UI来完成上传操作。具体来说,我们可以使用以下命令将jar包上传到Hadoop集群中:

🍀🍁在Hadoop集群中,我们需要配置MapReduce作业的参数,包括输入路径、输出路径、Mapper类、Reducer类等。可以使用hadoop命令或者Hadoop Web UI来完成配置操作。具体来说,我们可以使用以下命令来配置MapReduce作业的参数:

🍀🍁在配置好MapReduce作业的参数后,我们可以使用hadoop命令来提交作业。具体来说,我们可以使用以下命令来提交MapReduce作业:

🍀🍁运行MapReduce程序

🍀🍁使用hadoop命令来提交MapReduce作业,命令格式如下:

🍀🍁监控MapReduce作业

🍀🍁要监控MapReduce作业,可以通过配置Hadoop的日志和监控系统来实现。以下是一些常用的监控配置:


🍀🍁前言:

  记录笔记

🍀🍁编写MapReduce程序

首先,我们需要编写MapReduce程序,包括Mapper类、Reducer类、Driver类等。Mapper类和Reducer类分别用于处理输入数据集中的每个记录和对输出键值对进行合并,而Driver类则用于设置MapReduce作业的相关参数,

🍀🍁代码中提交作业示意。

Job job = new Job(new Configuration());
job.setJarByClass(DataFilterJob.driver.class); // 配置job运行的hdfs程序包
job.setMapperClass(DataFilterMapper.class); // 配置map任务对应mapper写类作业
job.setOutputKeyClass(Text.class); // 配置输出key类型
job.setOutputValueClass(Text.class);// 配置输出value类型
FileInputFormat.addInputPath(job,new Path(args[0])); // 配置map任务输入格式,输入文件、路径
FileOutputFormat.setOutputPath(job,new Path(args[1])); // 最终转换后文件输出路径
job.setNumReduceTasks(0); 替代删掉某个刀任务
System.exit(job.waitForCompletion(true) ? 0 : 1); // 提交与job时提交各个map的任务
 

🍀🍁打包MapReduce程序

将编写好的MapReduce程序打包成一个jar包,包括所有的依赖库和配置文件。

打包MapReduce程序可以使用Eclipse或者Maven等工具来完成。以下是两种常用的打包方式:

🍀🍁使用Eclipse打包MapReduce程序

在Eclipse中,我们可以使用Export功能将MapReduce程序打包成一个可执行的jar包。具体步骤如下:

  • 在Eclipse中,选择File -> Export -> Runnable JAR file。
  • 在弹出的对话框中,选择要导出的Java类和主函数,并选择要导出的jar包的路径和名称。
  • 在Library handling选项中,选择Extract required libraries into generated JAR,然后点击Finish按钮。

这样,Eclipse就会将MapReduce程序及其依赖库打包成一个可执行的jar包。

🍀🍁使用Maven打包MapReduce程序

在Maven中,我们可以使用Maven插件将MapReduce程序打包成一个可执行的jar包。具体步骤如下:

  • 在pom.xml文件中,添加以下插件配置:
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.3.0</version>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>com.example.Driver</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
🍀🍁打包第三种方式:

打包MapReduce程序通常使用Maven或其他打包工具,可以将程序打包成一个可执行的JAR文件,其中包括所有依赖的库和配置文件。打包程序的过程通常包括以下几个步骤:

  1. 编写MapReduce程序:使用Java编写MapReduce程序,包括Mapper、Reducer和Job任务类,实现对大规模数据集进行处理,例如去重、过滤、格式转换等操作。

  2. 配置Maven:如果使用Maven打包程序,需要在项目的pom.xml文件中添加相关配置,包括设置项目名称、版本号、依赖库等信息。例如,添加以下配置:

<project>
  <groupId>com.example</groupId>
  <artifactId>myprogram</artifactId>
  <version>1.0-SNAPSHOT</version>
  <dependencies>
    <!-- 添加Hadoop依赖库 -->
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-core</artifactId>
      <version>2.7.3</version>
    </dependency>
  </dependencies>
</project>

打包程序:使用Maven命令或其他打包工具将程序打包成一个可执行的JAR文件。例如,使用Maven命令打包程序:

 

mvn clean package

  1. 执行该命令后,Maven将会自动下载相关的依赖库,并将程序打包成名为“myprogram.jar”的JAR文件。

  2. 运行MapReduce作业:将打包好的JAR文件上传到Hadoop集群中,并使用Hadoop提供的工具类提交MapReduce作业。例如,如下命令提交MapReduce作业:

  3. hadoop jar myprogram.jar input output

  • 其中,“myprogram.jar”是MapReduce程序打包后的JAR文件,“input”是需要处理的数据所在的路径,“output”是处理结果保存的路径。

总的来说,打包MapReduce程序可以使用Maven或其他打包工具,将程序打包成一个可执行的JAR文件,并上传到Hadoop集群中进行运行。

 

🍀🍁部署MapReduce程序

将打包好的MapReduce程序部署到Hadoop集群中,包括上传jar包和配置文件等。

🍀🍁可以使用hadoop fs命令或者Hadoop Web UI来完成上传操作。具体来说,我们可以使用以下命令将jar包上传到Hadoop集群中:
hadoop fs -put /path/to/your/jarfile.jar /user/hadoop/

  • 其中,/path/to/your/jarfile.jar是jar包的本地路径,/user/hadoop/是Hadoop集群中的目标路径。
🍀🍁在Hadoop集群中,我们需要配置MapReduce作业的参数,包括输入路径、输出路径、Mapper类、Reducer类等。可以使用hadoop命令或者Hadoop Web UI来完成配置操作。具体来说,我们可以使用以下命令来配置MapReduce作业的参数:
hadoop jar /path/to/your/jarfile.jar com.example.Driver input output
  • 其中,/path/to/your/jarfile.jar是jar包的路径,com.example.Driver是Driver类的完整类名,input是输入路径,output是输出路径。
🍀🍁在配置好MapReduce作业的参数后,我们可以使用hadoop命令来提交作业。具体来说,我们可以使用以下命令来提交MapReduce作业:
hadoop jar /path/to/your/jarfile.jar com.example.Driver input output
  • 其中,/path/to/your/jarfile.jar是jar包的路径,com.example.Driver是Driver类的完整类名,input是输入路径,output是输出路径。

🍀🍁运行MapReduce程序

在Hadoop集群中,使用hadoop命令来运行MapReduce程序。具体来说,我们需要指定MapReduce作业的输入路径、输出路径、Mapper类、Reducer类等参数,然后提交作业。在作业提交后,Hadoop集群会自动分配计算资源,启动MapReduce作业,并将作业的执行进度和结果输出到控制台或日志文件中。

🍀🍁使用hadoop命令来提交MapReduce作业,命令格式如下:
hadoop jar <JAR文件路径> <主类名> <输入路径> <输出路径>

 
$ hadoop jar myMapReduce.jar <input_path> <output_path>
  • 其中,JAR文件路径是指上传到Hadoop集群中的JAR文件的路径;主类名是指MapReduce程序中的主类名;输入路径是指输入数据的路径;输出路径是指输出结果的路径。

执行hadoop命令后,Hadoop会自动启动MapReduce作业,并将作业分配给集群中的节点进行处理。

在作业完成后,可以使用hadoop fs命令来查看输出结果,命令格式如下:

hadoop fs -cat <输出路径>
  • 其中,输出路径是指MapReduce作业的输出路径。

例如,假设我们已经将MapReduce程序打包成Test.jar,上传到Hadoop集群/home/hadoop/test/目录下,作业配置文件为test.xml,输入路径为/home/hadoop/input/,输出路径为/home/hadoop/output/,则运行命令应如下:

 

hadoop jar /home/hadoop/test/Test.jar com.test.TestJob /home/hadoop/test/test.xml /home/hadoop/input/ /home/hadoop/output/


 

🍀🍁监控MapReduce作业

在MapReduce作业运行过程中,我们可以使用Hadoop集群提供的监控工具来监控作业的执行进度和状态,例如使用hadoop job命令来查看作业的状态和日志信息,使用Hadoop Web UI来查看作业的进度和统计信息等。

🍀🍁要监控MapReduce作业,可以通过配置Hadoop的日志和监控系统来实现。以下是一些常用的监控配置:
  1.  配置Hadoop日志:Hadoop会记录作业的运行日志,包括作业的启动、运行和完成情况。可以通过修改Hadoop的日志配置文件来控制日志的输出级别和格式。日志配置文件位于Hadoop的conf目录下,文件名为log4j.properties。
  2. 配置Hadoop Metrics:Hadoop Metrics是Hadoop的监控系统,可以用来监控Hadoop集群的运行情况。可以通过修改Hadoop的Metrics配置文件来控制Metrics的输出级别和格式。Metrics配置文件位于Hadoop的conf目录下,文件名为hadoop-metrics.properties。
  3. 使用Hadoop Job History Server:Hadoop Job History Server是Hadoop的作业历史记录服务器,可以用来查看作业的历史记录和统计信息。可以通过启动Job History Server来记录作业的历史记录。启动Job History Server的命令为:
mapred historyserver

使用Hadoop Web UI:Hadoop Web UI是Hadoop的Web界面,可以用来查看集群的运行情况和作业的状态。可以通过访问Hadoop Web UI来查看作业的状态和统计信息。Hadoop Web UI的地址为http://<Hadoop集群的主节点>:8088。 

通过上述步骤,我们可以将MapReduce程序部署到Hadoop集群中,并使用Hadoop集群提供的计算资源来运行程序,从而实现对大规模数据集的处理和分析。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
WordCount是MapReduce中最基本的程序之一,它用于计算文本中每个单词的出现次数。下面是WordCount的Java代码: ```java import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; 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.output.FileOutputFormat; public class WordCount { public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable>{ private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(Object key, Text value, Context context) throws IOException, InterruptedException { StringTokenizer itr = new StringTokenizer(value.toString()); while (itr.hasMoreTokens()) { word.set(itr.nextToken()); 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 { Configuration conf = new Configuration(); Job job = Job.getInstance(conf, "word count"); 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); } } ``` 这个程序的输入是一个文本文件,输出是每个单词出现的次数。在运行之前,你需要安装Hadoop并将输入文件放入HDFS。运行MapReduce程序的命令如下: ``` hadoop jar WordCount.jar WordCount /input /output ``` 其中,WordCount.jar是你打包好的Java程序,input是输入文件的路径,output是输出目录的路径。执行这个命令后,MapReduce作业就会在Hadoop集群上运行

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是汤圆丫

怎么 给1分?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值