大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS

简介: 大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS

点一下关注吧!!!非常感谢!!持续更新!!!

目前已经更新到了:

Hadoop(已更完)

HDFS(已更完)

MapReduce(已更完)

Hive(已更完)

Flume(已更完)

Sqoop(已更完)

Zookeeper(已更完)

HBase(已更完)

Redis (已更完)

Kafka(已更完)

Spark(正在更新!)

章节内容

上节我们完成了如下的内容:


Spark项目下载

Spark环境配置、配置文件配置

项目分发 至 h122和h123服务器

Spark集群架构

在介绍完Spark的核心特性和组件之后,接下来详细探讨一下Spark的集群架构和部署模式。理解Spark的集群架构有助于更好地利用其强大的分布式计算能力,以满足不同的计算需求。

Spark集群主要由以下三个核心组件组成:


驱动程序

集群管理器

执行器

驱动程序(Driver Program)

驱动程序是Spark应用的入口,它负责运行用户定义的main函数,并创建SparkContext对象。SparkContext是与集群交互的接口,它负责调度任务,将任务分发到各个执行器(Executor)中执行。

驱动程序还负责监控任务的执行状态,并收集执行结果。在程序的生命周期中,驱动程序与集群管理器持续通信,确保作业的顺利运行。

集群管理器(Cluster Manager)

集群管理器负责管理集群的资源,并将资源分配给Spark应用。它负责协调驱动程序和执行器的交互,并处理任务的调度。Spark支持多种集群管理器,包括独立模式(Standalone)、YARN、Mesos和Kubernetes。


Standalone:这是Spark自带的集群管理器模式,适用于在小规模集群中独立运行Spark集群。Standalone模式易于设置和管理,适合入门和开发环境。

YARN(Yet Another Resource Negotiator):YARN是Hadoop生态系统中的资源管理器,广泛应用于大规模生产集群。Spark可以与YARN集成,以共享Hadoop集群的资源和数据。

Mesos:Mesos是一个开源的集群资源管理器,可以将集群中的资源划分给多个应用。Mesos支持多种框架,并且具有较高的扩展性和灵活性。

Kubernetes:Kubernetes是一个流行的容器编排平台,Spark可以部署在Kubernetes上,通过Kubernetes的资源管理和容器化能力,实现

更灵活的部署和扩展。

执行器(Executor)

执行器是在工作节点(Worker Node)上运行的进程,负责执行分配的任务。每个执行器都具有自己的内存和CPU资源,并独立执行任务。

执行器在整个Spark应用的生命周期内都会存在,它不仅执行任务,还会将数据缓存在内存中,以加快后续任务的处理速度。

Spark的集群模式

Spark支持多种集群部署模式,适应不同的工作环境和需求:


本地模式(Local Mode)

在本地模式下,Spark在单一节点上运行,无需集群管理器。这种模式主要用于开发、测试和调试,不适合生产环境。使用本地模式时,可以通过指定线程数(如local[*])来决定并行度。


集群模式(Cluster Mode)

在集群模式下,Spark应用部署在集群中,任务分发到多个工作节点上执行。驱动程序可以运行在本地也可以运行在集群中,前者称为客户端模式(Client Mode),后者称为集群模式(Cluster Mode)。


客户端模式:驱动程序在用户的本地机器上运行,适合需要频繁与用户交互的应用。用户提交应用时,集群管理器负责分配资源并启动执行器。

集群模式:驱动程序在集群的一个节点上运行,适合长时间运行的作业和生产环境。用户提交应用后,集群管理器会在集群中选择一个节点作为驱动程序运行的地方。

混合模式(Mesos/Kubernetes)

在Mesos或Kubernetes模式下,Spark可以与其他应用共享集群资源,并根据资源需求动态调整资源的分配。这种模式为大规模集群提供了更高的灵活性和资源利用率,适合企业级应用场景。


集群资源管理

在Spark集群中,资源管理是一个关键问题。不同的集群管理器采用不同的策略来分配资源,确保集群的高效运行。Spark支持的资源管理策略包括:


静态资源分配:在Standalone模式中,资源是预先配置好的,集群管理器会根据这些配置为Spark应用分配资源。

动态资源分配:在YARN和Kubernetes模式中,Spark可以根据当前的工作负载动态调整资源使用,释放不再需要的资源,从而提高集群的整体资源利用率。

集群监控与调优

为了确保Spark集群的稳定运行和高效利用,集群监控与调优是不可或缺的环节。Spark提供了多种监控工具和日志记录功能,帮助管理员了解集群的运行状态并进行调优。


Spark UI:这是一个基于Web的用户界面,显示作业的执行状态、任务的分配情况、资源的使用情况等详细信息。通过Spark UI,用户可以深入了解应用的执行过程,并找出性能瓶颈。

Ganglia、Prometheus等监控工具:这些工具可以与Spark集成,提供更细粒度的监控数据,帮助管理员实时监控集群的健康状态。

日志与指标:Spark生成的日志文件和性能指标数据也可以帮助管理员分析集群的运行情况,发现并解决潜在的问题。

Hadoop 集群启动

在 h121 节点上进行执行,我们启动服务:

start-all.sh

启动的结果如下图所示:

Spark 集群启动

接着我们需要到目录下,启动集群的Spark

cd /opt/servers/spark-2.4.5-bin-without-hadoop-scala-2.12/sbin
./start-all.sh

h121 节点

通过 jps 我可以可以看到:Master 和 Worker

h122 节点

通过 jps 我们可以看到:

h123 节点

通过 jps 我们可也看到:

查看结果

我们通过查看 h121 的日志,可以看到是 8081 的端口(我的8080好像是被占用了)

这个在Spark的目录下的 logs下,如果你也遇到了无法访问,可以看看这个logs

测试运行

这里Spark提供了一个官方的HelloWorld(前提你配置好环境变量,不然你需要到指定目录执行)

run-example SparkPi 10
• 1

可以看到如下的结果为:

SparkShell

我们可以简单的启动一个Shell来测试Spark的效果:

(后续有更深入的学习!)

spark-shell --master local-cluster[*]

这里有一些之前测试的图片:

先不管别的,先写一段感受一下:

val rdd1 = sc.makeRDD(1 to 100).map((_, 1))
rdd1.getNumPartitions

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
8月前
|
消息中间件 负载均衡 中间件
⚡ 构建真正的高性能即时通讯服务:基于 Netty 集群的架构设计与实现
本文介绍了如何基于 Netty 构建分布式即时通讯集群。随着用户量增长,单体架构面临性能瓶颈,文章对比了三种集群方案:Nginx 负载均衡、注册中心服务发现与基于 ZooKeeper 的消息路由架构。最终选择第三种方案,通过 ZooKeeper 实现服务注册发现与消息路由,并结合 RabbitMQ 支持跨服务器消息广播。文中还详细讲解了 ZooKeeper 搭建、Netty 集群改造、动态端口分配、服务注册、负载均衡及消息广播的实现,构建了一个高可用、可水平扩展的即时通讯系统。
916 0
|
6月前
|
存储 监控 NoSQL
Redis高可用架构全解析:从主从复制到集群方案
Redis高可用确保服务持续稳定,避免单点故障导致数据丢失或业务中断。通过主从复制实现数据冗余,哨兵模式支持自动故障转移,Cluster集群则提供分布式数据分片与水平扩展,三者层层递进,保障读写分离、容灾切换与大规模数据存储,构建高性能、高可靠的Redis架构体系。
|
6月前
|
存储 分布式计算 资源调度
【赵渝强老师】阿里云大数据MaxCompute的体系架构
阿里云MaxCompute是快速、全托管的EB级数据仓库解决方案,适用于离线计算场景。它由计算与存储层、逻辑层、接入层和客户端四部分组成,支持多种计算任务的统一调度与管理。
510 1
|
8月前
|
消息中间件 分布式计算 大数据
“一上来就搞大数据架构?等等,你真想清楚了吗?”
“一上来就搞大数据架构?等等,你真想清楚了吗?”
155 1
|
7月前
|
SQL 存储 监控
流处理 or 批处理?大数据架构还需要流批一体吗?
简介:流处理与批处理曾是实时监控与深度分析的两大支柱,但二者在数据、代码与资源上的割裂,导致维护成本高、效率低。随着业务对数据实时性与深度分析的双重需求提升,传统架构难以为继,流批一体应运而生。它旨在通过逻辑、存储与资源的统一,实现一套系统、一套代码同时支持实时与离线处理,提升效率与一致性,成为未来大数据架构的发展方向。
|
9月前
|
架构师 Oracle 大数据
从大数据时代变迁到数据架构师的精通之路
无论从事何种职业,自学能力都显得尤为重要。为了不断提升自己,我们可以尝试建立一套个性化的知识目录或索引,通过它来发现自身的不足,并有针对性地进行学习。对于数据架构师而言,他们需要掌握的知识领域广泛而深入,不仅包括硬件、网络、安全等基础技术,还要了解应用层面,并熟练掌握至少一门编程语言。同时,深入理解数据库技术、具备大数据实操经验以及精通数据仓库建模和ELT技术也是必不可少的。只有这样,数据架构师才能具备足够的深度和广度,应对复杂的业务和技术挑战。 构建个人知识体系是数据架构师在学习和工作中的一项重要任务。通过系统化、不断深化的知识积累,数据架构师能够有效应对快速变化的商业环境和技术革新,进一
|
分布式计算 大数据 调度
Spark 集群搭建_高可用配置|学习笔记
快速学习 Spark 集群搭建_高可用配置
Spark 集群搭建_高可用配置|学习笔记
|
分布式计算 Hadoop Linux
Spark集群搭建记录 | 云计算[CentOS7] | Spark配置
写在前面 step1 Spark下载 step2 修改环境变量 ~/.bashrc /etc/profile step3 配置Master-文件修改 slaves spark-env.sh step4 配置slave节点 step5 集群启动 step6 web浏览器状态查看 step7 配置开机启动(可选)
425 0
Spark集群搭建记录 | 云计算[CentOS7] | Spark配置
|
分布式计算 Hadoop Java
|
分布式计算 Spark Hadoop