首页
学习
活动
专区
圈层
工具
发布
50 篇文章
1
2021年大数据Spark(一):框架概述
2
2021年大数据Spark(二):四大特点
3
2021年大数据Spark(三):框架模块初步了解
4
2021年大数据Spark(四):三种常见的运行模式
5
2021年大数据Spark(五):大环境搭建本地模式 Local
6
2021年大数据Spark(六):环境搭建集群模式 Standalone
7
2021年大数据Spark(七):应用架构基本了解
8
2021年大数据Spark(八):环境搭建集群模式 Standalone HA
9
2021年大数据Spark(九):Spark On Yarn两种模式总结
10
2021年大数据Spark(十):环境搭建集群模式 Spark on YARN
11
2021年大数据Spark(十一):应用开发基于IDEA集成环境
12
2021年大数据Spark(十二):Spark Core的RDD详解
13
2021年大数据Spark(十三):Spark Core的RDD创建
14
2021年大数据Spark(十四):Spark Core的RDD操作
15
2021年大数据Spark(十五):Spark Core的RDD常用算子
16
2021年大数据Spark(十六):Spark Core的RDD算子练习
17
2021年大数据Spark(十七):Spark Core的RDD持久化
18
2021年大数据Spark(十八):Spark Core的RDD Checkpoint
19
2021年大数据Spark(十九):Spark Core的​​​​​​​共享变量
20
2021年大数据Spark(二十):Spark Core外部数据源引入
21
2021年大数据Spark(二十一):Spark Core案例-SogouQ日志分析
22
2021年大数据Spark(二十二):内核原理
23
2021年大数据Spark(二十三):SparkSQL 概述
24
2021年大数据Spark(二十四):SparkSQL数据抽象
25
2021年大数据Spark(二十五):SparkSQL的RDD、DF、DS相关操作
26
2021年大数据Spark(二十六):SparkSQL数据处理分析
27
2021年大数据Spark(二十七):SparkSQL案例一花式查询和案例二WordCount
28
2021年大数据Spark(二十八):SparkSQL案例三电影评分数据分析
29
2021年大数据Spark(二十九):SparkSQL案例四开窗函数
30
2021年大数据Spark(三十):SparkSQL自定义UDF函数
31
2021年大数据Spark(三十一):Spark On Hive
32
2021年大数据Spark(三十二):SparkSQL的External DataSource
33
2021年大数据Spark(三十三):SparkSQL分布式SQL引擎
34
2021年大数据Spark(三十四):Spark Streaming概述
35
2021年大数据Spark(三十五):SparkStreaming数据抽象 DStream
36
2021年大数据Spark(三十六):SparkStreaming实战案例一 WordCount
37
2021年大数据Spark(三十七):SparkStreaming实战案例二 UpdateStateByKey
38
2021年大数据Spark(三十八):SparkStreaming实战案例三 状态恢复 扩展
39
2021年大数据Spark(三十九):SparkStreaming实战案例四 窗口函数
40
2021年大数据Spark(四十):SparkStreaming实战案例五 TopN-transform
41
2021年大数据Spark(四十一):SparkStreaming实战案例六 自定义输出 foreachRDD
42
2021年大数据Spark(四十二):SparkStreaming的Kafka快速回顾与整合说明
43
2021年大数据Spark(四十三):SparkStreaming整合Kafka 0.10 开发使用
44
2021年大数据Spark(四十四):Structured Streaming概述
45
2021年大数据Spark(四十五):Structured Streaming Sources 输入源
46
2021年大数据Spark(四十六):Structured Streaming Operations 操作
47
2021年大数据Spark(四十七):Structured Streaming Sink 输出
48
2021年大数据Spark(四十八):Structured Streaming 输出终端/位置
49
2021年大数据Spark(四十九):Structured Streaming 整合 Kafka
50
2021年大数据Spark(五十):Structured Streaming 案例一实时数据ETL架构

2021年大数据Spark(六):环境搭建集群模式 Standalone


​​​​​​​

环境搭建-Standalone

Standalone模式是Spark自带的一种集群模式,不同于前面本地模式启动多个进程来模拟集群的环境,Standalone模式是真实地在多个机器之间搭建Spark集群的环境,完全可以利用该模式搭建多机器集群,用于实际的大数据处理。

​​​​​​​前言

StandAlone就是将Spark的角色,以独立的进程的形式运行在服务器上

2个角色:master和worker

根据机器的分布,StandAlone也分为3个变种

1.伪分布式(测试开发用):将Master进程和Worker进程在一台机器内运行。

2.完全分布式(测试开发用):将Master进程和Worker进程分开在不同的机器上运行,比如机器1运行Master进程,机器2机器3机器4运行Worker进程

3.高可用的完全分布式模式(企业生产环境有可能用): 将Master进程和Worker进程分开在不同的机器上运行,同时,拥有多个Master做备份

​​​​​​​Standalone 架构

Standalone集群使用了分布式计算中的master-slave模型,master是集群中含有Master进程的节点,slave是集群中的Worker节点含有Executor进程。

http://spark.apache.org/docs/latest/cluster-overview.html

Spark Standalone集群,类似Hadoop YARN,管理集群资源和调度资源:

  1. 主节点Master:
    1. 管理整个集群资源,接收提交应用,分配资源给每个应用,运行Task任务
  2. 从节点Workers:
    1. 管理每个机器的资源,分配对应的资源来运行Task;
    2. 每个从节点分配资源信息给Worker管理,资源信息包含内存Memory和CPU Cores核数
  3. 历史服务器HistoryServer(可选):
    1. Spark Application运行完成以后,保存事件日志数据至HDFS,启动HistoryServer可以查看应用运行相关信息。

​​​​​​​集群规划

Standalone集群安装服务规划与资源配置:

node01:master

node02:slave/worker  

node03:slave/worker 

官方文档:http://spark.apache.org/docs/2.4.5/spark-standalone.html

修改配置并分发

修改slaves

进入配置目录

cd /export/server/spark/conf

修改配置文件名称

mv slaves.template slaves

vim slaves

内容如下:

代码语言:javascript
复制
node2

node3

​​​​​​​分发到其他机器

将配置好的将 Spark 安装包分发给集群中其它机器,命令如下:

修改spark-env.sh

进入配置目录

cd /export/server/spark/conf

修改配置文件名称

mv spark-env.sh.template spark-env.sh

修改配置文件

vim spark-env.sh

增加如下内容:

代码语言:javascript
复制
## 设置JAVA安装目录

JAVA_HOME=/export/server/jdk



## HADOOP软件配置文件目录,读取HDFS上文件和运行YARN集群

HADOOP_CONF_DIR=/export/server/hadoop/etc/hadoop

YARN_CONF_DIR=/export/server/hadoop/etc/hadoop



## 指定spark老大Master的IP和提交任务的通信端口

export SPARK_MASTER_HOST=node1

export SPARK_MASTER_PORT=7077



SPARK_MASTER_WEBUI_PORT=8080

SPARK_WORKER_CORES=1

SPARK_WORKER_MEMORY=1g
代码语言:javascript
复制
## 设置JAVA安装目录

JAVA_HOME=/export/server/jdk



## HADOOP软件配置文件目录,读取HDFS上文件和运行YARN集群

HADOOP_CONF_DIR=/export/server/hadoop/etc/hadoop

YARN_CONF_DIR=/export/server/hadoop/etc/hadoop



## 指定spark老大Master的IP和提交任务的通信端口

export SPARK_MASTER_HOST=node1

export SPARK_MASTER_PORT=7077



SPARK_MASTER_WEBUI_PORT=8080

SPARK_WORKER_CORES=1

SPARK_WORKER_MEMORY=1g



cd /export/server/

scp -r spark-2.4.5-bin-hadoop2.7 root@node2:$PWD

scp -r spark-2.4.5-bin-hadoop2.7 root@node3:$PWD

##创建软连接

ln -s /export/server/spark-2.4.5-bin-hadoop2.7 /export/server/spark

启动服务进程

集群启动和停止

在主节点上启动spark集群

/export/server/spark/sbin/start-all.sh

在主节点上停止spark集群

/export/server/spark/sbin/stop-all.sh

单独启动和停止

在 master 安装节点上启动和停止 master:

start-master.sh

stop-master.sh

在 Master 所在节点上启动和停止worker(work指的是slaves 配置文件中的主机名)

start-slaves.sh

stop-slaves.sh

WEB UI页面

http://node1:8080/

可以看出,配置了2个Worker进程实例,每个Worker实例为1核1GB内存,总共是2核 2GB 内存。目前显示的Worker资源都是空闲的,当向Spark集群提交应用之后,Spark就会分配相应的资源给程序使用,可以在该页面看到资源的使用情况。

测试

/export/server/spark/bin/spark-shell --master spark://node1:7077

运行程序

代码语言:javascript
复制
sc.textFile("hdfs://node1:8020/wordcount/input/words.txt")

.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _)

.saveAsTextFile("hdfs://node1:8020/wordcount/output2")

hadoop fs -text /wordcount/output2/part*

1.注意

集群模式下程序是在集群上运行的,不要直接读取本地文件,应该读取hdfs上的

因为程序运行在集群上,具体在哪个节点上我们运行并不知道,其他节点可能并没有那个数据文件

2.SparkContext web UI

http://node1:4040/jobs/

3.查看Master主节点WEB UI界面:

http://node1:8080/

下一篇
举报
领券