Q1. Hadoop 有哪些组件?

(1)HDFS集群:负责海量数据的存储,集群中的角色主要有 NameNode / DataNode/SecondaryNameNode。

(2)YARN集群:负责海量数据运算时的资源调度,集群中的角色主要有 ResourceManager /NodeManager

(3)MapReduce:它其实是一个应用程序开发包。

Q2: 为什么spark要把操作分为transform和action

所有的transformation都是采用的懒策略,就是如果只是将transformation提交是不会执行计算的,计算只有在action被提交的时候才被触发。
因为要实现并行运算,转换阶段获得进行分区,获得RDD。在action再进行触发。

Q3: RDD、DataFrame、Dataset的区别和各自的优势

1、RDD、DataFrame、Dataset全都是spark平台下的分布式弹性数据集,为处理超大型数据提供便利

2、三者都有惰性机制,在进行创建、转换,如map方法时,不会立即执行,只有在遇到Action如foreach时,三者才会开始遍历运算

  • RDD:
    1、RDD一般和spark mlib同时使用
    2、RDD不支持sparksql操作

  • DataFrame:
    1、与RDD和Dataset不同,DataFrame每一行的类型固定为Row,只有通过解析才能获取各个字段的值。
    2、DataFrame与Dataset一般与spark ml同时使用;
    3、DataFrame与Dataset均支持sparksql的操作,比如select,groupby之类

Dataset中,每一行是什么类型是不一定的。DataFrame也可以叫Dataset[Row],每一行的类型是Row。

RDD转DataFrame:

import spark.implicits._
val testDF = rdd.map {line=>(line._1,line._2)}.toDF("col1","col2")

RDD转Dataset:

import spark.implicits._
case class Coltest(col1:String,col2:Int)extends Serializable //定义字段名和类型
val testDS = rdd.map {line=>Coltest(line._1,line._2)}.toDS

RDD就是一个分布式的无序的列表。使用RDD接口,因为RDD不了解其中存储的数据的具体结构,数据的结构对它而言是黑盒。

dataset整合了rdd和dataframe的优点,支持结构化和非结构化数据

Q4: spark中如何划分stage
一个Job会被拆分为多组Task,每组任务被称为一个Stage, 就像Map Stage, Reduce Stage。
map,filter为窄依赖,
groupbykey为宽依赖
遇到一个宽依赖就分一个stage

窄依赖
父RDD和子RDD partition之间的关系是一对一的。

宽依赖
父RDD与子RDD partition之间的关系是一对多。

Q5: Spark的shuffle机制
shuffle 是划分 DAG 中 stage 的标识,同时影响 Spark 执行速度的关键步骤.

宽依赖会发生 shuffle 操作。

Spark中的Shuffle是把一组无规则的数据尽量转换成一组具有一定规则的数据。
Spark中Shuffle的流程

  • (1) 首先每一个Mapper会根据Reducer的数量创建出相应的bucket,bucket的数量是M×R,其中M是Map的个数,R是Reduce的个数。
  • (2) 其次Mapper产生的结果会根据设置的partition算法填充到每个bucket中去。这里的partition算法是可以自定义的,当然默认的算法是根据key哈希到不同的bucket中去。
  • (3)当Reducer启动时,它会根据自己task的id和所依赖的Mapper的id从远端或是本地的block manager中取得相应的bucket作为Reducer的输入进行处理。

Q5: spark的内存管理

Q6: Spark的几种提交模式

Spark 的运行模式有 Local(也称单节点模式),Standalone(集群模式),Spark on Yarn(运行在Yarn上)

Local 模式是最简单的一种Spark运行方式,它采用单节点多线程(cpu)方式运行

Q7: hadoop的map-reduce编程模型

首先map task会从本地文件系统读取数据,转换成key-value形式的键值对集合

将键值对集合输入mapper进行业务处理过程,进行一个partition分区操作,默认使用的是hashpartitioner。

之后会对key进行进行sort排序,grouping分组操作将相同key的value合并分组输出。

之后进行一个combiner归约操作,其实就是一个本地段的reduce预处理,以减小后面shufle和reducer的工作量

reduce task会通过网络将各个数据收集进行reduce处理,最后将数据保存或者显示,结束整个job。

Q8: MapReduce实现矩阵乘法

Q9: SPARK 和MapReduce的区别:

一个 MapReduce 任务只能包含一次 Map 和一次 Reduce,计算完成之后,MapReduce 会将运算结果写回到磁盘中(更准确地说是分布式存储系统)供下次计算使用。

Spark 延续了MapReduce 的设计思路:对数据的计算也分为Map 和Reduce 两类。但不同的是,一个Spark 任务并不止包含一个Map 和一个Reduce,而是由一系列的Map、Reduce构成。这样,计算的中间结果可以高效地转给下一个计算步骤,提高算法性能。虽然Spark 的改进看似很小,但实验结果显示,它的算法性能相比MapReduce 提高了10~100 倍。


参考:

  1. blog mapreduce 和spark的区别;
  2. mapreduce 和spark的区别 作者:「已注销」;
  3. RDD,DataSet区别;
  4. blog 宽依赖;
  5. mapreduce实现;

Hadoop,Spark面试题汇总相关推荐

  1. spark 面试题汇总

    大数据面试题汇总 大数据面试题汇总 - 简书 spark 资源调优 1.列式存储和行式存储的区别 行存储,数据行存储,一个文件可表达一个二维表.适用于一般的业务场景如CSV文件,文本文件 因为这里的行 ...

  2. Spark面试题汇总及答案(推荐收藏)

    一.面试题 Spark 通常来说,Spark与MapReduce相比,Spark运行效率更高.请说明效率更高来源于Spark内置的哪些机制? hadoop和spark使用场景? spark如何保证宕机 ...

  3. hadoop+海量数据面试题汇总(一)

    hadoop面试题 Q1. Name the most common InputFormats defined in Hadoop? Which one is default ? Following  ...

  4. Spark面试题汇总大全

    1 RDD 简介 RDD是Spark最基本也是最根本的数据抽象,它具备像MapReduce等数据流模型的容错性,并且允许开发人员在大型集群上执行基于内存的计算.现有的数据流系统对两种应用的处理并不高效 ...

  5. Hadoop面试题汇总-20221031

    Hadoop面试题汇总 HDFS部分 1.请描述HDFS的写流程. 答: 首先由客户端向 NameNode 发起文件上传请求,NameNode 检查文件要上传的目录,并鉴权. 如果上传用户对此目录有权 ...

  6. Hadoop 和 Spark 知识点整理汇总

    文章目录 前言 一.LINUX 系统常用命令汇总 二.Hadoop 常用命令汇总 三.Hadoop 基本概念 1. Hadoop 特性 2. Hadoop 架构 2.1 Hadoop 集群 2.2 H ...

  7. Hadoop高频面试题(建议收藏)

    一.什么是Hadoop? 这是一个看着不起眼,实则"送命题"的典型.往往大家关于大数据的其他内容准备得非常充分,反倒问你什么是Hadoop却有点猝不及防,回答磕磕绊绊,给面试官的印 ...

  8. 阿里巴巴历年经典面试题汇总:Java岗

    这个系列计划收集几百份朋友和读者的面经,作者合集方便查看,各位有面经屯着可以联系我哦 本系列历史文章: 学姐百度实习面经 学姐,来挑战字节最牛部门 最强阿里巴巴历年经典面试题汇总:C++研发岗 关于我 ...

  9. 深圳公司大数据面试题汇总

    点击上方 "大数据肌肉猿"关注, 星标一起成长 后台回复[加群],进入高质量学习交流群 2021年大数据肌肉猿公众号奖励制度 相关阅读: 上海小公司大数据面试题汇总 背景 本文为# ...

最新文章

  1. cmd 修改文件属性
  2. 某程序员为让公司裁掉自己,消极怠工!故意旷工!但公司坚持不裁他,领导:给你发工资,就是不裁你!...
  3. Linux 登陆火星,占有率再超 Windows,NASA 还在 GitHub 发布源码教程
  4. NA-NP-IE系列实验之前三个实验小结
  5. import pymysql 没有模块_小白详细的 python 模块的运用
  6. android 断开蓝牙连接,如何在android中连接和断开扬声器蓝牙
  7. google浏览器插件 开发 获取页面指定数据_程序员必备的4款Chrome插件,编程神器...
  8. CCF NOI1017 价格查询
  9. 2018手机用户体验的11个设计趋势
  10. CentOS6.8下实现配置配额
  11. 通过ramdump 分析匿名页导致的TASK_UNINTERRUPTIBLE
  12. TCP网络通讯如何解决分包粘包问题
  13. LeNet网络分类MINST数据集,附详细代码及注解和B站视频讲解
  14. 60、在Visual Studio 2019 环境下,使用C#调用C++生成的dll实现yolov5的图片检测
  15. 【通信原理】揭开傅里叶级数与傅里叶变换的神秘面纱
  16. 元宇宙持续升温,金蝶推出数字员工破圈而来
  17. 微信小程序旋转动画,图片转动view旋转等
  18. linux pppd ip up 脚本,pppd拨号脚本配置
  19. 当代大学生的生活痛点
  20. MySQL WEEK函数介绍

热门文章

  1. JupyterLab最全详解,如果你还在使用Notebook,那你就out了!
  2. IDEA格式化代码快捷键失灵原因
  3. javascript事件列表详解
  4. python输入姓名专业班级_python自动生成姓名
  5. 计算机毕设(附源码)JAVA-SSM流浪猫狗救助站
  6. 知识小罐头03(idea+maven+部署war包到tomcat 上)
  7. LINUX开启ssh服务,报错:ssh: connect to host 192.168.0.101 port 22: Connection refused
  8. 阿里云DDoS 高防 IP、DDoS 防护包
  9. 源码推荐: 720度全景展示 for iOS
  10. 转换大师PDF转word