Rainbond 5分钟部署 Spark Standalone 集群

Standalone 是 Spark 自身提供的一种主从集群部署模式。本文讲述一个常规1主多从的集群部署模式,该模式下master服务依靠Rainbond平台监控保障其可用性,支持从新调度重启。 worker服务能够根据须要伸缩多个节点。html

部署效果截图以下:docker

image-20201118160946574

<center>Rainbond 部署效果图</center>apache

image-20201118161242094

<center>Spark master UI 图</center>缓存

部署步骤

开始前,你须要完成Rainbond平台的安装和搭建,参考Rainbond 安装与部署 本参考文档适合已掌握Rainbond 基础操做的同窗,所以若是你还刚接触Rainbond平台,请先参考 Rainbond 快速入门指南网络

部署单实例的master服务

  1. 部署spark-master,采用Rainbond基于Docker镜像建立组件:架构

    bde2020/spark-master:3.0.1-hadoop3.2

  2. 确认建立检测成功后选择高级设置进行三个特殊设置。分布式

    • 在环境变量模块中添加环境变量微服务

      SPARK_DAEMON_JAVA_OPTS=-Dspark.deploy.recoveryMode=FILESYSTEM -Dspark.deploy.recoveryDirectory=/dataoop

      咱们须要设置spark-master为“Recovery with Local File System”模式。能够在master发生重启后从持久化文件中恢复数据,保持master服务的可用性。ui

    • 在存储设置中添加共享存储 /data 持久化master的数据,使其能够重启后恢复。

    • 在端口管理中将 8080端口的对外服务打开,组件启动成功后便可访问master的UI。

    • 在部署属性中选择组件类型为有状态单实例

      部署为有状态组件后,其能够得到一个稳定的内部访问域名,供worker组件链接。有状态服务控制权能够保障master节点不会重复启动多个实例。

  3. 设置完成后选择确认建立便可启动master服务。

组件成功点击访问便可打开master UI。如上图所示,咱们能够在UI中获取到master服务的访问地址是:spark://gr7b570e:7077 ,注意UI上显示的地址是spark://gr7b570e-0:7077 咱们须要使用的是spark://gr7b570e:7077 ,复制并记录这个地址。

注意,地址实际值请查看你的UI显示,这里只是举例说明。

部署多实例的worker实例

  1. 部署spark-worker,采用基于Docker-run命令建立组件,这种建立方式能够直接设置一些必要属性:

    docker run -it -e SPARK_MASTER=spark://gr7b570e:7077 -e SPARK_WORKER_MEMORY=1g bde2020/spark-worker:3.0.1-hadoop3.2

    如上建立方式指定了两个环境变量。

    • SPARK_MASTER 指定的是master的地址,由上一步建立的组件获取。
    • SPARK_WORKER_MEMORY 设置worker单个实例的内存量,这个根据每一个实例分配的内存进行设置便可。好比每一个实例分配1GB, 则设置SPARK_WORKER_MEMORY=1g 。若是不设置此变量,服务会自动读取操做系统的内存量。因为咱们是采用的容器部署方式,读取的值会是宿主机的所有内存。将远大于worker实例实际分配的可用内存值。

  1. 一样进入高级设置,设置组件部署模式为 有状态多实例
  2. 确认建立组件,启动成功后便可在组件的伸缩页面中设置worker的运行实例数。

image-20201119224718640

到此,咱们的Spark集群已部署完成。

Spark数据读取

  • <b>就近数据处理原则逐步打破</b>

    过去咱们更偏心于把数据处理服务(hadoop、yarn等)部署到离数据最近的地方。主要缘由是hadoop计算数据的模式对IO消耗较多,若是数据与计算分类,网络IO带来的消耗将更大,对网络带宽要求较大。

    但Spark机制不一样,Spark计算模式是将数据尽量缓存到内存中,也就意味着Spark消耗的资源主要是内存和CPU。而后存储数据的设备内存和CPU配属不必定充足。所以数据与计算分离将是更好的选择。

  • <b>数据与计算分离后的更多选择</b>

    数据与计算分离是指计算服务单独部署,存储服务经过网络为计算服务提供数据。经过网络也就意味着能够有多种协议模式可选,除了传统的HDFS,目前经常使用的就是对象存储,好比兼容S3的各种服务,也能够是分布式文件系统,能够根据数据类型和实际须要合理选择。计算服务(spark worker) 能够根据任务的须要灵活的在分布式集群中分配计算资源。

    本文讲述的在Rainbond中部署Spark集群便是这种用例。

Master节点主备高可用

Spark 基于 ZooKeeper能够提供master服务的主备切换。 配置方式也比较简单,参考 官方文档


Rainbond 云原生应用管理平台,实现微服务架构不用改代码,管理 Kubernetes 不用学容器,帮企业实现应用上云,一站式将任何企业应用持续交付到 Kubernetes 集群、混合云、多云等基础设施。是 Rainstore 云原生应用商店的支撑平台。

1. Rainbond 官网

2. Rainbond 安装使用

3. Rainbond 参考手册全集

相关文章
相关标签/搜索