赞
踩
上节我们完成了如下的内容:
在介绍完Spark的核心特性和组件之后,接下来详细探讨一下Spark的集群架构和部署模式。理解Spark的集群架构有助于更好地利用其强大的分布式计算能力,以满足不同的计算需求。
Spark集群主要由以下三个核心组件组成:
集群管理器负责管理集群的资源,并将资源分配给Spark应用。它负责协调驱动程序和执行器的交互,并处理任务的调度。Spark支持多种集群管理器,包括独立模式(Standalone)、YARN、Mesos和Kubernetes。
Spark支持多种集群部署模式,适应不同的工作环境和需求:
在本地模式下,Spark在单一节点上运行,无需集群管理器。这种模式主要用于开发、测试和调试,不适合生产环境。使用本地模式时,可以通过指定线程数(如local[*])来决定并行度。
在集群模式下,Spark应用部署在集群中,任务分发到多个工作节点上执行。驱动程序可以运行在本地也可以运行在集群中,前者称为客户端模式(Client Mode),后者称为集群模式(Cluster Mode)。
在Mesos或Kubernetes模式下,Spark可以与其他应用共享集群资源,并根据资源需求动态调整资源的分配。这种模式为大规模集群提供了更高的灵活性和资源利用率,适合企业级应用场景。
在Spark集群中,资源管理是一个关键问题。不同的集群管理器采用不同的策略来分配资源,确保集群的高效运行。Spark支持的资源管理策略包括:
为了确保Spark集群的稳定运行和高效利用,集群监控与调优是不可或缺的环节。Spark提供了多种监控工具和日志记录功能,帮助管理员了解集群的运行状态并进行调优。
在 h121 节点上进行执行,我们启动服务:
start-all.sh
启动的结果如下图所示:
接着我们需要到目录下,启动集群的Spark
cd /opt/servers/spark-2.4.5-bin-without-hadoop-scala-2.12/sbin
./start-all.sh
通过 jps 我可以可以看到:Master 和 Worker
通过 jps 我们可以看到:
通过 jps 我们可也看到:
我们通过查看 h121 的日志,可以看到是 8081 的端口(我的8080好像是被占用了)
这个在Spark的目录下的 logs下,如果你也遇到了无法访问,可以看看这个logs
这里Spark提供了一个官方的HelloWorld(前提你配置好环境变量,不然你需要到指定目录执行)
run-example SparkPi 10
可以看到如下的结果为:
我们可以简单的启动一个Shell来测试Spark的效果:
(后续有更深入的学习!)
spark-shell --master local-cluster[*]
这里有一些之前测试的图片:
先不管别的,先写一段感受一下:
val rdd1 = sc.makeRDD(1 to 100).map((_, 1))
rdd1.getNumPartitions
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。