大数据知识阶段总结(一)

一、RDD常用算子再次实验

一、RDD常用算子再次实验

1、准备20-30秒的自我介绍,有特色些的

2、画出你们的大数据架构,针对架构提问,如何做到精准一次、小文件规避?

  • MapReduce离线架构图,有哪些环节,什么到什么地方有哪些东西,为什么要这么选择这个架构;为什么要选择MapReduce或者spark;不要具体落地到某个业务场景中去;要搞成一个通用形态的架构,比如数据到hdfs采用什么格式,选择什么压缩方式?
  • 为什么要选择压缩,压缩带来的好处是什么,生产需要分清楚是什么样的场景?
  • 生产上小文件的规避,为什么hadoop不怕数据量大,怕的是数据量小;说清楚hadoop的架构,Hadoop的元数据存储; -->小文件会导致namenode管理不过来;
  • hdfs中的路径是否占用元数据的内存?占的话,占多少内存?答:会占内存,不同版本占的内存还不一样。
  • 小文件会产生什么样的问题,对生产上的集群会产生什么样的结果?

3、画出Yarn的工作流程?

  • Mapreduce在yarn的执行流程、Spark在yarn上得执行流程、Flink在yarn的执行流程、Storm在yarn上的执行流程

4、你们使用的Spark运行模式?

  • local[]、local[*]、K8s

5、Yarn的调度有哪几种?你们用的是哪几种?如果申请的资源,在yarn的队列里资源不够,怎么处理?

6、Spark用的版本?Spark内存管理,画出来,给一个案例,executor要申请300内存的过程?

  • Spark2.4.2版本,需要往前说一点,新特性不稳定;

假设你们公司使用的是CDH集群:建议Spark使用社区版本,在调度机上部署我们需要的Spark版本,Impala才是cloudera公司的亲儿子;在CM中没有安装Spark,外挂了一个Spark,Spark on Yarn我们需要监控什么,监控yarn的8088端口上看;

  • 自行百度CM自带的Spark如何替换成自己编译的Spark?

7、HDFS高可用采用哪种方式?NN落盘的两个文件叫什么?主备NN实现高可用的流程?

  • Hadoop高级班的课程

8、HDFS NN的内存管理:

  • 与小文件的处理息息相关,美团面试的一篇文章;

9、现场看一个生产上的案例:HDFS block丢失,怎么办?

10、查看hdfs上一个目录下的文件数和空间大小的命令?

  • hdfs dfs -du -sh 空间大小

11、Scala中left和right join的区别?

  • 都讲了如何使用方法打印出来内容?

12、说说你对Hadoop的认识?

  • 广义、狭义上的hadoop;说清楚hdfs的架构,每个东西的职责;HadoopHA架构;Yarn、Yarn的HA,小文件的产生原因,小文件的处理。

13、Hadoop1.X和hadoop2.x的区别?
在1中,都是单点的,一出问题,整个集群全挂了;

14、Hadoop生产上用什么格式文件和压缩?压缩?

15、reduceByKey和groupByKey的区别?

16、宽依赖和窄依赖?

17、如何保证yarn的高可用,yarn在挂掉后,未执行的作业应该怎么处理?

18、小文件合并的方案?

  • 归档

19、说几个Spark项目开发中遇到的问题,和解决的方案?

20、每天的数据量多少?生产集群规模有多大?

  • 可以说一天是200-300g左右的数据量,按照时间、业务线来计算。

21、阐述一下最近开发的项目,以及担任的角色位置?

  • 大数据开发的项目是商用还是自研的平台

22、数据倾斜的场景和解决方案?

23、Hive执行哪些操作会触发MR?哪些操作不会触发MR?

  • 有个参数能够控制哪些参数触发MR,聚合计算肯定触发MR,如count

24、如何处理数据倾斜?

25、RDD的五大特性?

  • 务必要掌握的,需要详细了解

26、Scala的隐式转换和使用?

27、JVM运行时的数据区域?

28、mr的计算流程?详细到什么程度,inputsplit怎么拆文件,拆文件的时候有没有分片?

  • LineRecordReader.java

29、Hive和关系型数据的关系,作对比?

  • 关系型数据库的延时性较低,Hive是做离线处理的

30、Hadoop有哪些优化,调优点?

31、阐述对Hive分区、分桶的理解?

32、比如1条记录10个字节X天数X副本数 = xxx;xxx乘以业务线=…;N台机器

33、hive和hdfs文件之间的联系?

34、Hive的实现原理?

35、spark和mapreduce的区别?

36、spark对于oom从什么角度下手调整?
从JVM的底层去说

37、有10个文件,每个文件1G,每个文件的每一行存放的都是用户的query,每个文件的query都可能重复。要求你按照query的频度排序

38、有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M。返回频数最高的100个词

39、编程题B:

1.年/月/日/xxx.jpg , 文件夹以 这个形式组织。
2.新建文件夹,将所有jpg文件拷贝到该文件夹,更名为 年_月_日_xxx.jpg。
3.监控文件夹,如果有增加的jpg文件,自动同步到新文件夹。
4.jpg文件只增加不删除。

40、除了spark之外的大数据处理框架?
flink

41、StringBuilder和StringBuffer的区别?HashMap和HashTable
线程安全和线程不安全

42、二叉树的数据结构是什么样的?

43、你了解Hive的元数据管理?Hive有哪些原理性的了解?AST和Operator Tree的了解?

44、你觉得join该怎么优化?

  • mapjoin,大表和大表的join又该怎么优化,加桶

45、Hive的数据倾斜,Hive能加索引么?可以但是没必要

46、Spark-Core中的flatMap?

47、小文件的合并?

  • 归档

48、最近一个项目的架构,你所负责的模块

原理性的东西:SQL语句是如何转换成MapReduce执行的?

  • HIve是一个基于Hadoop的数据仓库系统,在各大公司都有广泛的应用,美团数据仓库是基于Hive的搭建,每天执行N次的Hive ETL计算流程,负责每天数百G的数据存储和分析,Hive的稳定性和性能对我们的数据分析是非常关键的。

MapReduce实现SQL操作的基本原理:

一个普通Join的实现原理:

select u.name,o.orderid from order o join user u on o.oid=u.uid;

在map的输出value中为不同的数据打上不同的tag标记,在reduce阶段根据tag判断数据来源;

a join b on a.uid=b.uid;join会存在shuffle的情况;

大数据知识阶段总结(一)_第1张图片

groupBy的实现原理:

将groupBy的字段组合为map的输出的key值,利用MapReduce的排序,在reduce阶段保存LastKey区分不同的key。MapReduce的过程如下(这里只是说明reducedaunt的非hasg聚合过程)

select rank,level,count(*) from score group by rank,level;
大数据知识阶段总结(一)_第2张图片

不管是join还是group by 根据他们的条件进行shuffle;再利用mr的shuffle机制,相同的key分发到一个reduce上去,最终做我们的聚合操作。

distinct的实现原理:

explain:
The Abstract Syntax Tree for the query
The dependencies between the different stages of the plan
The description of each of the stages

Hive使用Antlr实现SQL的词法和语法解析,Antlr是一种语言识别工具,可以用来构造领域语言。把SQL字符串转换成AST

抽象语法树:比较复杂

Queryblock:

再把Queryblock转换成操作符:TableScanoperator

Join shuffle:根据一定的规则进行map端数据分发到reduce上去,某一个或者某几个规则所对应的的数据量比较大

木桶原理:一个木桶所能装的水是由最短的板决定的;同理,一个作业的性能就取决于里面job最慢的那个,短板原理。

假设第一个中有1亿条数据,第二个中只有2条,就是数据扎堆在某个key上;存在两种情况:能跑出来,但是比较慢;2、不能跑出来:OOM情况

在使用Hive、MapReduce、Spark进行离线处理时的注意事项:
1)、input
格式问题(存储)

2)、temp
计算要快

3)、output
输出格式问题

ETL过后的一张大宽表,不可能说所有的SQL都去查询这张大宽表;如果两张SQL表的语句类似,需要合理利用中间结果集,需要减轻读大宽表的性能;从语法层面:set xxx = yyy;

reduce个数设置 ==>决定了输出的文件个数,reduce个数越多会导致小文件很多,reduce个数少又会导致跑的比较慢;要自己进行权衡,结合数据量和公司资源的情况。

你可能感兴趣的:(大数据阶段性总结)