spark基础及架构

一、Spark概论

Spark2.2.0版本下载地址,点击跳转!
Spark安装、文件配置及启动测试,点击跳转!

1、Spark简介

  • 诞生于加州大学伯克利分校AMP实验室,是一个基于内存的分布式计算框架
  • 发展历程
    • 2009年诞生于加州大学伯克利分校AMP实验室
    • 2010年正式开源
    • 2013年6月正式成为Apache孵化项目
    • 2014年2月成为Apache顶级项目
    • 2014年5月正式发布Spark 1.0版本
    • 2014年10月Spark打破MapReduce保持的排序记录
    • 2015年发布了1.3、1.4、1.5版本
    • 2016年发布了1.6、2.x版本

2、为什么使用Spark

  • MapReduce编程模型的局限性
    • 繁杂
      • 只有Map和Reduce两个操作,复杂的逻辑需要大量的样板代码
    • 处理效率低:
      • Map中间结果写磁盘,Reduce写HDFS,多个Map通过HDFS交换数据
      • 任务调度与启动开销大
    • 不适合迭代处理、交互式处理和流式处理
  • Spark是类Hadoop MapReduce的通用并行框架
    • Job中间输出结果可以保存在内存,不再需要读写HDFS
    • 比MapReduce平均快10倍以上
  • Spark自身优势
    • 速度快
      • 基于内存数据处理,比MR快100个数量级以上(逻辑回归算法测试)
      • 基于硬盘数据处理,比MR快10个数量级以上
    • 易用性
      • 支持Java、Scala、Python、R语言
      • 交互式shell方便开发测试
    • 通用性
      • 一栈式解决方案:批处理、交互式查询、实时流处理、图计算及机器学习
    • 随处运行
      • YARN、Mesos、EC2、Kubernetes、Standalone、Local

3、Spark技术栈

  • Spark Core
    • 核心组件,分布式计算引擎,算子
  • Spark SQL
    • 高性能的基于Hadoop的SQL解决方案
  • Spark Streaming
    • 可以实现高吞吐量、具备容错机制的准实时流处理系统
  • Spark GraphX
    • 分布式图处理框架
  • Spark MLlib
    • 构建在Spark上的分布式机器学习库

二、Spark架构

1、Spark架构设计

  • 运行架构
    • 在驱动程序中,通过SparkContext主导应用的执行
    • SparkContext可以连接不同类型的Cluster Manager(Standalone、YARN、Mesos),连接后,获得集群节点上的Executor
    • 一个Worker节点默认一个Executor,可通过SPARK_WORKER_INSTANCES调整
    • 每个应用获取自己的Executor
    • 每个Task处理一个RDD分区

2、Spark架构核心组件

术语说 明
Application建立在Spark上的用户程序,包括Driver代码和运行在集群各节点Executor中的代码
Driver program驱动程序。Application中的main函数并创建SparkContext
Cluster Manager在集群(Standalone、Mesos、YARN)上获取资源的外部服务
Worker Node集群中任何可以运行Application代码的节点
Executor某个Application运行在worker节点上的一个进程
Task被送到某个Executor上的工作单元
Job包含多个Task组成的并行计算,往往由Spark Action触发生成,一个Application中往往会产生多个Job
Stage每个Job会被拆分成多组Task,作为一个TaskSet,其名称为Stage

3、Spark API

  • SparkContext
    • 连接Driver与Spark Cluster(Workers)
    • Spark的主入口
    • 每个JVM仅能有一个活跃的SparkContext
    • SparkContext.getOrCreate
import org.apache.spark.{SparkConf, SparkContext}

val conf=new SparkConf().setMaster("local[2]").setAppName("HelloSpark")
val sc=SparkContext.getOrCreate(conf)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值