学习笔记2

发布时间 2024-01-11 23:21:36作者: lcz111

Spark启动和验证
直接无参数启动./spark-shell ,运行的是本地模式:

启动./spark-shell –master yarn,运行的是on yarn模式,前提是yarn配置成功并可用:

在hdfs文件系统中创建文件README.md,并读入RDD中,使用RDD自带的参数转换,RDD默认每行为一个值:

使用./spark-shell --master  yarn启动spark 后运行命令:val textFile=sc.textFile(“README.md”)读取hdfs上的README.md文件到RDD,并使用内置函数测试如下,说明spark on yarn配置成功.

Spark基本原理
在实际应用中,大数据处理主要包括以下三个类型:复杂的批量数据处理:通常时间跨度在数十分钟到数小时之间;基于历史数据的交互式查询:通常时间跨度在数十秒到数分钟之间;基于实时数据流的数据处理:通常时间跨度在数百毫秒到数秒之间;

同时存在以上场景需要同时部署多个组件,如:MapReduce/Impala/Storm,这样做难免会带来一些问题:不同场景之间输入输出数据无法做到无缝共享,通常需要进行数据格式的转换,不同的软件需要不同的开发和维护团队,带来了较高的使用成本,比较难以对同一个集群中的各个系统进行统一的资源协调和分配;

Spark的设计遵循“一个软件栈满足不同应用场景”的理念,逐渐形成了一套完整的生态系统,其生态系统包含了Spark Core、Spark SQL、Spark Streaming( Structured Streaming)、MLLib和GraphX 等组件,既能够提供内存计算框架,也可以支持SQL即席查询、实时流式计算、机器学习和图计算等。

而且Spark可以部署在资源管理器YARN之上,提供一站式的大数据解决方案;因此,Spark所提供的生态系统足以应对上述三种场景,即批处理、交互式查询和流数据处理。

Spark概念/架构设计
RDD:是Resilient Distributed Dataset(弹性分布式数据集)的简称,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型 ;

DAG:是Directed Acyclic Graph(有向无环图)的简称,反映RDD之间的依赖关系 ;

Executor:是运行在工作节点(WorkerNode)的一个进程,负责运行Task ;

应用(Application):用户编写的Spark应用程序;

任务( Task ):运行在Executor上的工作单元 ;

作业( Job ):一个作业包含多个RDD及作用于相应RDD上的各种操作;

阶段( Stage ):是作业的基本调度单位,一个作业会分为多组任务,每组任务被称为阶段,或者也被称为任务集合,代表了一组关联的、相互之间没有Shuffle依赖关系的任务组成的任务集;

Spark运行架构包括集群资源管理器(Cluster Manager)、运行作业任务的工作节点(Worker Node)、每个应用的任务控制节点(Driver)和每个工作节点上负责具体任务的执行进程(Executor),资源管理器可以自带或使用Mesos/YARN;

一个应用由一个Driver和若干个作业构成,一个作业由多个阶段构成,一个阶段由多个没有Shuffle关系的任务组成;

当执行一个应用时,Driver会向集群管理器申请资源,启动Executor,并向Executor发送应用程序代码和文件,然后在Executor上执行任务,运行结束后,执行结果会返回给Driver,或者写到HDFS或者其他数据库中。