使用Amazon S3运行Apache Flink

时间:2015-10-06 00:11:08

标签: hadoop amazon-s3 apache-flink

是否有人成功使用Apache Flink 0.9来处理存储在AWS S3上的数据?我发现他们正在使用自己的S3FileSystem而不是Hadoop中的一个...而且看起来它不起作用。 我把以下路径s3://bucket.s3.amazonaws.com/folder 它失败了,但有以下例外:

  

java.io.IOException:无法建立与Amazon S3的连接:   com.amazonaws.services.s3.model.AmazonS3Exception:请求   我们计算的签名与您提供的签名不符。   检查您的密钥和签名方法。 (服务:Amazon S3;状态代码:   403;

2 个答案:

答案 0 :(得分:9)

2016年5月更新:Flink文档现在有一页how to use Flink with AWS

此问题已在Flink用户邮件列表中提出,我已在那里回答:http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/Processing-S3-data-with-Apache-Flink-td3046.html

TL; DR:

Flink计划

public class S3FileSystem {
   public static void main(String[] args) throws Exception {
      ExecutionEnvironment ee = ExecutionEnvironment.createLocalEnvironment();
      DataSet<String> myLines = ee.readTextFile("s3n://my-bucket-name/some-test-file.xml");
      myLines.print();
   }
}

将以下内容添加到 core-site.xml ,并将其提供给Flink:

<property>
    <name>fs.s3n.awsAccessKeyId</name>
    <value>putKeyHere</value>
</property>

<property>
    <name>fs.s3n.awsSecretAccessKey</name>
    <value>putSecretHere</value>
</property>
<property>
    <name>fs.s3n.impl</name>
    <value>org.apache.hadoop.fs.s3native.NativeS3FileSystem</value>
</property>

答案 1 :(得分:-1)

您可以从CloudFormation模板的输出部分中指定的S3存储桶中检索工件。 即,在Flink运行时启动并运行后,可以将出租车流处理器程序提交给Flink运行时,以开始对Amazon Kinesis流中的行程事件进行实时分析。

$ aws s3 cp s3://«artifact-bucket»/artifacts/flink-taxi-stream-processor-1.0.jar .
$ flink run -p 8 flink-taxi-stream-processor-1.0.jar --region «AWS region» --stream «Kinesis stream name» --es-endpoint https://«Elasticsearch endpoint»

以上两个命令都使用Amazon的S3作为源,您必须相应地指定工件名称。

注意:您可以按照以下链接使用EMR和S3存储桶创建管道。

https://aws.amazon.com/blogs/big-data/build-a-real-time-stream-processing-pipeline-with-apache-flink-on-aws/