spark学习

standalone环境部署

1.standalone架构

standalone是完整的spark运行环境,其中:Master角色以Master进程存在,Worker角色以Woker进程存在,Driver角色在运行时存在Master进程内,Executeor运行在Worker进程内

standalone集群在进程上主要由3类进程:

  1. 主节点master进程
  2. 从节点Workers节点
  3. 历史服务器HistoryServer进程
    spark Application运行完成以后,保存事件日志数据到HDFS,启动HistoryServer可以查看应用运行相关信息

在这里插入图片描述

2.安装standalone环境

1. 安装Python(Anaconda)

  • 上传: 资料中提供的Anaconda3-2021.05-Linux-x86_64.sh文件到Linux服务器上
  • 安装执行命令:sh ./Anaconda3-2021.05-Linux-x86_64.sh
  • 退出终端,然后在进入终端,前面就会出现:(base) [root@node2 ~]#
  • 配置国内数据源
vim ~/.condarc

将下面的数据填写到这个文件中

channels:
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  • 创建虚拟环境
conda create -n pyspark python=3.8
  • 切换到虚拟环境
conda activate pyspark
  • 将安装包发送到另一台服务器上
scp -r Anaconda3-2021.05-Linux-x86_64.sh node3:`pwd`/
  • 通过克隆虚拟器,修改主机名
hostnamectl set-hostname node1

2.spark安装

  • 上传spark-3.2.0-bin-hadoop3.2.tgz文件到linux上
  • 解压文件
tar -zxvf spark-3.2.0-bin-hadoop3.2.tgz -C /export/server/
  • 由于spark目录名称很长, 给其一个软链接
ln -s /export/server/spark-3.2.0-bin-hadoop3.2 /export/server/spark

3.配置环境变量

vim /etc/profile
export SPARK_HOME=/export/server/spark
export PYSPARK_PYTHON=/export/server/anaconda3/envs/pyspark/bin/python3.8
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

3台机器分别配置

vim ~/.bashrc
export JAVA_HOME=/export/server/jdk
export PYSPARK_PYTHON=/export/server/anaconda3/envs/pyspark/bin/python3.8

4.启动spark历史服务

sbin/start-history-server.sh

3.测试

1.启动spark

cd /export/server/spark/bin
./pyspark

2.计算

sc.parallelize([1,2,3,4,5]).map(lambda x:x*10).collect()

Spark on yarn模式

1.spark on yarn本质

在这里插入图片描述
Driver可以运行在容器中,也可以在spark提交客户端上

2.配置spark on yarn环境

打开spark-env.sh文件

vim spark/conf/spark-env.sh

添加下面的内容

## HADOOP软件配置文件目录,读取HDFS上的文件和运行YARN集群
HADOOP_CONF_DIR=/export/server/hadoop/etc/hadoop
YARN_CONF_DIR=/export/server/haddop/etc/hadoop

注意:hadoop集群和yarn集群要启动
启动spark on yarn集群:

bin/pyspark --master yarn

3.spark on yarn运行模式

spark on yarn有两种模式:cluster和client两种模式

cluster模式client模式
Driver运行位置YARN容器内客户端进程内
通讯效率低于cluster模式
日志查看日志输出在YARN容器内,查看不方便日志输出在客户端标准输出流内,查看方便
生产可用推荐不推荐
稳定性稳定不稳定

运行命令:

# 默认就是这种模式,再添加一些性能参数
bin/spark-submit --master yarn --deploy-mode client --driver-memory 512m --executor-memory 512m --num-executors 3 --total-executor-cores 3 /export/server/spark/examples/src/main/python/pi.py 100

4.spark on yarn运行细节

在这里插入图片描述

RDD学习

1.什么是RDD

RDD是Resilient Distributed Dataset叫做弹性分布式数据集,是Spark中最基本的数据抽象,代表一个不可变,可分区,里面的元素可并行计算的集合

2.为什么需要RDD

1.分布式计算需要
	1.分区空值
	2.Shuffle控制
	3.数据存储\序列化\发送
	4.数据计算API
	5.等一系列功能

3.RDD五大特性

1.RDD是有分区的
2.计算方法都会作用到每一个分片(分区)之上
3.RDD之间是有相互依赖关系的
4.KV型RDD可以有分区器
5.RDD分区数据的读取会尽量靠近数据所在地

4.各种算子我就不写了,想看的可以到下面这个地址看练习代码

https://github.com/cm-smart/python_project/tree/master/pyspark_test

5.spark-submit操作

spark-submit提交,依赖其它文件,支持.zip(一堆),也可以是单个.py文件
/export/server/spark/bin/spark-submit --master yarn --py-files ./defs.zip ./main.py

6.榨干集群性能提交

1.先查看集群的资源有多少
	1.查看CPU有几核:cat /proc/cpuinfo | grep processor | wc -l
	2.查看内存有多大:free -g
2.3个服务器,3核,3g内存
3.希望使用3个executor来干活,每个executor吃掉1核1g内存
 /export/server/spark/bin/spark-submit --master yarn --py-files ./defs.py \
  --executor-memory 1g \
  --executor-cores 1 \
  --num-executors 3 \
 ./main.py
  • 21
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值