• Spark 常见问题集合


    一、Spark 为什么比 MapReduce 要高效?

    举一个例子:

    select a.state,count(*),AVERAGE(c.price) from a join b on (a.id=b.id) join c on (a.itemId=c.itermId) group by a.state

    如果是用 hive 来实现,那么多个此作业将会被转换成 3 个 job 每一个 job 有 一个 map 和一个 reduce,reduce的结果会存储在 hdfs 上

    1、hdfs 数据的存储是一个非常耗时的操作,因为存储是通过网络进行传输的,而且还会涉及到 namenode datanode client 之间的一个复杂的通信过程,hdfs 默认是存3份的;
    2、每一个map reduce 的作业启动也是一个非常复杂的过程;

    所以 map reduce 使用 hdfs 进行中间数据的交互和存储是其低效的重要原因;

    而 hive on spark 也会智能的生成一个DAG,但是一个作业只会启动一次,但是中间数据可以根据作业自身的情况选择内存存储或者本地存储,节省了大量的IO操作,这大大的提高了效率。

    二、Spark 的 RDD 的数据模型的特点:

    RDD --- 弹性分布式数据集合

    1、分布式:存在很多的节点上,每个节点上存储一点点,即由多个 partition 构成
    2、弹性:多种存储级别,既可以存储在磁盘,亦可以存储在内存,或者一部分存储在磁盘,一部分存储在内存,由用户来决定;
    3、RDD 可以转换,可以通过并行的方式进行转换;
    4、RDD 具有容错性,失效后自动重构,根据血统的关系,找到其父亲RDD,根据计算关系进行重构。


    三、RDD 的 Transformation 和 Action 的区别

    1、Transformation 是 把一个 RDD 转换成一个新的 RDD,RDD[x]->RDD[y]
    2、Action 是把 一个 RDD 转发成最终的一个结果,或者进行保存到 hdfs 或者磁盘 RDD->Z
    3、Action 是一个触发器,程序只有遇到第一个Action 才会执行【惰性执行】


    四、3 行代码实现 spark word count

    val roWRdd = sc.textFile(args(1))

    val resultRdd = rowRdd.flatMap(line=>line.split("\s+")).map(word=>(word,1)).reduceByKey(_+_)

    resultRdd.saveAsTextFile(args[2])

    五、spark 的程序框架中 driver 和 executor的作用分别是什么?

    每一个 spark 作业都也有 1 个 driver 和 多个 executor 构成

    main 函数会跑在 driver 上,executor 是 具体干活的

    六、spark 的运行模式,local、standalone,Yarn

    通过 -- master 来指定

    (1) 本地模式(单机运行,不需要hadoop),测试用的

    (2) 独立模式(standalone,只能跑spark),是一种 spark 的集群,需要自己搭建 master/slave,一般不用

    (3) 运行在 YARN/mesos

    一般的中大型公司会把spark 运行在 yarn 上,yarn 又 分 yarn-client 和 yarn-cluster 2 种

    yarn-client 和 yarn-cluster 模式:

    yarn-client 模式是 driver 运行在集群之外,优点是可以打印日志,方便调试,缺点是没有容错,如果本地的程序挂掉了,或者误杀死了,整个作业就挂掉了

    yarn-cluster 模式是 driver 也有 yarn 的 nodemanager 来托管,优点是容错性较好,缺点是不便于调试

  • 相关阅读:
    操作系统_3:linux教程列表
    MongoEngine 查询语法
    Spark_1:教程索引
    软件需求十步走之阅读笔记03
    软件需求十步走之阅读笔记02
    软件需求十步走之阅读笔记01
    暑期学习四
    暑期学习三
    暑期学习二
    暑期学习一
  • 原文地址:https://www.cnblogs.com/oftenlin/p/8467128.html
Copyright © 2020-2023  润新知