从 Spark 访问 OpenStack Swift
Spark 对 Hadoop InputFormat 的支持允许它使用与 Hadoop 中相同的 URI 格式来处理 OpenStack Swift 中的数据。您可以通过 swift://container.PROVIDER/path
形式的 URI 指定 Swift 中的路径作为输入。您还需要通过 core-site.xml
或 SparkContext.hadoopConfiguration
设置您的 Swift 安全凭据。当前的 Swift 驱动程序要求 Swift 使用 Keystone 身份验证方法,或其特定于 Rackspace 的前身。
配置 Swift 以获得更好的数据局部性
虽然不是强制性的,但建议使用 list_endpoints
配置 Swift 的代理服务器以获得更好的数据局部性。更多信息 在此处提供。
依赖项
Spark 应用程序应包含 hadoop-openstack
依赖项,这可以通过为使用的特定 Spark 版本包含 hadoop-cloud
模块来完成。例如,对于 Maven 支持,将以下内容添加到 pom.xml
文件中
配置参数
创建 core-site.xml
并将其放置在 Spark 的 conf
目录中。应该配置的主要参数类别是 Keystone 所需的身份验证参数。
下表包含 Keystone 必需参数的列表。PROVIDER
可以是任何(字母数字)名称。
属性名称 | 含义 | 必需 |
---|---|---|
fs.swift.service.PROVIDER.auth.url |
Keystone 身份验证 URL | 强制性 |
fs.swift.service.PROVIDER.auth.endpoint.prefix |
Keystone 端点前缀 | 可选 |
fs.swift.service.PROVIDER.tenant |
租户 | 强制性 |
fs.swift.service.PROVIDER.username |
用户名 | 强制性 |
fs.swift.service.PROVIDER.password |
密码 | 强制性 |
fs.swift.service.PROVIDER.http.port |
HTTP 端口 | 强制性 |
fs.swift.service.PROVIDER.region |
Keystone 区域 | 强制性 |
fs.swift.service.PROVIDER.public |
指示是否使用公共(非云)或私有(在云中;无传输费用)端点 | 强制性 |
例如,假设 PROVIDER=SparkTest
并且 Keystone 包含为租户 test
定义的具有密码 testing
的用户 tester
。然后 core-site.xml
应包含
请注意,fs.swift.service.PROVIDER.tenant
、fs.swift.service.PROVIDER.username
、fs.swift.service.PROVIDER.password
包含敏感信息,将它们保存在 core-site.xml
中并不总是好的方法。我们建议在通过 spark-shell
运行 Spark 时,将这些参数保存在 core-site.xml
中以进行测试。对于作业提交,应通过 sparkContext.hadoopConfiguration
提供它们。