gpt4 book ai didi

hadoop - 使用 Amazon S3 存储桶输入和输出在 Amazon EMR 上运行自定义 JAR 时出现错误(文件系统错误)

转载 作者:可可西里 更新时间:2023-11-01 17:01:41 25 4
gpt4 key购买 nike

我正在尝试使用自定义 JAR 的输入和输出参数作为 S3 存储桶在 Amazon EMR 集群上运行自定义 JAR (-input s3n://s3_bucket_name/ldas/in -output s3n://s3_bucket_name/ldas/out)

当集群运行此自定义 JAR 时,会发生以下异常。

Exception in thread "main" java.lang.IllegalArgumentException: **Wrong FS: s3n://s3_bucket_name/ldas/out, expected: hdfs://10.214.245.187:9000**
at org.apache.hadoop.fs.FileSystem.checkPath(FileSystem.java:644)
at org.apache.hadoop.hdfs.DistributedFileSystem.getPathName(DistributedFileSystem.java:181)
at org.apache.hadoop.hdfs.DistributedFileSystem.access$000(DistributedFileSystem.java:92)
at org.apache.hadoop.hdfs.DistributedFileSystem$11.doCall(DistributedFileSystem.java:585)
at org.apache.hadoop.hdfs.DistributedFileSystem$11.doCall(DistributedFileSystem.java:581)
at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
at org.apache.hadoop.hdfs.DistributedFileSystem.delete(DistributedFileSystem.java:581)
at cc.mrlda.ParseCorpus.run(ParseCorpus.java:101)
at cc.mrlda.ParseCorpus.run(ParseCorpus.java:77)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at cc.mrlda.ParseCorpus.main(ParseCorpus.java:727)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.util.RunJar.main(RunJar.java:212)

如何纠正这个错误?如何使用 s3n bucket 作为 Amazon EMR 中的文件系统?另外,我认为将默认文件系统更改为 s3 存储桶会很好,但我不确定该怎么做。

最佳答案

我建议检查您的 jar 是否使用与此处所示的处理参数相同的方法:http://java.dzone.com/articles/running-elastic-mapreduce-job

具体而言,

FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));

或者,我已成功添加自定义脚本运行器步骤以将文件从 s3 复制到 hadoop,反之亦然。特别是如果您连续执行几个流式传输步骤,将内容保存在 hdfs 上会很有帮助。你应该能够用类似的东西制作一个简单的 bash 脚本

hadoop fs -cp s3://s3_bucket_name/ldas/in hdfs:///ldas/in

hadoop fs -cp hdfs:///ldas/out s3://s3_bucket_name/ldas/out

然后将流式传输步骤设置为在 hdfs:///ldas/in 和 hdfs:///ldas/out 之间运行

关于hadoop - 使用 Amazon S3 存储桶输入和输出在 Amazon EMR 上运行自定义 JAR 时出现错误(文件系统错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23334463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com