zoukankan      html  css  js  c++  java
  • spark

    转自https://zhuanlan.zhihu.com/p/34436165

    Spark 运算比 Hadoop 的 MapReduce 框架快的原因是因为 Hadoop 在一次 MapReduce 运算之后,会将数据的运算结果从内存写入到磁盘中,第二次 Mapredue 运算时在从磁盘中读取数据,所以其瓶颈在2次运算间的多余 IO 消耗. Spark 则是将数据一直缓存在内存中,直到计算得到最后的结果,再将结果写入到磁盘,所以多次运算的情况下, Spark 是比较快的. 其优化了迭代式工作负载

    img

    Spark 的主要特点还包括:

    • (1)提供 Cache 机制来支持需要反复迭代计算或者多次数据共享,减少数据读取的 IO 开销;
    • (2)提供了一套支持 DAG 图的分布式并行计算的编程框架,减少多次计算之间中间结果写到 Hdfs 的开销;
    • (3)使用多线程池模型减少 Task 启动开稍, shuffle 过程中避免不必要的 sort 操作并减少磁盘 IO 操作。(Hadoop 的 Map 和 reduce 之间的 shuffle 需要 sort)

    Spark是根据shuffle类算子(比如reduceByKey、join等)来进行stage的划分

    Transformation 操作不是马上提交 Spark 集群执行的,Spark 在遇到 Transformation 操作时只会记录需要这样的操作,并不会去执行,需要等到有 Action 操作的时候才会真正启动计算过程进行计算.针对每个 Action,Spark 会生成一个 Job, 从数据的创建开始,经过 Transformation, 结尾是 Action 操作.这些操作对应形成一个有向无环图(DAG),形成 DAG 的先决条件是最后的函数操作是一个Action.

    RDD 的 Transformation 函数中,又分为窄依赖(narrow dependency)和宽依赖(wide dependency)的操作.窄依赖跟宽依赖的区别是是否发生 shuffle(洗牌) 操作.宽依赖会发生 shuffle 操作. 窄依赖是子 RDD的各个分片(partition)不依赖于其他分片,能够独立计算得到结果,宽依赖指子 RDD 的各个分片会依赖于父RDD 的多个分片,所以会造成父 RDD 的各个分片在集群中重新分片

    spark-submit提交任务模板

    spark-submit 
        --master yarn 
        --deploy-mode client 
        --num-executors 10 
        --executor-memory 10g 
        --executor-cores 8 
        --driver-memory 10g 
        --conf spark.pyspark.python=python2.7 
        --conf spark.pyspark.driver.python=python2.7 
        --py-files depend.zip 
        demo.py 2019-03-05
    

    代码示例

    # -*- coding: utf-8 -*-
    import sys
    import os
    import datetime
    from pyspark import SparkConf,SparkContext
    sc = SparkConf().setAppName("wordcount")
    spark = SparkContext(conf=sc)
    text_file = spark.textFile("hdfs://shw/pyspark")
    word_cnt_rdd = text_file.flatMap(lambda line : line.split(' ')).map(lambda word : (word, 1)).reduceByKey(lambda x, y: x + y)
    word_cnt_rdd.saveAsTextFile('hdfs://shw/wc') 
    
  • 相关阅读:
    过滤器和拦截器的区别
    sql注入
    JavaScript学习
    Linux简单学习
    HTML DOM学习
    Java集合
    java 多线程学习
    常用的OO设计原则
    JAVA设计模式一策略模式(Strategy Pattern)
    201521123071《Java程序设计》第1周学习总结
  • 原文地址:https://www.cnblogs.com/rjxu/p/13253510.html
Copyright © 2011-2022 走看看