运行hadoop jar

1.
拷贝文件,注意端口号
hadoop jar first-hadoop-0.0.1-SNAPSHOT.jar ch03.FileCopyWithProgress Hello.class hdfs://localhost:9000/user/a.txt

hadoop jar first-hadoop-0.0.1-SNAPSHOT.jar ch03.FileCopyWithProgress Hello.class /user/a.txt


2.
运行jar里的Hello
hadoop jar first-hadoop-0.0.1-SNAPSHOT.jar hello.Hello


3.结果

12/04/12 23:59:12 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same.
12/04/12 23:59:12 INFO mapred.FileInputFormat: Total input paths to process : 1
12/04/12 23:59:12 INFO mapred.JobClient: Running job: job_201204122244_0006
12/04/12 23:59:13 INFO mapred.JobClient: map 0% reduce 0%
12/04/12 23:59:28 INFO mapred.JobClient: map 100% reduce 0%
12/04/12 23:59:40 INFO mapred.JobClient: map 100% reduce 100%
12/04/12 23:59:45 INFO mapred.JobClient: Job complete: job_201204122244_0006
12/04/12 23:59:45 INFO mapred.JobClient: Counters: 30
12/04/12 23:59:45 INFO mapred.JobClient: Job Counters
12/04/12 23:59:45 INFO mapred.JobClient: Launched reduce tasks=1
12/04/12 23:59:45 INFO mapred.JobClient: SLOTS_MILLIS_MAPS=18796
12/04/12 23:59:45 INFO mapred.JobClient: Total time spent by all reduces waiting after reserving slots (ms)=0
12/04/12 23:59:45 INFO mapred.JobClient: Total time spent by all maps waiting after reserving slots (ms)=0
12/04/12 23:59:45 INFO mapred.JobClient: Launched map tasks=2
12/04/12 23:59:45 INFO mapred.JobClient: Data-local map tasks=2
12/04/12 23:59:45 INFO mapred.JobClient: SLOTS_MILLIS_REDUCES=10227
12/04/12 23:59:45 INFO mapred.JobClient: File Input Format Counters
12/04/12 23:59:45 INFO mapred.JobClient: Bytes Read=1996
12/04/12 23:59:45 INFO mapred.JobClient: File Output Format Counters
12/04/12 23:59:45 INFO mapred.JobClient: Bytes Written=506
12/04/12 23:59:45 INFO mapred.JobClient: FileSystemCounters
12/04/12 23:59:45 INFO mapred.JobClient: FILE_BYTES_READ=696
12/04/12 23:59:45 INFO mapred.JobClient: HDFS_BYTES_READ=2166
12/04/12 23:59:45 INFO mapred.JobClient: FILE_BYTES_WRITTEN=64709
12/04/12 23:59:45 INFO mapred.JobClient: HDFS_BYTES_WRITTEN=506
12/04/12 23:59:45 INFO mapred.JobClient: Map-Reduce Framework
12/04/12 23:59:45 INFO mapred.JobClient: Map output materialized bytes=702
12/04/12 23:59:45 INFO mapred.JobClient: Map input records=23
12/04/12 23:59:45 INFO mapred.JobClient: Reduce shuffle bytes=702
12/04/12 23:59:45 INFO mapred.JobClient: Spilled Records=92
12/04/12 23:59:45 INFO mapred.JobClient: Map output bytes=598
12/04/12 23:59:45 INFO mapred.JobClient: Total committed heap usage (bytes)=337780736
12/04/12 23:59:45 INFO mapred.JobClient: CPU time spent (ms)=1480
12/04/12 23:59:45 INFO mapred.JobClient: Map input bytes=1330
12/04/12 23:59:45 INFO mapred.JobClient: SPLIT_RAW_BYTES=170
12/04/12 23:59:45 INFO mapred.JobClient: Combine input records=0
12/04/12 23:59:45 INFO mapred.JobClient: Reduce input records=46
12/04/12 23:59:45 INFO mapred.JobClient: Reduce input groups=2
12/04/12 23:59:45 INFO mapred.JobClient: Combine output records=0
12/04/12 23:59:45 INFO mapred.JobClient: Physical memory (bytes) snapshot=324440064
12/04/12 23:59:45 INFO mapred.JobClient: Reduce output records=46
12/04/12 23:59:45 INFO mapred.JobClient: Virtual memory (bytes) snapshot=1121619968
12/04/12 23:59:45 INFO mapred.JobClient: Map output records=46


4.获取结果文件
-getmerge <src> <localdst>

拷贝到本地
hadoop fs -getmerge hdfs://localhost:9000/user/c.txt c.txt
hadoop fs -getmerge /user/c.txt c.txt


直接查看
hadoop fs -cat /user/c.txt/part-00000


5.hadoop存储文件目录/tmp/hadoop-root/dfs/data/current
<think>好的,用户遇到了Hadoop WordCount程序运行后找不到输出文件的问题,具体错误是执行hdfs dfs -cat part-r-00000时提示“No such file or directory”。我需要根据已有的引用资料和Hadoop相关知识来逐步分析可能的原因,并提供解决方案。 首先,根据引用[3]和[4],当在HDFS中创建目录时,如果父目录不存在,需要使用-p参数。这可能意味着用户在运行WordCount之前没有正确创建输出目录,或者输出目录路径存在问题。但通常来说,WordCount作业会自动创建输出目录,如果该目录已经存在则会报错。所以这里可能存在两种情况:要么输出目录已经存在导致作业失败,要么作业执行成功但输出路径不正确。 接下来,用户提到的错误是在执行hdfs dfs -cat时出现的,这可能意味着输出文件确实不存在。需要检查几个方面: 1. **作业是否成功执行**:用户需要确认WordCount作业是否真正运行成功。如果作业中途失败,输出目录可能被删除或者未生成结果文件。用户应该检查作业的日志和输出,确认是否有成功完成的提示。 2. **输出路径是否正确**:用户需要确认在运行hadoop jar命令时指定的输出路径是否正确。例如,是否正确使用了HDFS路径而非本地路径。根据引用[2],HDFS操作需要使用hadoop fs或hdfs dfs命令,而本地文件需要用-put上传。如果用户指定的输出路径是本地路径而非HDFS路径,那么结果文件会存储在本地,而不是HDFS中,导致后续的hdfs dfs -cat找不到文件。 3. **输出文件的位置**:即使作业成功,输出文件通常位于指定的输出目录下的part-r-00000。用户需要确保在查看文件时使用了正确的HDFS路径。例如,如果输出目录是/output,那么正确的路径应该是/output/part-r-00000。用户可能直接尝试查看/output目录而没有指定具体的文件,或者路径拼写错误。 4. **输出目录权限问题**:虽然可能性较低,但输出目录的权限问题也可能导致无法读取文件。用户可以使用hdfs dfs -ls /output检查目录和文件的权限,确保有读取权限。 5. **任务是否生成输出**:有时候,如果输入数据为空或者处理过程中出现异常,MapReduce作业可能不会生成任何输出文件。需要确认输入数据是否正确上传到HDFS,并且作业确实处理了数据。 根据引用[1],用户运行的命令是hadoop jar hadoop-mapreduce-examples-3.3.0.jar wordcount /input /output。这里假设/input是存在的,且/output在运行前不存在,否则作业会失败。如果用户重复运行作业而没有删除旧的/output目录,就会导致作业失败,从而没有生成输出文件。这时候需要先删除旧的/output目录,再重新运行作业。 此外,引用[4]提到使用-p参数创建目录,但输出目录通常应由作业自己创建,用户不应手动创建。如果用户手动创建了/output目录,可能不会有问题,但若作业因为目录已存在而失败,用户需要先删除它。 总结可能的原因和解决步骤: 1. **确认作业执行成功**:检查作业日志,确保没有错误信息,作业状态为成功。 2. **检查输出路径是否正确**:确认hdfs dfs -cat命令中的路径是否包含正确的输出目录和文件名,如/output/part-r-00000。 3. **确保输出目录不存在冲突**:如果之前运行过作业,删除旧的/output目录,再重新运行。 4. **验证输入数据的存在**:确认/input目录中有正确的输入文件,使用hdfs dfs -ls /input检查。 5. **检查文件权限**:使用hdfs dfs -ls /output查看文件和目录权限,必要时修改权限。 可能需要用户逐步执行这些检查步骤,以定位具体的问题所在。例如,用户可能没有注意到作业实际上因为输出目录已存在而失败,导致没有生成输出文件。或者可能在指定输出路径时拼写错误,导致文件存储在另一个位置。</think>### Hadoop WordCount输出文件找不到的解决方法 运行Hadoop WordCount程序后出现`No such file or directory`错误,通常由以下原因导致: #### 1. 作业执行失败导致输出目录未生成 - **检查作业日志**:运行MapReduce作业后,需确认控制台输出是否包含`completed successfully`字样。若作业因输入路径错误、资源不足等问题失败,输出目录可能为空或未生成[^1]。 - **解决冲突目录**:若输出目录(如`/output`)已存在,作业会直接报错终止。需先删除旧目录: ```bash hadoop fs -rm -r /output ``` 再重新执行作业: ```bash hadoop jar hadoop-mapreduce-examples-3.3.0.jar wordcount /input /output ``` #### 2. 输出文件路径错误 - **完整路径验证**:输出文件默认路径为`/output/part-r-00000`,需确保使用完整路径查看: ```bash hadoop fs -cat /output/part-r-00000 ``` - **路径大小写敏感**:HDFS路径严格区分大小写,检查路径是否拼写错误(如`/Output`与`/output`不同)[^3]。 #### 3. 输入数据问题 - **输入文件验证**:使用以下命令确认输入文件已正确上传至HDFS: ```bash hadoop fs -ls /input ``` 若输入目录为空,需通过`hadoop fs -put`上传文件[^2]。 #### 4. 文件权限限制 - **检查输出目录权限**: ```bash hadoop fs -ls /output ``` 若权限为`drwx------`,需开放读取权限: ```bash hadoop fs -chmod -R 755 /output ``` #### 5. 输出文件实际存储位置 - **检查本地文件系统**:若误将输出路径指定为本地路径(如`file:///output`),文件会存储在服务器本地而非HDFS中。需使用绝对HDFS路径: ```bash # 错误示例(本地路径) hadoop jar wc.jar wordcount /input file:///output # 正确示例(HDFS路径) hadoop jar wc.jar wordcount /input /output ``` --- ### 分步操作示例 1. **清理旧输出目录**: ```bash hadoop fs -rm -r /output ``` 2. **提交WordCount作业**: ```bash hadoop jar hadoop-mapreduce-examples-3.3.0.jar wordcount /input /output ``` 3. **验证输出文件**: ```bash hadoop fs -ls /output hadoop fs -cat /output/part-r-00000 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值