`
zhouchaofei2010
  • 浏览: 1104148 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

hadoop jar 命令

 
阅读更多

http://chqz1987.blog.163.com/blog/static/514383112013261505866/

假如执行下面命令:
cd /home/hadoop/  && hadoop jar ./test/wordcount/wordcount.jar org.codetree.hadoop.v1.WordCount /test/chqz/input /test/chqz/output
那么这个命令内部到底做了些什么呢?

1、首先,在 ${HADOOP_HOME}/bin/hadoop 脚本中我们可以看到有如下代码:


由于这里$starting_secure_dn=false的(这里可以参见hadoop脚本),所以最终会执行下面这行代码:

从上面shell脚本中,我们可以明确看出当执行hadoop jar命令时,实际上执行了org.apache.hadoop.util.RunJar类。
下面#run it这一行代码实质上是为执行这个类的main方法设置所需的类路径classpath。

2、继续研究org.apache.hadoop.util.RunJar来内发生的事情:





因此,命令hadoop jar ./test/wordcount/wordcount.jar org.codetree.hadoop.v1.WordCount /test/chqz/input /test/chqz/output的各段的含义:
(1) hadoop:${HADOOP_HOME}/bin下的shell脚本名
(2) jar:hadoop脚本需要的command参数
(3) ./test/wordcount/wordcount.jar:要执行的jar包在本地文件系统中的完整路径,参递给RunJar类
(4) org.codetree.hadoop.v1.WordCount:main方法所在的类,参递给RunJar类
(5) /test/chqz/input传递给WordCount类,作为DFS文件系统的路径,指示输入数据来源。
(6) /test/chqz/output:传递给WordCount类,作为DFS文件系统的路径,指示输出数据路径。

3、org.codetree.hadoop.v1.WordCount类代码:

Source Code

 

  WordCount.java
1. package org.myorg;
2.  
3. import java.io.IOException;
4. import java.util.*;
5.  
6. import org.apache.hadoop.fs.Path;
7. import org.apache.hadoop.conf.*;
8. import org.apache.hadoop.io.*;
9. import org.apache.hadoop.mapred.*;
10. import org.apache.hadoop.util.*;
11.  
12. public class WordCount {
13.  
14.    public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> {
15.      private final static IntWritable one = new IntWritable(1);
16.      private Text word = new Text();
17.  
18.      public void map(LongWritable key, Text value, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException {
19.        String line = value.toString();
20.        StringTokenizer tokenizer = new StringTokenizer(line);
21.        while (tokenizer.hasMoreTokens()) {
22.          word.set(tokenizer.nextToken());
23.          output.collect(word, one);
24.        }
25.      }
26.    }
27.  
28.    public static class Reduce extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable> {
29.      public void reduce(Text key, Iterator<IntWritable> values, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException {
30.        int sum = 0;
31.        while (values.hasNext()) {
32.          sum += values.next().get();
33.        }
34.        output.collect(key, new IntWritable(sum));
35.      }
36.    }
37.  
38.    public static void main(String[] args) throws Exception {
39.      JobConf conf = new JobConf(WordCount.class);
40.      conf.setJobName("wordcount");
41.  
42.      conf.setOutputKeyClass(Text.class);
43.      conf.setOutputValueClass(IntWritable.class);
44.  
45.      conf.setMapperClass(Map.class);
46.      conf.setCombinerClass(Reduce.class);
47.      conf.setReducerClass(Reduce.class);
48.  
49.      conf.setInputFormat(TextInputFormat.class);
50.      conf.setOutputFormat(TextOutputFormat.class);
51.  
52.      FileInputFormat.setInputPaths(conf, new Path(args[0]));
53.      FileOutputFormat.setOutputPath(conf, new Path(args[1]));
54.  
55.      JobClient.runJob(conf);
57.    }
58. }
59.
分享到:
评论

相关推荐

    运行hadoop jar

    4. **运行hadoop jar命令**:使用命令行输入`hadoop jar &lt;jar_file&gt; &lt;main_class&gt; [args...]`,其中`&lt;jar_file&gt;`是你创建的JAR文件,`&lt;main_class&gt;`是你的程序的主类,`[args...]`是传递给主类的参数。例如,如果你...

    hadoop jar包.rar

    Hadoop是一款开源的大数据处理框架,由Apache基金会开发,它主要设计用于分布式...用户在使用时,通常需要通过`hadoop jar [jar_file] [main_class] [args...]`命令来执行包含在jar包中的主类,从而启动Hadoop作业。

    hadoop jar合集

    在实际使用中,用户通常会通过`hadoop jar`命令来执行自定义的MapReduce程序,这时会指定包含主类的JAR文件,而Hadoop会自动加载合集中其他的依赖库,确保程序的正常运行。例如,下面的命令可以用来运行一个位于my...

    hadoop-jar.zip

    开发者通常会将编写好的Java程序与依赖的Hadoop库一起打包成jar文件,然后通过`hadoop jar`命令在Hadoop集群上运行这个jar文件,执行MapReduce任务。 例如,以下是一个简单的`hadoop jar`命令执行流程: ```bash ...

    win10下编译过的hadoop jar包--hadoop-2.7.2.zip

    1. `bin`: 包含Hadoop的可执行脚本,如启动和停止Hadoop服务的命令。 2. `sbin`: 存放管理脚本,用于管理Hadoop集群。 3. `lib`: Hadoop的库文件,包含了运行Hadoop所需的各种依赖。 4. `etc/hadoop`: 配置文件目录...

    基于Hadoop的分布式系统依赖的所有JAR包

    7. **开发与调试**:对于开发和调试Hadoop应用,使用`hadoop jar`命令可以提交MapReduce作业到集群上执行。例如,`hadoop jar myjob.jar com.example.MyMainClass`将运行包含在`myjob.jar`中的`MyMainClass`。 总之...

    haddoop-1.2.1.tar.gz hadoop基础学习之hadoop jar

    在本文中,我们将深入探讨Hadoop 1.2.1版本的基本概念,特别是与使用`hadoop jar`命令相关的知识。Hadoop是一个开源框架,它允许分布式存储和处理大规模数据集,是大数据处理领域的基石。1.2.1是Hadoop的一个早期...

    hadoop wordcount 打包部署

    使用Hadoop提供的jar命令来启动WordCount程序。命令格式如下: ``` hadoop jar &lt;jar文件路径&gt; &lt;主类名称&gt; &lt;输入文件路径&gt; &lt;输出文件路径&gt; ``` 例如: ``` hadoop jar /usr/hadoop/Myhadoop.jar ...

    hadoop shell命令

    - **`hadoop jar myjob.jar myclass /input /output`**:运行名为`myjob.jar`的Jar文件,其中包含名为`myclass`的主类,输入路径为`/input`,输出路径为`/output`。 #### 3. **hadoop distcp** `distcp`命令用于在...

    Hadoop常用命令.pdf

    &gt; hadoop jar test-1.0-SNAPSHOT-jar-with-dependencies.jar /user/test/input /user/test/out 2.运行Jar包指定类中的主函数 &gt; java -cp test-1.0-SNAPSHOT-jar-with-dependencies.jar com.test.main.MainTest

    win7下编译过的hadoop jar包--hadoop-2.7.2.zip

    10. **运行MapReduce程序**:将Java MapReduce程序打包成jar文件,使用`hadoop jar`命令提交作业到Hadoop集群执行。 在Windows 7环境下运行Hadoop可能遇到的问题包括权限问题、路径分隔符差异、文件系统不兼容等。...

    Hadoop常用命令

    ### Hadoop常用命令详解 Hadoop是一款开源软件框架,主要用于分布式存储与处理大规模数据集。在实际使用过程中,掌握一些常用的Hadoop命令对于管理和维护Hadoop集群至关重要。下面将详细介绍这些命令及其用法。 ##...

    hadoop常用命令

    `hadoop jar`用于运行用户编写的MapReduce程序,例如`hadoop jar your-jar-file.jar your.MainClass input output`,这里`your-jar-file.jar`是你的JAR文件,`your.MainClass`是主类名,`input`和`output`分别是输入...

    win10下编译过的hadoop2.7.2 jar包

    执行`mvn clean package`命令,就可以生成编译后的jar文件。 压缩包中的“hadoop-2.7.2”文件夹可能包含了以下内容: 1. `bin`: 包含Hadoop的可执行脚本,如`hadoop`, `hdfs`, `yarn`, `mapred`等。 2. `conf`: ...

    hadoop-2.5.2.tar.gz

    MapReduce作业通过hadoop jar命令提交到集群,Hadoop会自动处理数据分布、任务调度和容错。 此外,Hadoop 2.5.2还引入了安全特性,如Kerberos认证,以增强集群的安全性。同时,这个版本优化了数据本地性和网络通信...

    2.9.2_wintuils_hadoop.dll.zip

    使用hadoop jar命令来执行自定义的Java程序。 需要注意的是,虽然Hadoop官方支持Windows,但社区普遍推荐在Linux环境下运行Hadoop,因为Linux的性能更优且稳定性更高。不过,对于开发和测试环境,Windows上的Hadoop...

    hadoop练手数据

    3. **运行Job**:编译并打包MapReduce程序后,使用hadoop jar命令提交作业到Hadoop集群上运行。 4. **监控和调试**:通过Hadoop的Web界面或者命令行工具查看作业的进度和状态,分析Resultlog0406.txt中的数据,根据...

    hadoop命令手册

    Hadoop 命令手册 Hadoop 命令是 Hadoop 分布式计算系统的核心组件之一,负责执行各种作业和管理任务。Hadoop 命令手册提供了一个详细的命令参考指南,帮助用户熟悉 Hadoop 命令,让云计算更上一步。 Hadoop 命令的...

    Hadoop从初级到资深的必知必会35问

    在运行jar包中的Hadoop程序时,可以使用hadoop jar命令直接运行,但需要注意的是,MR打包运行与普通的Java程序运行存在差异,需要特别指定jar包的主类,并在代码中设置相应的属性。此外,HDFS提供了一套shell命令,...

Global site tag (gtag.js) - Google Analytics