本地运行Spark Standalone - I

Stand alone 是完整的spark运行环境,其中 Master 角色以Master进程存在,worker角色以worker进程存在, Driver角色在运行时存在于Master进程内,Executor运行于Worker进程内。

本节我们创建三台机器:

node1运行: Spark的Master进程

node2运行: spark的1个worker进程

node3运行: spark的1个worker进程

整个集群提供: 1个master进程 和 2个worker进程

创建三台EC2

进入EC2控制台,创建三台机器,命名为spark-server,选择t3.medium机型:

image-20240218214030993

为实例选择keypair。在advanced detail部分,设置user data:

#! /bin/bash

cd /home/ec2-user/
wget https://dlcdn.apache.org/spark/spark-3.5.0/spark-3.5.0-bin-hadoop3.tgz  
tar -zvxf spark-3.5.0-bin-hadoop3.tgz 

sudo yum update -y && sudo yum install java-17-amazon-corretto-devel.x86_64 -y

echo "export JAVA_HOME=/usr/lib/jvm/java-17-openjdk/"| tee -a ~/.bash_profile

上面的spark下载地址可以在 https://spark.apache.org/downloads.html 找到。

image-20240218221747857

最后点击创建:

image-20240218221534794

创建完成后,在ec2页面搜索spark-server, 找到这三台机器,并分别命名为master, worker-1, worker-2:

image-20240218214530682

编辑安全组,为本机IP及172.31.0.0/16放开所有端口的访问:

image-20240218224013947

运行spark-shell

登录到spark-server-master节点,进入spark的bin目录,运行spark-shell:

image-20240218222001891

运行以下代码:

val textFile = spark.read.textFile("spark-shell.cmd")
textFile.count()

spark帮我们统计出了对应文件的行数:

image-20240218222050729

访问 master节点的4040端口,看到了对应的Job:

image-20240218222306825