Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 将文件从s3://复制到本地文件系统_Hadoop_Amazon Web Services_Amazon S3_Apache Pig_Hdfs - Fatal编程技术网

Hadoop 将文件从s3://复制到本地文件系统

Hadoop 将文件从s3://复制到本地文件系统,hadoop,amazon-web-services,amazon-s3,apache-pig,hdfs,Hadoop,Amazon Web Services,Amazon S3,Apache Pig,Hdfs,我是aws的新手。我创建了一个集群,并通过ssh连接到主节点。当我试图将文件从s3://我的bucket name/复制到本地file://home/hadoop pig中的文件夹使用: cp s3://my-bucket-name/path/to/file file://home/hadoop 我得到一个错误: 2013-06-08 18:59:00267[main]错误org.apache.pig.tools.grunt.grunt -错误29 99:意外的内部错误。AWS访问密钥ID和机

我是aws的新手。我创建了一个集群,并通过ssh连接到主节点。当我试图将文件从s3://我的bucket name/复制到本地file://home/hadoop pig中的文件夹使用:

cp s3://my-bucket-name/path/to/file file://home/hadoop
我得到一个错误:

2013-06-08 18:59:00267[main]错误org.apache.pig.tools.grunt.grunt -错误29 99:意外的内部错误。AWS访问密钥ID和机密访问密钥必须指定为用户名或密码 (分别)的S3URL,或通过设置fs.s3.awsAccessKeyId或 fs.s3.awsSecretAccessKey属性(分别)

我甚至不能把它放进我的s3桶里。我设置了AWS_ACCESS_密钥和AWS_SECRET_密钥,但未成功。我也找不到pig的配置文件来设置适当的字段

需要帮忙吗

编辑: 我尝试使用完整的s3n://uri在pig中加载文件

grunt> raw_logs = LOAD 's3://XXXXX/input/access_log_1' USING TextLoader a
s (line:chararray);
grunt> illustrate raw_logs;
我得到以下错误:

2013-06-08 19:28:33342[主要]信息 org.apache.pig.backend.hadoop.executionengi ne.HExecutionEngine- 正在连接hadoop文件系统:file:///2013-06-08 19:28:33404 [main]INFO org.apache.pig.backend.hadoop.executionengi ne.mapReduceLayer.MRCompiler-文件连接阈值:100 乐观?fal se 2013-06-08 19:28:33404[主要]信息 org.apache.pig.backend.hadoop.executionengi ne.mapReduceLayer.MultiQueryOptimizer-之前的MR计划大小 优化:1 2013-06-08 19:28:33405[主要]信息 org.apache.pig.backend.hadoop.executionengi ne.mapReduceLayer.MultiQueryOptimizer-MR计划大小 优化:1 2013-06-08 19:28:33405[主要]信息 org.apache.pig.tools.pigstats.ScriptState-pig脚本设置为 添加到作业2013-06-08 19:28:33429[主要]信息 org.apache.pig.backend.hadoop.executionengi ne.mapReduceLayer.JobControlCompiler- 未设置mapred.job.reduce.markreset.buffer.percent t,设置为默认值 0.3 2013-06-08 19:28:33430[main]ERROR org.apache.pig.pen.ExampleGenerator-读取数据时出错。内部的 创建作业配置时出错。java.lang.RuntimeException:内部 创建作业配置时出错。 位于org.apache.pig.pen.ExampleGenerator.getExamples(ExampleGenerator.java :160) 位于org.apache.pig.PigServer.getExamples(PigServer.java:1244) 位于org.apache.pig.tools.grunt.GruntParser.processIllustrate(GruntParser。 爪哇:722) 位于org.apache.pig.tools.pigscript.parser.PigScriptParser.example(PigS scriptparser.java:591) 位于org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(pigscript Parser.java:306) 位于org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.j ava:189) 位于org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.j 艾娃:165) 位于org.apache.pig.tools.grunt.grunt.run(grunt.java:69) 位于org.apache.pig.Main.run(Main.java:500) 位于org.apache.pig.Main.Main(Main.java:114) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl。 爪哇:39) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(delegatingmethodaccess sorImpl.java:25) 位于java.lang.reflect.Method.invoke(Method.java:597) 位于org.apache.hadoop.util.RunJar.main(RunJar.java:187)2013-06-08 19:28:33432[main]ERROR org.apache.pig.tools.grunt.grunt -错误29 97:遇到IOException。异常:在上创建作业配置时发生内部错误。日志文件中的详细信息: /home/hadoop/pig_1370719069857.log


首先,您应该使用s3n协议(除非您使用s3协议将文件存储在s3上)-s3用于块存储(即,类似于hdfs,仅在s3上),s3n用于本机s3文件系统(即,您在那里看到的内容)

您可以使用distcp或来自s3n的简单清管器负载。您可以在hadoop-site.xml中提供在获得的异常中指定的访问和机密(有关更多信息,请参见此处),也可以将它们添加到uri中:

raw_logs = LOAD 's3n://access:secret@XXXXX/input/access_log_1' USING TextLoader AS (line:chararray);

确保你的秘密不包含反斜杠-否则它将无法工作。

我经历了完全相同的错误,最终找到了解决方案。但是,我同时更改了两件事,因此我不确定是否需要这两件事(当然其中一件是)

首先,我确保我的S3数据和我的EMR系统在同一个区域。当我遇到这个问题时,我的数据在美国东部,电子病历在美国西部。我对美国东部(弗吉尼亚州)进行了标准化,又称美国东部-1,又称美国标准,又称美国违约,又称弗吉尼亚州。这可能不是必需的,但它并没有造成伤害

第二,当我遇到错误时,我按照其中一个视频中的步骤开始pig,并给它一个“-x local”选项。事实证明“-x local”似乎保证阻止对s3的访问(见下文)

解决方案是无参数启动清管器。

我希望这有帮助

吉尔


hadoop@domU-12-31-39-09-24-66:~$pig-x本地
2013-07-03 00:27:15321[main]INFO org.apache.pig.main-apache pig版本0.11.1-amzn(rexported)编译于2013年6月24日18:37:44
2013-07-03 00:27:15321[main]INFO org.apache.pig.main-将错误消息记录到:/home/hadoop/pig1372811235317.log
2013-07-03 00:27:15379[main]INFO org.apache.pig.impl.util.Utils-未找到默认启动文件/home/hadoop/.pigbootup
2013-07-03 00:27:15793[main]INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine-
正在连接hadoop文件系统,地址:file:///
grunt>ls s3://xxxxxx.xx.rawdata
2013-07-03 00:27:23463[main]错误org.apache.pig.tools.grunt.grunt-错误2999:意外内部错误。AWS访问密钥ID和
必须将秘密访问密钥指定为S3URL的用户名或密码(分别),或者通过设置fs.s3.awsAccessKeyId来指定
或fs.s3.awsSecretAccessKey属性(分别)。
日志文件中的详细信息:/home/hadoop/pig1372811235317.log
咕噜声>退出
hadoop@domU-12-31-39-09-24-66:~$pig
2013-07-03 00:28:04769[m
hadoop@domU-12-31-39-09-24-66:~$ pig -x local
2013-07-03 00:27:15,321 [main] INFO  org.apache.pig.Main - Apache Pig version 0.11.1-amzn (rexported) compiled Jun 24 2013, 18:37:44
2013-07-03 00:27:15,321 [main] INFO  org.apache.pig.Main - Logging error messages to: /home/hadoop/pig_1372811235317.log
2013-07-03 00:27:15,379 [main] INFO  org.apache.pig.impl.util.Utils - Default bootup file /home/hadoop/.pigbootup not found
2013-07-03 00:27:15,793 [main] INFO  org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - 
Connecting to hadoop file system at: file:///

grunt>  ls s3://xxxxxx.xx.rawdata
2013-07-03 00:27:23,463 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 2999: Unexpected internal error. AWS Access Key ID and
Secret Access Key must be specified as the username or password (respectively) of a s3 URL, or by setting the fs.s3.awsAccessKeyId
or fs.s3.awsSecretAccessKey properties (respectively).
Details at logfile: /home/hadoop/pig_1372811235317.log

grunt> quit

hadoop@domU-12-31-39-09-24-66:~$ pig
2013-07-03 00:28:04,769 [main] INFO  org.apache.pig.Main - Apache Pig version 0.11.1-amzn (rexported) compiled Jun 24 2013, 18:37:44
2013-07-03 00:28:04,771 [main] INFO  org.apache.pig.Main - Logging error messages to: /home/hadoop/pig_1372811284764.log
2013-07-03 00:28:04,873 [main] INFO  org.apache.pig.impl.util.Utils - Default bootup file /home/hadoop/.pigbootup not found
2013-07-03 00:28:05,639 [main] INFO  org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - 
Connecting to hadoop file system at: hdfs://10.210.43.148:9000
2013-07-03 00:28:08,765 [main] INFO  org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to map-reduce job tracker at: 10.210.43.148:9001

grunt>  ls s3://xxxxxx.xx.rawdata
s3://xxxxxx.xx.rawdata/rawdata<r 1>  19813
s3://xxxxxx.xx.rawdata/rawdata.csv<r 1> 19813
grunt>
cp s3://my-bucket-name/path/to/file file://home/hadoop
s3cmd get s3://some-s3-bucket/some-s3-folder/local_file.ext ~/local_dir/ 
   s3cmd get s3://BUCKET/OBJECT LOCAL_FILE
          Get file from bucket