zoukankan      html  css  js  c++  java
  • Spark开发-开发总览

    Spark 的层次

        开发视角多涉及两种层面。

      1.一种是Spark自身的开发,

          这类开发涉及到Java和Sala以及一些底层的源码。了解这些内容,主要用于底层框架的开发以及针对Spark的二次开发,也就是Spark架构设计与实现。要求深入Spark源码研究和二次开发,这些一般是大数据平台的设计与开发,涉及大型复杂分布式系统的设计和架构。对源码的了解程度要求比较高。

      2.还有一种是Spark在业务中的应用开发。

         即基于Spark实现数据的处理和计算等操作。多是数据ETL,数据挖掘等数据项目。

      

    2.Spark 基本概念

         总结一下各自的阶段和层次,从不同的开发视角上看,侧重点是不同的。

        I.Spark的概念构成
      Components 组件: SparkCore SparkSQL SparkStreaming MLlib GraphX
      部署方式:Local Standalone Yarn 有两种 Client Cluster
      编程接口: RDD 以及 DataSet<Row>
        RDD: Spark的计算单元,一组RDD可形成执行的有向无环图RDD Graph
        Partitions 分区
        broadcast 广播变量
       II.Spark应用开发的视角
      0.开发整个过程
        01.创建Maven工程-配置依赖的包
        02.编写程序
        03.将程序打包
        04.上传Jar包,并运行
      1.从数据处理过程来说
        Source: 输入(来源-读取命令,返回格式)
          来源: 文件系统与文件格式(CSV JSON) 数据库系统
          读取的命令:
          返回的数据类型: RDD DataSet
        Operator
          Transformer
            map flatMap foreache
             filter
            mapPartitions
            groupByKey reduceByKey join
          Action
            reduce fold aggregate
            countByKey
          其他相关:
            数据类型之间的转换 RDD-RDD
            持久化 persist
            分区相关的操作
        Sink: 输出
          文件系统
          数据库系统: Hive Hbase MySQL ClickHouse
          消息系统: Kafka

      2.从执行的模型来说
        Map Shuffle Reduce

      3.从查看的metric看
        Job --》 Stage --》 task

      4.从背后的具体执行情况来说
        SparkContext
        驱动器 -- Driver
        执行器 -- Executor
        DAG Scheduler:  根据作业(Job)构建基于Stage的DAG,并提交Stage给TaskScheduler
         TaskScheduler: 将任务(Task)分发给Executor

      5.优化以及数据倾斜的处理方式
        优化:
        从系统执行方面
        从代码编写方面

       III.Spark开发的视角 

             源码层面进行改动,或者基于源码的配套开发.

               分布式存储,分布式计算。Hadoop HDFS就用做分布式存储的, Spark就是分布式计算系统。

    ###Spark内部的原理

         理论依据可以作为开发的基石。

            CAP 定理 Consistency数据一致性,Availability可用性,Partition tolerance分区容错性

            BASE 是  Basically Available(基本可用)、Soft state(软状态)和  Eventually consistent(最终一致性)三个短语的简写

      

  • 相关阅读:
    我倾向于使用发布版本进行调试,而不是使用调试版本
    常见WinDbg问题及解决方案
    在崩溃转储中查找所有可能的上下文记录
    向C/C++程序员介绍Windbg 脚本
    VS 使用技巧(1)
    Windows资源监视器软件的原理
    微架构、指令集架构与汇编语言的关系
    调试寄存器 原理与使用:DR0-DR7
    如何学习调试?
    WinDbg: 执行 SOS 扩展命令 !clrstack时报错 Access violation exception (0xC0000005)
  • 原文地址:https://www.cnblogs.com/ytwang/p/13529265.html
Copyright © 2011-2022 走看看