阿里云一键部署 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

注意:

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使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
目录
相关文章
|
16天前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
20天前
|
存储 分布式计算 负载均衡
分布式计算模型和集群计算模型的区别
【10月更文挑战第18天】分布式计算模型和集群计算模型各有特点和优势,在实际应用中需要根据具体的需求和条件选择合适的计算架构模式,以达到最佳的计算效果和性能。
44 2
|
29天前
|
存储 边缘计算 城市大脑
阿里云入选Gartner®分布式混合基础设施魔力象限
Gartner正式发布了《分布式混合基础设施魔力象限》(Magic Quadrant™ for Distributed Hybrid Infrastructure),阿里云在入选的中国厂商中于执行能力(纵轴)和愿景完整性(横轴)上均处在最高、最远的位置。
|
16天前
|
存储 监控 大数据
构建高可用性ClickHouse集群:从单节点到分布式
【10月更文挑战第26天】随着业务的不断增长,单一的数据存储解决方案可能无法满足日益增加的数据处理需求。在大数据时代,数据库的性能、可扩展性和稳定性成为企业关注的重点。ClickHouse 是一个用于联机分析处理(OLAP)的列式数据库管理系统(DBMS),以其卓越的查询性能和高吞吐量而闻名。本文将从我的个人角度出发,分享如何将单节点 ClickHouse 扩展为高可用性的分布式集群,以提升系统的稳定性和可靠性。
43 0
|
1月前
|
存储 边缘计算 城市大脑
阿里云入选Gartner®分布式混合基础设施魔力象限
Gartner正式发布了《分布式混合基础设施魔力象限》(Magic Quadrant™ for Distributed Hybrid Infrastructure),全球共9家厂商入围,阿里云成功入选,位居利基者(Niche Players)象限。
|
1月前
|
SQL 分布式计算 大数据
大数据-100 Spark 集群 Spark Streaming DStream转换 黑名单过滤的三种实现方式(一)
大数据-100 Spark 集群 Spark Streaming DStream转换 黑名单过滤的三种实现方式(一)
30 0
|
1月前
|
SQL 分布式计算 大数据
大数据-100 Spark 集群 Spark Streaming DStream转换 黑名单过滤的三种实现方式(二)
大数据-100 Spark 集群 Spark Streaming DStream转换 黑名单过滤的三种实现方式(二)
29 0
|
1月前
|
消息中间件 分布式计算 Kafka
大数据-99 Spark 集群 Spark Streaming DStream 文件数据流、Socket、RDD队列流
大数据-99 Spark 集群 Spark Streaming DStream 文件数据流、Socket、RDD队列流
29 0
|
1月前
|
NoSQL Java Redis
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
Redis分布式锁在高并发场景下是重要的技术手段,但其实现过程中常遇到五大深坑:**原子性问题**、**连接耗尽问题**、**锁过期问题**、**锁失效问题**以及**锁分段问题**。这些问题不仅影响系统的稳定性和性能,还可能导致数据不一致。尼恩在实际项目中总结了这些坑,并提供了详细的解决方案,包括使用Lua脚本保证原子性、设置合理的锁过期时间和使用看门狗机制、以及通过锁分段提升性能。这些经验和技巧对面试和实际开发都有很大帮助,值得深入学习和实践。
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
|
3月前
|
NoSQL Redis
基于Redis的高可用分布式锁——RedLock
这篇文章介绍了基于Redis的高可用分布式锁RedLock的概念、工作流程、获取和释放锁的方法,以及RedLock相比单机锁在高可用性上的优势,同时指出了其在某些特殊场景下的不足,并提到了ZooKeeper作为另一种实现分布式锁的方案。
108 2
基于Redis的高可用分布式锁——RedLock