一、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 来托管,优点是容错性较好,缺点是不便于调试

Spark 常见问题集合的更多相关文章

  1. TPshop之邮箱注册配置教程--附加常见问题集合

    ​ 准备:企业邮箱(开启POP/SMTP功能) 一.步骤教程: 1.登录企业邮箱(QQ邮箱示例) QQ邮箱 POP3:pop.qq.com SMTP:smtp.qq.com SMTP端口号:25 邮箱 ...

  2. JMeter常见问题集合

    前言 本文内容仅仅是针对Jmeter的部分功能名词的介绍和解释,以及初学者不易理解的问题的整理.部分内容来自别人做的整理,为了更好地整理自己的思路,所以可耻的整理一下发到博客上. 标题[1-6]和[参 ...

  3. spark转换集合为RDD

    SparkContext可以通过parallelize把一个集合转换为RDD def main(args: Array[String]): Unit = { val conf = new SparkC ...

  4. Spark:scala集合转化为DS/DF

    scala集合转化为DS/DF case class TestPerson(name: String, age: Long, salary: Double) val tom = TestPerson( ...

  5. 【转】Spark常见问题汇总

    原文地址:https://my.oschina.net/tearsky/blog/629201 摘要: 1.Operation category READ is not supported in st ...

  6. Spark link集合

    Part1. 各种参数的意义及如何配置 Spark官方文档——Spark Configuration(Spark配置) http://www.cnblogs.com/vincent-hv/p/3316 ...

  7. 六、spark常见问题总结(转载)

    问题导读 1.当前集群的可用资源不能满足应用程序的需求,怎么解决? 2.内存里堆的东西太多了,有什么好办法吗?         1.WARN TaskSchedulerImpl: Initial jo ...

  8. Spark常见问题汇总

    原文地址:https://my.oschina.net/tearsky/blog/629201 摘要: 1.Operation category READ is not supported in st ...

  9. redis-cluster 集群搭建详细指南及常见问题集合

    只当个搬运工吧 搭建篇:https://www.cnblogs.com/mafly/p/redis_cluster.html  测试能用 常见问题: 1 redis操作key时出现以下错误 (erro ...

随机推荐

  1. Mybaits动态Sql

    什么是动态SQL? MyBatis的强大之处便是它的动态SQL,如果你使用JDBC那么在根据不同条件查询时,拼接SQL语句是多么的痛苦. 比如查询一个学生信息,可以根据学生的姓名,性别,班级,年龄,学 ...

  2. AppServ安装到一半卡住的问题

    今天在笔记本安装AppServ的时候,运行到Installing mysql service时就卡住不动了,因为之前在自己的台式电脑安装过AppServ,当时是一步成功的,所以觉得这个问题莫名其妙,因 ...

  3. Sequence Number

    1570: Sequence Number 时间限制: 1 Sec  内存限制: 1280 MB 题目描述 In Linear algebra, we have learned the definit ...

  4. Android编程学习过程中遇到的错误以及解决办法

    Android Studio遇到的问题 Android Studio一直提示右下角那个错误,Failed to open zip file.我是根据这位大佬的博客https://www.cnblogs ...

  5. HTML添加图像和超链接

    添加图像 <img src="图像的文件地址" alt="加载失败" height="350" width="350&quo ...

  6. Visual Studio 2017 error: Unable to start program, An operation is not legal in the current state

    For me, the solution (workaround) is to turn off JavaScript debugging on Chrome, which I believe is ...

  7. CA认证的原理和流程及https原理

    1.什么是CA证书. 看过一些博客,写的比较形象具体. ◇ 普通的介绍信 想必大伙儿都听说过介绍信的例子吧?假设 A 公司的张三先生要到 B 公司去拜访,但是 B 公司的所有人都不认识他,他咋办捏?常 ...

  8. fg、bg、jobs、&、nohup、ctrl+z、ctrl+c 命令

    fg.bg.jobs.&.nohup.ctrl+z.ctrl+c 命令 一.& 加在一个命令的最后,可以把这个命令放到后台执行,如 watch -n 10 sh test.sh &am ...

  9. 20165323 实验一 Java开发环境的熟悉

    一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:杨金川 学号:20165323 指导教师:娄嘉鹏 实验日期:2018年4月2日 实验时间:13:45 - 15:25 实验序号:一 实 ...

  10. C#算法 选择排序、冒泡排序、插入排序

    1.冒泡排序: 方法一: public static int[] MaoPao(int[] arr) { //执行多少次 for (int i = 0; i < arr.Length; i++) ...