spark学习笔记
1.Spark安装
1.1 环境
- JDK1.8以上
# 软连接(解耦合) rm -rf /usr/latest #删除软链接(最后的反斜杠不能删掉) ln -s /usr/java/jdk1.8.0 /usr/java/latest#创建新的软连接 # 环境变量 1. ~/bash_profile 每个用户自己专属的shell环境,只在用户登录的时候,执行一次,修改后source或重启后生效 2. ~/bashshrc 每个用户自己专属的shell环境,在用户登录的时候或者执行shell脚本的时候,执行一次 3. /etc/profile 所有用户共用的系统变量,修改以后 source或者重启后生效,当用户登录的时候,执行一次
- Scala环境
- 安装scala
1.2 Spark安装
- 解压
- 配置环境变量
```
1.JAVA_HOME
2.CLASSPATH # java编译文件class的目录
3.HADOOP_HOME
4.HADOOP_CLASSPATH# hadoop依赖包的路径,hadoop安装目录下的lib
5.SPARK_HOME
6.PATH #所有命令配置到系统变量
PATH=$PATH # 在保留原来的一些配置基础上增加配置;“:”是分隔符
```
- 修改spark配置文件
```
# 1.spark-env.sh
SPARK_MASTER_HOST:主节点ip
SPARK_MASTER_PORT:主节点端口号
SPARK_WORKER_CORES:从节点核数
SPARK_WORKER_MEMORY:cpu分配多少内存,从节点计算所用内存大小
SPARK_DIST_CLASSPATH:配置hadoop的依赖包
# 2.slaves
从节点的ip地址
# 3.上传spark日志需要的jar包,3个
# 启动
sbin /start-all.sh
```
2.Spark Standalone架构
2.1 架构组成
1.Driver:运行spark应用程序的驱动,调用main()函数,创建一个SparkContext对象
2.SaprkContext:SparkContext用来可spark集群进行交互
3.Executor:执行器,在worker上运行的程序,负责计算
4.Task:任务
5.DAG Scheduler:有向无环图,一个DAG中可以分解出多个任务
6.Task Scheduler:任务调度器
2.2运行流程
1.启动Spark集群,worker节点用心跳机制和master进行通信
2.启动Driver,调用main函数,并创建SparkContext对象
3.SparkContext向master申请计算资源,makster会根据worker的心跳来分配worker的资源,并启动worker的Executor进程
4.SparkContext将代码程序解析成DAG结构,并交给DAGScheduler进行角度
5.DAG会在DAG Scheduler中分解为很多的stage(阶段),每个阶段包含多个task
6.stage(多个task组成的组合)会被调度到TaskSheduler中,TaskSchedule将任务分配到worker中,并交给Executor进程进行计算
7.executor会创建一个线程池去执行Task,并将执行结果反馈都SparkContext中,直到所有的task执行完毕
8.SparkContext向mskter注销释放资源