在管理器/工作进程模式下部署 Apache Spark 集群

Apache Spark 是用于数据分析的开源群集计算框架。Oracle Cloud Infrastructure 为运行和管理基于 Apache Spark 的大数据应用程序提供了一个可靠的高性能平台。

体系结构

此体系结构使用管理器/worker 模型在 Oracle Cloud Infrastructure 上部署 Apache Spark 集群。它具有在计算实例上运行的管理器节点和三个 worker 节点。

下图说明了此引用体系结构。

后面是 spark-oci-png.png 的说明
插图 spark-oci-png.png 的说明

spark-oci-oracle.zip

体系结构包含以下组件:

  • 区域

    Oracle Cloud Infrastructure 区域是一个本地化地理区域,包含一个或多个数据中心,称为可用性域。各区域独立于其他区域,它们之间的巨大距离可以分开(跨越国家或甚至大陆)。

  • 可用性域

    可用性域是区域内的独立独立数据中心。每个可用性域中的物理资源与其他可用性域中的资源隔离,这些资源提供故障容差。可用性域不共享基础结构,例如电源、冷却或内部可用性域网络。因此,一个可用性域出现故障不可能影响该区域中的其他可用性域。

  • 故障域

    故障域是可用性域内的硬件和基础结构分组。每个可用性域都有三个具有独立电源和硬件的故障域。在多个故障域之间分配资源时,应用程序可以容忍故障域中的物理服务器故障、系统维护和电源故障。

  • 虚拟云网络 (VCN) 和子网

    VCN 是在 Oracle Cloud Infrastructure 区域中设置的可自定义、软件定义的网络。与传统的数据中心网络一样,VCN 为您提供了对网络环境的完全控制。VCN 可以有多个非重叠 CIDR 块,您可以在创建 VCN 后更改这些块。您可以将 VCN 细分为子网,子网可以被限定为区域或可用性域。每个子网包含一系列与 VCN 中的其他子网不重叠的地址。您可以在创建后更改子网的大小。子网可以是公共的或专用的。

  • Apache Spark 经理和员工

    托管 Apache Spark 管理器的计算实例附加到区域公共子网。这些工人附属于一个区域私人子网。

  • 块存储

    使用块存储卷,您可以创建、附加、连接和移动存储卷,以及更改卷性能以满足您的存储、性能和应用程序要求。将卷附加并连接到实例后,可以像常规硬盘一样使用该卷。您还可以断开卷的连接并将其附加到另一个实例,而不会丢失数据。

    为此体系结构提供的 Terraform 快速启动模板为每个员工节点提供一个 700-GB 块存储卷。部署体系结构时,可以选择块卷的数量和大小。

    体系结构使用 iSCSI(基于 TCP/IP 的标准)在卷与连接的实例之间进行通信。

  • Internet 网关

    Internet 网关允许 VCN 中的公共子网与公共 Internet 之间的通信。

  • 网络地址转换 (network address translation, NAT) 网关

    NAT 网关允许 VCN 中的专用资源访问互联网上的主机,同时不会向传入的互联网连接公开这些资源。

建议

您的要求可能不同于此处介绍的体系结构。使用以下建议案作为起点。

  • VCN

    创建 VCN 时,根据计划附加到 VCN 子网的资源数确定所需的 CIDR 块数和每个块的大小。使用标准专用 IP 地址空间内的 CIDR 块。

    选择不与您打算设置专用连接的任何其他网络(在 Oracle Cloud Infrastructure、内部部署数据中心或其他云提供商中)重叠的 CIDR 块。

    创建 VCN 后,可以更改、添加和删除其 CIDR 块。

    设计子网时,请考虑流量和安全要求。将特定层或角色中的所有资源附加到可用作安全边界的同一子网。

    使用区域子网。

  • 计算形状

    此体系结构对管理器节点和工作人员节点使用带有 VM.Standard2.1 配置的 Oracle Linux 7 .7 OS 映像。如果您的应用程序需要更多的内存、核心或网络带宽,则可以选择其他配置。

  • Apache Spark 和 Hadoop

    即使 Apache Spark 可以单独运行,在此体系结构中,它也会在 Hadoop 上运行。

    在此体系结构中,单个管理器节点和三个 worker 节点将作为 Apache Spark 集群的一部分部署。

  • 安全性
    • 使用 Oracle Cloud Guard 可以主动监视和维护 Oracle Cloud Infrastructure 中资源的安全性。Cloud Guard 使用检测器配方,您可以定义这些配方来检查资源是否存在安全弱点,以及监视操作员和用户是否有风险活动。检测到任何不正确的配置或不安全的活动时,Cloud Guard 会根据您可以定义的响应方配方建议更正操作并协助执行这些操作。

    • 对于需要最大安全性的资源,Oracle 建议您使用安全区域。安全区域是与基于最佳做法的 Oracle 定义的安全策略配方关联的区间。例如,安全区中的资源不能从公共 Internet 访问,并且必须使用客户管理的密钥对其进行加密。在安全区域中创建和更新资源时,Oracle Cloud Infrastructure 将根据安全区域配方中的策略验证操作,并拒绝违反任何策略的操作。

考虑事项

  • 性能

    请考虑将裸金属形状用于管理器节点和工作进程节点的计算实例。通过在裸金属 Spark 集群上运行 Big Data 应用程序,可以获得显著的性能优势。

  • 可用性

    故障域提供了单个可用性域中的最佳弹性。您可以在多个可用性域中部署执行相同任务的计算实例。此设计通过引入冗余来消除单点故障。

    还可以考虑创建额外的 Spark 管理器节点作为备份以实现高可用性。

  • 可扩展性

    您可以使用实例池和自动缩放功能缩放应用程序。

    • 使用实例池,可以根据同一区域中的相同配置预配和创建多个计算实例。
    • 自动缩放使您可以根据 CPU 占用率等性能度量自动调整实例池中的计算实例数。
  • 存储

    您可以使用 Oracle Cloud Infrastructure Object Storage 存储数据,而不是块存储卷。如果使用对象存储,请创建服务网关,以便从专用子网中的节点进行连接。

    Oracle 还提供了 Hadoop 分布式文件系统 (HDFS) Connector for Oracle Cloud Infrastructure Object Storage。使用 HDFS 连接器,Apache Hadoop 应用程序可以读取和写入对象存储中的数据。

  • 可管理性

    此体系结构使用 Terraform 创建基础结构并部署 Spark 集群。

    相反,您可以使用完全托管服务 Oracle Cloud Infrastructure Data Flow,该服务提供了丰富的用户界面,从而允许开发人员和数据科学家以任何规模的方式创建、编辑和运行 Apache Spark 应用程序,而无需群集、操作团队或高度专业化的 Spark 知识。作为完全托管服务,没有要部署或管理的基础结构。

  • 安全性

    使用策略可以限制谁可以访问 Oracle Cloud Infrastructure 资源以及他们可以执行的操作。

部署

部署此引用体系结构所需的代码在 GitHub 中可用。单击一次即可将代码拉入 Oracle Cloud Infrastructure Resource Manager,创建堆栈并部署该堆栈。或者,也可以使用 Terraform CLI 将代码从 GitHub 下载到计算机,定制代码并部署体系结构。

  • 使用 Oracle Cloud Infrastructure Resource Manager 进行部署:
    1. 单击部署到 Oracle Cloud

      如果您尚未登录,请输入租户和用户身份证明。

    2. 复查并接受条款和条件。
    3. 选择要在其中部署堆栈的区域。
    4. 按照屏幕上的提示和说明创建堆栈。
    5. 创建堆栈后,单击 Terraform 操作,然后选择规划
    6. 等待作业完成,然后复查计划。

      要进行任何更改,请返回“堆栈详细信息”页,单击编辑堆栈,然后进行所需的更改。然后,再次运行计划操作。

    7. 如果没有必要进行进一步的更改,请返回到堆栈详细信息页,单击 Terraform 操作,然后选择应用
  • 使用 Terraform CLI 进行部署:
    1. 转到 GitHub
    2. 将资料档案库克隆或下载到本地计算机。
    3. 按照 README 文档中的说明操作。

更改日志

此日志列出了重大更改: