Spark Streaming 检查点到 amazon s3

Posted

技术标签:

【中文标题】Spark Streaming 检查点到 amazon s3【英文标题】:Spark Streaming checkpoint to amazon s3 【发布时间】:2015-11-02 10:54:14 【问题描述】:

我正在尝试将 rdd 检查点到非 hdfs 系统。从DSE document 看来,无法使用 cassandra 文件系统。所以我打算使用 amazon s3 。但我找不到任何使用 AWS 的好例子。

问题

如何使用 Amazon S3 作为检查点目录?调用就够了 ssc.checkpoint(amazons3url) ? 除了 hadoop 文件系统之外,是否还有其他可靠的数据存储用于检查点?

【问题讨论】:

【参考方案1】:

来自link中的答案

解决方案 1:

export AWS_ACCESS_KEY_ID=<your access>
export AWS_SECRET_ACCESS_KEY=<your secret>
ssc.checkpoint(checkpointDirectory)

将检查点目录设置为 S3 URL - s3n://spark-streaming/checkpoint

然后使用 spark submit 启动您的 spark 应用程序。 这适用于spark 1.4.2

解决方案2:

  val hadoopConf: Configuration = new Configuration()
  hadoopConf.set("fs.s3.impl", "org.apache.hadoop.fs.s3native.NativeS3FileSystem")
  hadoopConf.set("fs.s3n.awsAccessKeyId", "id-1")
  hadoopConf.set("fs.s3n.awsSecretAccessKey", "secret-key")

  StreamingContext.getOrCreate(checkPointDir, () => 
        createStreamingContext(checkPointDir, config)
      , hadoopConf)

【讨论】:

【参考方案2】:

要检查点到 S3,您可以将以下符号传递给 StreamingContext def checkpoint(directory: String): Unit 方法

s3n://<aws-access-key>:<aws-secret-key>@<s3-bucket>/<prefix ...>

Spark Documentation 中未列出用于检查点的另一个可靠文件系统是Taychyon

【讨论】:

感谢您的帮助。密钥中通常有一个斜线。所以这是行不通的。

以上是关于Spark Streaming 检查点到 amazon s3的主要内容,如果未能解决你的问题,请参考以下文章

Spark Streaming - 检查点问题

失败后读取 Spark Streaming 检查点

Spark Structured Streaming - 此查询不支持从检查点位置恢复

驱动程序重新启动后 Spark Streaming 检查点不起作用

如何将 Spark Streaming 检查点位置存储到 S3 中?

Spark Structured Streaming - 由于增加输入源的数量,检查点中的 AssertionError