hadoop 运行wordcount遇见的参数不一致问题

Hadoop WordCount 参数解析
本文探讨了在使用Hadoop运行WordCount程序时如何正确传递输入输出参数,并解释了当jar包未设置主类时可能遇到的问题及解决方法。

已知java的传参方式和C不一样:如,假设fileName.class

java fileName 1 2 3

则程序的argv[0] 为1, argv[1]为2



当在wordcount.java中我把argv[0] 传入input路径,argv[1]传入output路径。

通过jar压缩手段,将.class压缩成wordcount.jar文件,并设置了主类配置。

bin/hadoop jar wordcount.jar /my/ /tmp/output

成功




可是当我直接调用hadoop的example提供的wordcount类时:

将正确的运行方式:

bin/hadoop jar hadoop-examples-1.0.4.jar wordcount /my/ /tmp/output

改为

bin/hadoop jar hadoop-examples-1.0.4.jar /my/ /tmp/output

就出现下面的错误

原因分析,

        因为hadoop-examples-1.0.4.jar没有设置main主类,所以不加wordcount就不知道调用那个class。



hadoop运行wordcount jar包报错时,同的报错情况有同的解决办法: - **运行 `bin/hadoop jar hadoop-*-examples.jar wordcount` 报错**:若报错内容为 `Exception in thread "main" java.io.IOException: Error opening job: hadoop-*-examples.jar ...`,是因为hadoop的版本更新,`hadoop-*-examples.jar` 文件更名为 `hadoop-examples-*.jar`(*代表版本),该jar文件在hadoop的根目录。解决方法是将输入命令改为 `bin/hadoop jar hadoop-examples-*.jar wordcount` [^1]。 - **运行 `hadoop jar word_count_class/wordCountTest.jar wordCountTest /input /output` 报错 `Usage: wordcount <in> <out>`**:Hadoop 1.x和Hadoop 2.x的命令有所同,Hadoop 1.x命令是 `hadoop fs…`,Hadoop 2.x需进入Hadoop目录,然后命令为 `bin/hdfs dfs …`。此报错可能是输入参数是两个,需确保代码输入参数符合要求 [^2]。 - **运行 `hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /wcinput /wcoutput` 报错 `Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster`**:解决方法是使用 `vim mapred-site.xml` 添加以下内容: ```xml <property> <name>yarn.app.mapreduce.am.env</name> <value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3</value> </property> <property> <name>mapreduce.map.env</name> <value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3</value> </property> <property> <name>mapreduce.reduce.env</name> <value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3</value> </property> ``` [^3] - **hadoop本地运行wordcount报错**:需检查配置文件 `yarn-site.xml`,确保有如下配置: ```xml <!-- 指定计算模型在yarn上 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> ``` [^4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值