大数据开发面经

Posted 一加六

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据开发面经相关的知识,希望对你有一定的参考价值。

hadoop job执行流程


dataInput–>split–>Mapper–>Combine–>(产出临时数据–>Partition–>Sort–>Reducer–>最终数据。

Mapper阶段

Mapper的数量由输入的大小和个数决定。在默认情况下,最终input占据了多少block,就应该启动多少个Mapper。500M的数据分成四个block(128M*4)就是4个mapper。

分区

partition默认分区 分区器是HashPartitioner

Reduce

reduce的数量可以直接在程序设置job.setNumReduceTasks属性设置
文件中配置根据任务需求
1.调整reduce个数方法一
(1)每个Reduce处理的数据量默认是256MB
hive.exec.reducers.bytes.per.reducer=256000000
(2)每个任务最大的reduce数,默认为1009
hive.exec.reducers.max=1009
(3)计算reducer数的公式
N=min(参数2,总输入数据量/参数1)
2.调整reduce个数方法二
在hadoop的mapred-default.xml文件中修改
设置每个job的Reduce个数
set mapreduce.job.reduces = 15;
3.reduce个数并不是越多越好
1)过多的启动和初始化reduce也会消耗时间和资源;
2)另外,有多少个reduce,就会有多少个输出文件,如果生成了很多个小文件,那么如果这些小文件作为下一个任务的输入,则也会出现小文件过多的问题;
在设置reduce个数的时候也需要考虑这两个原则:处理大数据量利用合适的reduce数;使单个reduce任务处理数据量大小要合适;

提了一下归并排序

reduce阶段就是对排好序分区数据进行全排序就是归并排序。

spark和hadoop(mapreduce)区别

mapreduce经历map阶段和reduce,且只有map完才能reduce,map阶段溢写将kv数据写到磁盘(耗时),reduce阶段再将map阶段写道磁盘的数据读取再归并排序写道磁盘
spark利用了DAG有向无环图,利用RDD(弹性分布式数据集)将需要反复用到的数据给 Cache 到内存中,减少数据加载耗时,对迭代次数多的数据友好。

hive外部表和内部表区别

外部表是hdfs文件的映射不储存数据,删除外部表数据部分不会删除,
内部表储存数据,删除内部表数据随之删除

sql语句解析

写一个sql

table1
city_id 城市
level_id 业务线
gmv 销售额
需求输出一个表table2 字段city_id,level_id,gmv
可查询每个城市gmv,每个业务线gmv

select city,null,sum(gmv)
from test
group by city
union
select null,level,sum(gmv)
from test
group by level

以上是关于大数据开发面经的主要内容,如果未能解决你的问题,请参考以下文章

大数据开发面经

面经 大数据开发实习 深信服

开发人员必学!6年老Java面经总结

9.13面经

面经1:字节跳动:22年实习生大数据开发面试(一面凉经)

面经数据研发一面-蚂蚁集团暑期实习