一、RDD常用算子再次实验
1、准备20-30秒的自我介绍,有特色些的
2、画出你们的大数据架构,针对架构提问,如何做到精准一次、小文件规避?
3、画出Yarn的工作流程?
4、你们使用的Spark运行模式?
5、Yarn的调度有哪几种?你们用的是哪几种?如果申请的资源,在yarn的队列里资源不够,怎么处理?
6、Spark用的版本?Spark内存管理,画出来,给一个案例,executor要申请300内存的过程?
假设你们公司使用的是CDH集群:建议Spark使用社区版本,在调度机上部署我们需要的Spark版本,Impala才是cloudera公司的亲儿子;在CM中没有安装Spark,外挂了一个Spark,Spark on Yarn我们需要监控什么,监控yarn的8088端口上看;
7、HDFS高可用采用哪种方式?NN落盘的两个文件叫什么?主备NN实现高可用的流程?
8、HDFS NN的内存管理:
9、现场看一个生产上的案例:HDFS block丢失,怎么办?
10、查看hdfs上一个目录下的文件数和空间大小的命令?
11、Scala中left和right join的区别?
12、说说你对Hadoop的认识?
13、Hadoop1.X和hadoop2.x的区别?
在1中,都是单点的,一出问题,整个集群全挂了;
14、Hadoop生产上用什么格式文件和压缩?压缩?
15、reduceByKey和groupByKey的区别?
16、宽依赖和窄依赖?
17、如何保证yarn的高可用,yarn在挂掉后,未执行的作业应该怎么处理?
18、小文件合并的方案?
19、说几个Spark项目开发中遇到的问题,和解决的方案?
20、每天的数据量多少?生产集群规模有多大?
21、阐述一下最近开发的项目,以及担任的角色位置?
22、数据倾斜的场景和解决方案?
23、Hive执行哪些操作会触发MR?哪些操作不会触发MR?
24、如何处理数据倾斜?
25、RDD的五大特性?
26、Scala的隐式转换和使用?
27、JVM运行时的数据区域?
28、mr的计算流程?详细到什么程度,inputsplit怎么拆文件,拆文件的时候有没有分片?
29、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该怎么优化?
45、Hive的数据倾斜,Hive能加索引么?可以但是没必要
46、Spark-Core中的flatMap?
47、小文件的合并?
48、最近一个项目的架构,你所负责的模块
原理性的东西:SQL语句是如何转换成MapReduce执行的?
MapReduce实现SQL操作的基本原理:
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的情况;
将groupBy的字段组合为map的输出的key值,利用MapReduce的排序,在reduce阶段保存LastKey区分不同的key。MapReduce的过程如下(这里只是说明reducedaunt的非hasg聚合过程)
select rank,level,count(*) from score group by rank,level;
不管是join还是group by 根据他们的条件进行shuffle;再利用mr的shuffle机制,相同的key分发到一个reduce上去,最终做我们的聚合操作。
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个数少又会导致跑的比较慢;要自己进行权衡,结合数据量和公司资源的情况。