spark的基本概念
spark基本概念
-
spark就是一款大规模数据的统一分析引擎,基于内存计算,整个spark核心的数据架构是RDD(弹性分布式数据集,认为是列表list),由加州大学柏克莱发表,后贡献给了Apache
-
spark框架中各个节点的通信采用的模块为:netty框架
为什么说spark的运行效率比mr快一点?
-
spark核心: 弹性分布式数据集(RDD), 借鉴了MR的分布式并行计算的思想, 但是解决了MR存在的一些问题, 会将中间的结果存储在内存中(如果存储不下, 也可以存储在磁盘中), 从而提升运行的效率, 同时spark对数据集提供了丰富的处理API(算子)

-
数据结构不同
数据结构不同: 对于spark 核心数据结构RDD(基于内存的弹性的数据集)
理论为一个大的数据容器, 容器中数据是可以都存储在内存中, 直接对容器中数据执行相关API,
完成对数据在内存中处理统计操作, 这样一种基于内存的计算 要比MR这种基于磁盘的计算效率高的多(官方:
快100倍)
- 运行方式
spark基于多线程的运行方案. 一个进程中运行多个线程的, 由每一个线程完成具体的操作MR基于进程的运行方案, 一个计算程序, 会启动多个Task进程来计算的
说明: 进程启动效率要远远低于在一个进程中启动线程的效率
spark的编写语言
- 当使用spark进行操作的时候, 采用的语言主要是两种: scala(母语) 和 Python
- 目前使用python操作spark的人群是越来越多的, Python提供一个操作spark的库: pyspark
spark VS Hadoop

spark四大特点
- 运行效率快
原因一:中间的结果是保存在内存中的,采用DAG(有向无环图)的方式运行,比mr块100倍,如果是基于磁盘,比mr快10倍
原因二:spark是基于线程运行的,而mr是基于进程运行的,线程的启动和销毁比进程快
- 易用性好
原因一: spark 支持多种操作语言进行处理,包括python,sql, scala, java, go语言
原因二:spark提供了更加高阶的API,这些API都是见名知意
- 通用性强
spark的组成部分很多:
spark core:spark核心库,包含RDD的API, 任务调度, 内存的管理API等等...
spark sql: 用于结构化数据的工具库
spark streaming: spark用于流式处理(实时处理)的一个库,目前使用率在不断的下降, 新的项目都是采用flink进行流式 实时统计计算
spark mllib : 支持机器学习库,包括: 分类 回归, 聚类....
spark graphx: 支持图计算,比如 路程规划计算
- 随处运行
spark程序可以运行在更多的资源调度平台(spark集群, yarn)
spark可以和其他软件进行集成,降低程序员的代码难度,比如和hive集成
spark local本地模式
- 上传安装包
(只需要上传至node1即可, 以下操作都是在node1执行的)
#切换到software目录下
cd /export/software
#上传文件
rz
#解压到server目录下
tar -zxf spark-3.1.2-bin-hadoop3.2.tgz -C /export/server/
#创建软连接或重命名
ln -s spark-3.1.2-bin-hadoop3.2 spark 或
mv spark-3.1.2-bin-hadoop3.2 spark
#启动spark
cd /export/server/spark/bin
./spark-shell
#表示在本地模拟N个线程来运行当前任务
spark-shell --master local[N]
#表示使用当前机器上所有可用的资源
spark-shell --master local[*]
#不携带参数默认就是
spark-shell --master local[*]
#后续还可以使用--master指定集群地址,表示把任务提交到集群上运行,如
./spark-shell --master spark://node01:7077,node02:7077
#退出spark-shell
使用 :quit
- 说明
1) 客户端一旦启动后, spark提供一个客户端的任务监控界面

最低0.47元/天 解锁文章
1013

被折叠的 条评论
为什么被折叠?



