与 HDFS 集成

了解如何通过 DC/OS Apache Spark 配置 HDFS

HDFS

如果计划使用 DC/OS Apache Spark 从 HDFS 读取和写入,有两个 Hadoop 配置文件应包含在 Spark的类路径中:

  • hdfs-site.xml,为 HDFS 客户端提供默认行为。
  • core-site.xml,设置默认文件系统名称。您可以在安装时或每个作业中指定这些文件的位置。

Spark 安装

在 Spark 服务配置中,设置 hdfs.config-url 为为您的 hdfs-site.xmlcore-site.xml 服务的 URL,如 以下示例 中那样,其中 http://mydomain.com/hdfs-config/hdfs-site.xmlhttp://mydomain.com/hdfs-config/core-site.xml 是有效的 URL:

{
  "hdfs": {
    "config-url": "http://mydomain.com/hdfs-config"
  }
}

这也可通过 Web 界面进行。如果您正在使用 Mesosphere 的 HDFS 默认安装,这可能是 http://api.hdfs.marathon.l4lb.thisdcos.directory/v1/endpoints

每个作业添加 HDFS 配置文件

为作业手动添加配置文件,使用 --conf spark.mesos.uris=<location_of_hdfs-site.xml>,<location_of_core-site.xml>。这会将文件下载到驱动程序 Spark 应用程序的沙盒中,DC/OS Apache Spark 将自动将这些文件加载到正确的位置。

注意: 这些文件名称为 hdfs-site.xmlcore-site.xml,这点很重要。

Spark 检查点

为了在使用 Spark 中使用检查点,确保您遵循[此处]说明(https://spark.apache.org/docs/latest/streaming-programming-guide.html#checkpointing) 并使用 HDFS 目录作为检查点目录。

例如:

val checkpointDirectory = "hdfs://hdfs/checkpoint"
val ssc = ...
ssc.checkpoint(checkpointDirectory)

HDFS 目录将在 HDFS 上创建,Spark 流式应用也将处理检查点数据,即使应用程序重启或出现故障。

S3

您可以使用基于环境的密钥对 S3 进行文件读/写,以传递 AWS 凭证。您的凭证必须首先上传到 DC/OS 密钥存储库:

dcos security secrets create <secret_path_for_key_id> -v <AWS_ACCESS_KEY_ID>
dcos security secrets create <secret_path_for_secret_key> -v <AWS_SECRET_ACCESS_KEY> 

然后您的 Spark 作业可直接获得这些凭证:

dcos spark run --submit-args="\
...
--conf spark.mesos.containerizer=mesos  # required for secrets
--conf spark.mesos.driver.secret.names=<secret_path_for_key_id>,<secret_path_for_secret_key>
--conf spark.mesos.driver.secret.envkeys=AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY
...