使用 Spark 和 IBM Cloud Object Storage 更快地分析数据(1)
 
- UID
- 1066743
|

使用 Spark 和 IBM Cloud Object Storage 更快地分析数据(1)
各行各业都在以惊人的速度生成数据,包括测序系统生成的基因组数据、具有超高清格式的媒体和娱乐数据,以及众多传感器生成的物联网 (IoT) 数据。IBM Cloud Object Storage(IBM COS,以前称为 Cleversafe)技术为这些应用提供了高容量、经济有效的存储。但仅存储数据还不够;还需要从数据中获取价值;可以使用领先的数据分析处理引擎 Apache Spark 来实现此目的。Spark 的运行速度是 Hadoop MapReduce 的 100 倍,而且它还结合了 SQL、流处理和复杂情况分析。
本文将介绍如何让 Spark 能对 IBM COS 中存储的数据进行分析。我们将介绍如何使用 Stocator 和 OpenStack Keystone,前者是一个用作驱动程序的开源软件,后者提供了身份验证功能。Stocator 利用了对象存储语义,而且与以前专为处理文件系统而设计的 Spark 存储连接器相比,Stocator 显著提高了性能。Stocator 采用 JOSS(一个开源 Java 客户端)生成 HTTP REST 命令,这些命令通过 OpenStack Swift 接口访问 IBM COS。
下图演示了 IBM COS、Stocator 与 OpenStack Keystone 之间的三角关系。
1
安装和配置 Spark
下载 。 网站提供了构建、安装和配置 Spark 的操作说明。依据您的设置,可以将 Spark 配置为一台独立机器,或者在集群上使用 YARN、Mesos 或 Spark 的独立集群管理器。在我们的示例中,我们结合使用了 IBM COS 和 Spark 2.0.1。
2
安装和配置 IBM COS
安装 Cloud Object Storage (COS)。在我们的示例中,我们为 IBM COS 设置了 Keystone 身份验证。
3
安装和配置 Stocator
为了从 Spark 访问 IBM COS,我们使用了开源驱动程序软件 Stocator。Stocator 是 Spark 的高性能的对象存储连接器,它利用了对象存储语义。它提供了 OpenStack Swift API 的完整驱动程序,可轻松地扩展它来支持其他对象存储接口。我们利用了 Stocator 通过其 Swift API 将 Spark 与 IBM COS 相连的能力。
要使用 Stocator,请完成以下步骤。
- 从 下载源代码,使用 git 复制或克隆它。
- 从 Stocator 的目录输入 mvn clean package –Pall-in-one 来构建 Stocator。
要将 Spark 配置为利用 Stocator 访问 IBM COS,需要定义 Stocator 及其设置。有两种配置 Stocator 的方法
向配置文件添加参数要创建 core-site.xml 配置文件,可执行以下操作之一:
使用 Stocator/conf 目录中的 core-site.xml.template 文件在 Configuration Files 部分,通过输入以下命令,访问用于配置基于 Keystone 的身份验证的 core-site.xml 示例:
清单 1. 访问 core-site.xml.template 文件1
2
| ofer@beginnings:~$ cd ~/stocator/conf
ofer@beginnings:~/stocator/conf$ cp core-site.xml.template ~/spark-2.0.1/conf/core-site.xml
|
使用 Keystone Version 2 配置文件对于 Keystone Version 2,可以使用这个 core-site.xml 并按清单下方的说明进行替换。
清单 2. Keystone Version 2 配置文件1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| <configuration>
<property>
<name>fs.swift2d.impl</name>
<value>com.ibm.stocator.fs.ObjectStoreFileSystem</value>
</property>
<!-- Keystone based authentication -->
<property>
<name>fs.swift2d.service.spark.auth.url</name>
<value>http://your.keystone.server.com:5000/v2.0/tokens</value>
</property>
<property>
<name>fs.swift2d.service.spark.public</name>
<value>true</value>
</property>
<property>
<name>fs.swift2d.service.spark.tenant</name>
<value>service</value>
</property>
<property>
<name>fs.swift2d.service.spark.password</name>
<value>passw0rd</value>
</property>
<property>
<name>fs.swift2d.service.spark.username</name>
<value>swift</value>
</property>
<property>
<name>fs.swift2d.service.spark.auth.method</name>
<value>keystone</value>
</property>
<property>
<name>fs.swift2d.service.spark.region</name>
<value>IBMCOS</value>
</property>
</configuration>
|
- 将 your.keystone.server.com 替换为 Keystone 服务器的真实地址。
- 将所有身份验证凭证(tenant、username 和 password)替换为您的对象存储的有效凭证。
- 使用全球 Keystone 时,需要根据为 IBM COS 访问定义的 Keystone 地区来定义 region 属性。
|
|
|
|
|
|