Spark入门笔记

本文详细介绍了Spark的基础概念,包括其作为内存分析引擎的特点,应用场景,以及与MapReduce的性能对比。重点讲解了Spark的运行模式(Local、集群、YARN),SparkSubmit的使用,以及不同部署模式的区别。同时涵盖了端口号总结和Spark-submit提交任务的关键参数。
摘要由CSDN通过智能技术生成

1、Spark概述
    1、spark是什么
        Spark是基于内存的分析计算引擎。
    2、Spark的应用场景
        Spark用于离线、实时、机器学习、图计算
    3、spark比MR快的原因
        1、中间结果保存位置不一样
            多个MR计算的时候,中间结果保存在磁盘中
            SPARK计算的时候,中间结果保存在内存中
        2、task级别不一样
            MR的task是进程级别,进程创建与销毁的代价会比较大
            spark的task是线程级别
2、spark运行模式
    1、Local模式【单机安装spark】
        1、任务提交: bin/spark-submit --master local/local[N]/local[*] --class 待运行类的全类名 jar包所在位置 [参数...]
                master=local  使用单线程模拟执行,同一时间只能运行一个task
                master=local[N] 使用N个线程模拟执行,同一时间只能运行N个task
                master=local[*] 使用cpu个数个线程模拟执行,同一时间只能运行cpu个数个task
    2、集群模式
        集群角色
            Master[类似yarn的ResourceManager]
                职责: 负责资源管理与分配
            Worker[类似yarn的NodeManager]
                职责: 资源节点与任务执行节点
            Master与Worker是随着spark集群的启动而启动,随着集群的停止而消失。
            Driver
                职责:
                    1、负责将用户的代码转成job
                    2、负责提交task到executor执行
                    3、监控executor中task的执行状态
                    4、负责job执行过程中webui界面的展示
            Executor
                职责: 资源进程与任务执行进程
            Driver与Executor是随着任务提交而出现,随着任务的完成而消失。
        1、standalone模式[使用自带的资源调度器<Master与Worker>,需要搭建spark集群]
            1、任务提交
                bin/spark-submit 
                    --master spark://master主机名:7077 --class 待运行类的全类名 --total-executor-cores cpu总核数 
                    --executor-cores 单个executor核数 --executor-memory 单个executor内存 jar包所在位置 参数 ...
            2、部署模式[--deploy-mode client/cluster]
                client模式与cluster模式的区别: Driver所在的位置不一样
                    client模式: Driver与client都在SparkSubmit进程中,此时Client端不能关闭,关闭之后Driver消失不能进行任务调度,spark程序会停止
                        工作流程:
                            1、通过spark-submit脚本提交任务,此时会生成SparkSubmit进程,进程中会创建Client与Driver
                            2、Driver向Master注册任务,申请资源
                            3、Master筛选出资源充足的Worker
                            4、Master向Worker发起启动executor的请求
                            5、executor启动之后会向Driver反向注册,申请计算任务
                            6、Driver提交task到executor中执行
                            7、等到task执行完成之后,注销释放资源
                    cluster模式: Driver在任意一个Worker中,此时Client端能关闭,不会影响Driver
                        工作流程
                            1、通过spark-submit脚本提交任务,此时会生成SparkSubmit进程,进程中会创建Client
                            2、Client向Master注册任务,申请启动Driver
                            3、Master会向其中Worker发起请求,启动Driver
                            4、Driver启动之后向Master申请资源
                            5、Master筛选出资源充足的Worker
                            6、Master向Worker发起启动executor的请求
                            7、executor启动之后会向Driver反向注册,申请计算任务
                            8、Driver提交task到executor中执行
                            9、等到task执行完成之后,注销释放资源
        2、yarn模式[单机安装spark既可以,将任务提交到yarn执行]
            1、任务提交
                bin/spark-submit 
                    --class 待运行类的全类名 --master yarn --num-executors executor个数[2] 
                    --exeuctor-cores[1] 单个executor核数 --executor-memory[1] 单个executor内存 jar包所在位置 参数 ...
            2、部署模式[--deploy-mode client/cluster]
                client模式与cluster模式的区别: Driver所在的位置不一样    [测试用client,生产用cluster]
                    client模式: Driver与client都在SparkSubmit进程中,此时Client端不能关闭,关闭之后Driver消失不能进行任务调度,spark程序会停止
                        工作流程:
                            1、通过spark-submit脚本提交任务,此时会生成SparkSubmit进程,进程中会创建Client与Driver
                            2、Driver向ResourceManager注册任务,申请启动ApplicationMaster
                            3、AM启动之后会向RM申请资源
                            4、RM会将资源列表返回给AM
                            5、AM根据资源列表向NodeManager发起申请启动executor的请求
                            6、executor启动之后会向Driver反向注册
                            7、Driver提交task到executor中执行
                            8、task执行完成之后,AM会向RM注销自己释放资源
                    cluster模式: Driver在ApplicationMaster进程中,此时Client端能关闭,不会影响Driver
                        工作流程:
                            1、通过spark-submit脚本提交任务,此时会生成SparkSubmit进程,进程中会创建Client
                            2、Client向ResourceManager注册任务,申请启动ApplicationMaster
                            3、AM启动之后会在进程中启动Driver线程
                            4、AM启动会向RM申请资源
                            5、RM会将资源列表返回给AM
                            6、AM根据资源列表向NodeManager发起申请启动executor的请求
                            7、executor启动之后会向Driver反向注册
                            8、Driver提交task到executor中执行
                            9、task执行完成之后,AM会向RM注销自己释放资源
        3、端口号总结
            4040: 任务执行过程中webui界面端口[任务执行完成之后打不开界面]
            8080: spark集群界面端口(和zookeeper冲突,建议改成8989)
            7077: spark master通信端口
            18080: spark历史服务器webui界面端口
        4、spark-submit提交任务常用参数
            --master 指定任务提交到哪个资源调度器中执行
                local模式: local/local[N]/local[*]
                standalone模式: spark://master主机名:7077
                yarn模式: yarn
            --class 待运行的带有main方法的object全类名
            --deploy-mode 指定部署模式[client/cluster]
            --driver-memory 指定Driver内存大小[一般设置为5-10G]
            --executor-memory 指定单个executor内存大小
            --exeucutor-cores 指定单个executor的cpu核数
            --total-exeucutor-cores 指定任务所有executor总核数[仅限于standalone模式使用]
            --num-executors 指定任务需要的executor个数[仅限于yarn模式使用]
            --queue 指定任务提交到哪个资源队列中[仅限于yarn模式使用]
            --driver-cores    指定Driver核数[默认值1 一般不设定 足够使用]
WorldCount
    1 配置SparkConf
        setMaster.setAppName    IDEA本地执行这两个必须设
        setAppName                如果是打包到Yarn集群执行Master不用设[bin/spark-submit --master yarn] 如IDEA设置了,那么IDEA设置的优先级更高
    2 创建SparkContext
        new SparkContext.(SparkConf)
    3 读数据 处理数据
        sc.textFile
    4 调用行动算子
    5 关闭sc
        sc.stop 
IDEA
    创建Class的时候 没有scala Class
        Flie ->Project Structure->Libraries 或 Global Libraries->点击+把Scala SDK加进来

    打包Spark jar包注意事项
        target包所在位置:Show in Explorer
        Spark用小包[大包有依赖,Spark内部有对应的包],
        用解压工具打开小包,检查有没有class文件[没有代表打包有问题,可能需要添加打包插件] 

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值