阿里云一键部署 Spark 分布式集群

简介: Apache Spark是专为大规模数据处理而设计的快速通用的计算引擎,可以完成各种各样的运算,包括 SQL 查询、文本处理、机器学习等。通过ROS大家可以在阿里云上一键部署Spark集群。

Apache Spark是专为大规模数据处理而设计的快速通用的计算引擎,可以完成各种各样的运算,包括 SQL 查询、文本处理、机器学习等,而在 Spark 出现之前,我们一般需要学习各种各样的引擎来分别处理这些需求。本文主要目的是为大家提供一种非常简单的方法,在阿里云上部署Spark集群。
通过<阿里云ROS资源编排服务>,将VPC、NAT Gateway、ECS创建,Hadoop和Spark部署过程自动化,使大家能够非常方便地部署一个Spark集群。本文创建的Spark集群包含三个节点:master.hadoop,slave1.hadoop,slave2.hadoop。

急速部署Spark集群

一键部署Spark集群>>
screenshot
screenshot

注意:

必须确保可以正确下载Jdk,Hadoop,Scala和Spark安装包,我们可以选择类似如下的URL:


  • 利用该模板创建时,只能选择CentOS系统;
  • 为了防止Timeout 失败,可以设置为120分钟;
  • 我们选择的数据中心在上海/北京。
  • ROS模板安装Spark四部曲

    Spark的依赖环境比较多,一般安装Spark可分为四步:安装配置Hadoop集群,安装配置Scala,安装配置Spark包和启动测试集群。

    1. 安装配置Hadoop

    安装Hadoop比较复杂,我们在上一篇博客《阿里云一键部署 Hadoop 分布式集群》中已经做过详细介绍,这里不再赘述。

    2. 安装配置Scala

    Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架,Scala可以像操作本地集合对象一样轻松地操作分布式数据集。

        "aria2c $ScalaUrl \n",
        "mkdir -p $SCALA_HOME \ntar zxvf scala-*.tgz -C $SCALA_HOME \ncd $SCALA_HOME \nmv scala-*.*/* ./ \nrmdir scala-*.* \n",
        "echo >> /etc/profile \n",
        "echo export SCALA_HOME=$SCALA_HOME >> /etc/profile \n",
        "echo export PATH=$PATH:$SCALA_HOME/bin >> /etc/profile \n",
        "ssh root@$ipaddr_slave1 \"mkdir -p $SCALA_HOME; mkdir -p $SPARK_HOME; exit\" \n",
        "ssh root@$ipaddr_slave2 \"mkdir -p $SCALA_HOME; mkdir -p $SPARK_HOME; exit\" \n",
        "scp -r $SCALA_HOME/*  root@$ipaddr_slave1:$SCALA_HOME \n",
        "scp -r $SCALA_HOME/*  root@$ipaddr_slave2:$SCALA_HOME \n",
    

    3. 安装配置Spark

    Master上安装Spark,并将配置正确后的Spark Home目录远程复制到Slave主机上,并设置环境变量。

        "aria2c $SparkUrl \n",
        "mkdir -p $SPARK_HOME \ntar zxvf spark-*hadoop*.tgz -C $SPARK_HOME \ncd $SPARK_HOME \nmv spark-*hadoop*/* ./ \nrmdir spark-*hadoop* \n",
        "echo >> /etc/profile \n",
        "echo export SPARK_HOME=$SPARK_HOME >> /etc/profile \n",
        "echo export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin >> /etc/profile \n",
        "source /etc/profile \n",
        " \n",
        "cp $SPARK_HOME/conf/slaves.template $SPARK_HOME/conf/slaves \n",
        "echo $ipaddr_slave1 > $SPARK_HOME/conf/slaves \n",
        "echo $ipaddr_slave2 >> $SPARK_HOME/conf/slaves \n",
        "cp $SPARK_HOME/conf/spark-env.sh.template $SPARK_HOME/conf/spark-env.sh \n",
        "echo export SCALA_HOME=$SCALA_HOME > $SPARK_HOME/conf/spark-env.sh \n",
        "echo export JAVA_HOME=$JAVA_HOME   >> $SPARK_HOME/conf/spark-env.sh \n",
        "scp -r $SPARK_HOME/*  root@$ipaddr_slave1:$SPARK_HOME \n",
        "scp -r $SPARK_HOME/*  root@$ipaddr_slave2:$SPARK_HOME \n",
        " \n",
        "ssh root@$ipaddr_slave1 \"echo >> /etc/profile;echo export SCALA_HOME=$SCALA_HOME >> /etc/profile;echo export PATH=$PATH:$SCALA_HOME/bin >> /etc/profile;echo export SPARK_HOME=$SPARK_HOME >> /etc/profile;echo export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin >> /etc/profile;exit\" \n",
        "ssh root@$ipaddr_slave2 \"echo >> /etc/profile;echo export SCALA_HOME=$SCALA_HOME >> /etc/profile;echo export PATH=$PATH:$SCALA_HOME/bin >> /etc/profile;echo export SPARK_HOME=$SPARK_HOME >> /etc/profile;echo export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin >> /etc/profile;exit\" \n",
    

    4. 启动测试集群

    最后格式化HDFS,关闭防火墙,启动集群。

        "hadoop namenode -format \n",
        "systemctl stop  firewalld \n",
        "$HADOOP_HOME/sbin/start-dfs.sh \n",
        "$HADOOP_HOME/sbin/start-yarn.sh \n",
        "$SPARK_HOME/sbin/start-all.sh \n",
    

    测试部署结果

    创建完成后,查看资源栈概况:
    screenshot

    浏览器中输入图中的的SparkWebsiteURL,得到如下结果,则部署成功:
    screenshot

    ROS示例模板

    Spark_Hadoop_Distributed_Env_3_ecs.json:通过该模板可以一键部署上面的集群。
    Spark_Hadoop_ecsgroup.json:该模板允许用户指定slaves节点的数量。
    screenshot

    相关实践学习
    使用ROS创建VPC和VSwitch
    本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
    ROS入门实践
    本课程将基于基础设施即代码 IaC 的理念,介绍阿里云自动化编排服务ROS的概念、功能和使用方式,并通过实际应用场景介绍如何借助ROS实现云资源的自动化部署,使得云上资源部署和运维工作更为高效。
    相关文章
    |
    11天前
    |
    存储 负载均衡 NoSQL
    【赵渝强老师】Redis Cluster分布式集群
    Redis Cluster是Redis的分布式存储解决方案,通过哈希槽(slot)实现数据分片,支持水平扩展,具备高可用性和负载均衡能力,适用于大规模数据场景。
    |
    5月前
    |
    分布式计算 运维 搜索推荐
    立马耀:通过阿里云 Serverless Spark 和 Milvus 构建高效向量检索系统,驱动个性化推荐业务
    蝉妈妈旗下蝉选通过迁移到阿里云 Serverless Spark 及 Milvus,解决传统架构性能瓶颈与运维复杂性问题。新方案实现离线任务耗时减少40%、失败率降80%,Milvus 向量检索成本降低75%,支持更大规模数据处理,查询响应提速。
    246 57
    |
    2月前
    |
    存储 关系型数据库 分布式数据库
    喜报|阿里云PolarDB数据库(分布式版)荣获国内首台(套)产品奖项
    阿里云PolarDB数据库管理软件(分布式版)荣获「2024年度国内首版次软件」称号,并跻身《2024年度浙江省首台(套)推广应用典型案例》。
    |
    6月前
    |
    Cloud Native 关系型数据库 分布式数据库
    登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
    阿里云PolarDB云原生数据库在TPC-C基准测试中以20.55亿tpmC的成绩刷新世界纪录,展现卓越性能与性价比。其轻量版满足国产化需求,兼具高性能与低成本,适用于多种场景,推动数据库技术革新与发展。
    |
    4月前
    |
    监控 Linux 应用服务中间件
    Linux多节点多硬盘部署MinIO:分布式MinIO集群部署指南搭建高可用架构实践
    通过以上步骤,已成功基于已有的 MinIO 服务,扩展为一个 MinIO 集群。该集群具有高可用性和容错性,适合生产环境使用。如果有任何问题,请检查日志或参考MinIO 官方文档。作者联系方式vx:2743642415。
    1011 57
    |
    5月前
    |
    Cloud Native 关系型数据库 分布式数据库
    登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
    云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
    |
    5月前
    |
    SQL 数据可视化 网络安全
    YashanDB分布式可视化部署
    本文介绍YashanDB的分布式部署流程,涵盖服务端安装、数据库基本信息与服务器配置、节点信息设置、建库参数调整、环境变量配置及安装结果检查等步骤。通过可视化Web界面操作,详细说明了各环节配置方法和注意事项,确保用户顺利完成数据库集群的搭建与初始化设置。适用于需要分布式数据库部署的场景,提供全面的操作指导。
    YashanDB分布式可视化部署
    |
    7月前
    |
    存储 分布式计算 物联网
    美的楼宇科技基于阿里云 EMR Serverless Spark 构建 LakeHouse 湖仓数据平台
    美的楼宇科技基于阿里云 EMR Serverless Spark 建设 IoT 数据平台,实现了数据与 AI 技术的有效融合,解决了美的楼宇科技设备数据量庞大且持续增长、数据半结构化、数据价值缺乏深度挖掘的痛点问题。并结合 EMR Serverless StarRocks 搭建了 Lakehouse 平台,最终实现不同场景下整体性能提升50%以上,同时综合成本下降30%。
    534 58
    |
    6月前
    |
    并行计算 PyTorch 算法框架/工具
    融合AMD与NVIDIA GPU集群的MLOps:异构计算环境中的分布式训练架构实践
    本文探讨了如何通过技术手段混合使用AMD与NVIDIA GPU集群以支持PyTorch分布式训练。面对CUDA与ROCm框架互操作性不足的问题,文章提出利用UCC和UCX等统一通信框架实现高效数据传输,并在异构Kubernetes集群中部署任务。通过解决轻度与强度异构环境下的挑战,如计算能力不平衡、内存容量差异及通信性能优化,文章展示了如何无需重构代码即可充分利用异构硬件资源。尽管存在RDMA验证不足、通信性能次优等局限性,但该方案为最大化GPU资源利用率、降低供应商锁定提供了可行路径。源代码已公开,供读者参考实践。
    413 3
    融合AMD与NVIDIA GPU集群的MLOps:异构计算环境中的分布式训练架构实践

    热门文章

    最新文章