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(最终一致性)三个短语的简写

      

  • 相关阅读:
    禁止ios10双指缩放
    使用uglifyjs压缩JS
    数组深拷贝的方法
    websocket具体如何使用
    订单支付倒计时-剩余时间xx小时xx分xx秒
    css--内凹圆角
    jQuery 演变史
    手机新闻网页
    [译文]此像素非彼像素,非彼像素
    函数有一个特殊的属性 prototype!
  • 原文地址:https://www.cnblogs.com/ytwang/p/13529265.html
Copyright © 2011-2022 走看看