面试规律总结
Hive的面试题:
1.hive优化?
a. 好的模型设计。b. 解决数据倾斜问题。c. 减少job数。
d. 设置合理的map reduce的task数,能有效提升性能。(比如,10w+级别的计算,用160个reduce,那是相当的浪费,1个足够)。
e. 自己动手写sql解决数据倾斜问题是个不错的选择。set hive.groupby.skewindata=true;这是通用的算法优化,但算法优化总是漠视业务,习惯性提供通用的解决方法。 Etl开发人员更了解业务,更了解数据,所以通过业务逻辑解决倾斜的方法往往更精确,更有效。
f. 对count(distinct)采取漠视的方法,尤其数据大的时候很容易产生倾斜问题.
g. 对小文件进行合并,是提高调度效率的方法。
h. 优化时把握整体,单个作业最优不如整体最优。
2.hive建表语句?
create table tab_name(id int,name string) row format delimited fields terminated by '\t';
3.hive底层如何实现?
4.hive的数据类型?
Hive支持两种数据类型,一类叫原子数据类型(TINYINT,SMALLINT,INT,BIGINT,BOOLEAN,FLOAT,DOUBLE,STRING,BINARY,TIMESTAMP,DECIMAL,CHAR,VARCHAR,DATE。),一类叫复杂数据类型
5.hive创建表的几种方式?
直接建表法,查询建表法,like建表法
6.介绍下hive的udf和udaf都写过哪些代码?
用户定义函数(user-defined function)UDF;
用户定义聚集函数(user-defined aggregate function,UDAF);
用户定义表生成函数(user-defined table-generating function,UDTF)。
UDF操作作用于单个数据行,并且产生一个数据行作为输出。大多数函数都属于这一类(比如数学函数和字符串函数)。
UDAF 接受多个输入数据行,并产生一个输出数据行。像COUNT和MAX这样的函数就是聚集函数。
UDTF 操作作用于单个数据行,并且产生多个数据行-------一个表作为输出。lateral view explore()
简单来说:UDF:返回对应值,一对一。UDAF:返回聚类值,多对一。UDTF:返回拆分值,一对多
7.hive用哪个版本?
8.hive窗口函数?
9.写sql:1月100,2月200,3月100,4月200.统计如下效果:1月100,2月300,3月500,4月600(就是每月统计一次前面所有的月的总额)加个over,就可以orderby与partitionby类似?
10.用hive时,怎么合并小文件?
可以通过合并Map和Reduce的结果文件来消除这样的影响。
用于设置合并属性的参数有:
是否合并Map输出文件:hive.merge.mapfiles=true(默认值为真)
是否合并Reduce 端输出文件:hive.merge.mapredfiles=false(默认值为假)
合并文件的大小:hive.merge.size.per.task=256*1000*1000(默认值为 256000000)
11.列出了三张关联的表,其中一张表有点击数量的统计。算一天的所有点击数量写出hivesql?
12.hive左右连接?
左连接 left join
假设:A表和B表,分别有key, value字段。
语法:A left join B on 连接条件 where 筛选条件
示例:select * from A left join B on A.id = B.id where A.value >= 2
释义:以A表为准,把B表中id相同的数据拼接到A表中该id所在的行,并筛选出A中value>=2的部分。注意:此时数据基准为left join关键字左边的表
右连接 right join
语法:B left join A on 连接条件 where 筛选条件
示例:select * from B right join A on A.id = B.id where A.value >= 2
释义:以A表为准,把B表中id相同的数据拼接到A表中该id所在的行,并筛选出A中value>=2的部分。注意:此时数据基准为right join 右边的表
内连接 inner join
语法:A inner join B on 连接条件 where 筛选条件
示例:select * from A inner join B on A.id = B.id where A.value >= 2
释义:选择A,B中相同id的数据,并筛选出A中value>=2的部分
注意:此时没有基准表,类似于求A,B的交集
连接多张表
其实语法很类似,以左连接为例:
A left join B on A.id = B.id left join C on A.id = C.id
注意这么做以后数据拼接的比较慢,注意开销
13.hive使用的三种形式?
CLI命令行,HWI(hie web interface)浏览器 以及 Thrift客户端连接方式
14.hive分区?
15.hive的工作原理?
流程步骤为:
a.用户提交查询等任务给Driver。
b.编译器获得该用户的任务Plan。
c.编译器Compiler根据用户任务去MetaStore中获取需要的Hive的元数据信息。
d.编译器Compiler得到元数据信息,对任务进行编译,先将HiveQL转换为抽象语法树,然后将抽象语法树转换成查询块,将查询块转化为逻辑的查询计划,重写逻辑查询计划,将逻辑计划转
化为物理的计划(MapReduce), 最后选择最佳的策略。
e.将最终的计划提交给Driver。
f.Driver将计划Plan转交给ExecutionEngine去执行,获取元数据信息,提交给JobTracker或者SourceManager执行该任务,任务会直接读取HDFS中文件进行相应的操作。
g.获取执行的结果。
h.取得并返回执行结果。
16.hive中的rlike是怎么回事,哪里用到?
17.sql优化
18.hive怎么解决数据倾斜?
数据倾斜主要表现在,map /reduce程序执行时,reduce节点大部分执行完毕,但是有一个或者几个reduce节点运行很慢,导致整个程序的处理时间很长,
这是因为某一个key的条数比其他key多很多(有时是百倍或者千倍之多),这条key所在的reduce节点所处理的数据量比其他节点就大很多,从而导致某几个节点迟迟运行不完。
数据倾斜可能会发生在group过程和join过程。
19.几道sql问题,联表查,exists,group by保留全部字段?
20.不用hadoop自己设计方案实现TB级别数据量,数据倾斜问题怎么解决?
21.hive执行sql时的工作流程?
22.hive的默认分隔符?
23.hive rank(以某个字段分组,在组内排序,找出各组的TOP k)?
24.hine怎么优化?HIVE常用的几个配置是哪些?
25.hive什么时候不能用combiner?
26.添加自定义UDF的时候都是临时的,怎么永久添加?
27.hive动态分区?
28.写一个表的查询的sql语句?
Hbase的面试题:
1.hbase有哪些组件,以及hbase里面的buffer?
2.hbase rowkey的设计?
3.hbase优化?
4.hbase数据插入优化?
5.hbase如何优化的?
6.hbase的writebuffer?
7.hbase对于复杂表如何设计rowkey?
8.Hbase执行过程?
9.Hbase优化?
10.关系型数据库是怎么把数据导出到Hbase里的?
11.hbase优化问题?
12.hbase的性能优化?
13.Hbase解决了什么问题?
14.Hbase的相对多些,基础和优化?
15.hbase最主要的特点是什么?
16.hbase部署?
17.和hbase同样功能的分布式数据库了解多少?
18.HBase的存储原理?
19.说说hbase的API都有哪些filter?
20.问我major compack设置为手动会出现什么问题?
21.mongoDB和hbase的区别?
22.Hbase的表设计还有优化?
关于yarn的面试题:
1.介绍下yarn?
2.yarn有哪些组件,调度算法?
3.说说yarn工作流程?
4.yarn优缺点?
HDFS的面试题:
1.hadoop写文件流程?
2.hdfs了解多少?读写流程,架构?
3.写流程中备份三,其中一个写失败了怎么弄的?
4.hdfs HA(过程,启动流程)?
5.hadoop的优化?
7.hadoop有哪些组件?
8.hadoop数据倾斜问题?
9.hdfs存储的是什么类型?
10.Hadoop1.x和2.x的差别?
11.hadoop中都每个配置文件都配置了什么吧?
12.Hadoop集群的优化?
13.hdfs的实现?
14.hdfs文件创建--工作流程?
15.hdfs异步读?--参考博客:http://blog.csdn.net/androidlushangderen/article/details/52452215
16.hdfs api源码解答:文件创建工作流程?
17.hdfs api新特性?
18.hadoop中一个job提交到resourcemanager之后,resourcemanager会生成一个什么样的容器来放这个job?
19.hadoop集群中的某个block不能copy数据到其他节点,怎么办?如果并发量大了,有多个block不能copy数据,怎么办?
20.Zookeeper怎么实现Hadoop的高可用?
21.Hadoop体系?
22.MR的过程?
数据结构和算法的面试题:
1.数据结构和算法
Zookeeper的面试题:
1.Zookeeper的工作原理。过半机制,节点为什么是单数台?
2.zookeeper有哪些组件?
3.zookeeper的机制等,各组件的原理?
4.Zookeeper到底是干嘛的?
5.zookeeper的二次开发?
6.Zookeeper实现分布式锁用哪个jar包,以及写mr、spark作业程序具体应该用哪些包?
Kafka的面试题:
1.怎么保证kafka传过来的数据之正确的处理一次?
2.flume和kafka什么区别?
3.kafka为什么要分多个partition?
4.kafka和spark Streaming 的整合?
5.怎么保证数据kafka里的数据安全?
6.kafka的key为null可以吗?
7.怎么往kafka集群写数据的?
8.kafka用到的什么设计模式?
发布订阅模式
9.kafka的原理?如果生产数据是消费数据100倍,该如何处理?
10.有很多消息队列技术,为什么选择kafka?----kafka的特性方面回答
11.kafka为什么可以支持那么大的吞吐量,怎么实现的?
Flume的面试题:
1.flume什么时候用?
分布式的数据收集
2.flume处理日志重复问题?
3.flume监控问题?自身支持ganlia集群监控
4.flume是如何拿数据的?
5.flume是如何导入数据到kafka?具体?Kafka Sink channnel里面配置相应的topic
6.flume的实时采集数据和定时采集数据的方法?tail -f;Spooling
7.主要问Flume如何使用?整合Flume+Storm和整合Flume+Kafka
Spark的面试题:
1.spark优化?
架构参数优化:shuffle,内存管理,推测执行,数据本地化:HDFS的DataNode和Spark Worker共享一台机器
代码层面:并行度--调整finalRDD partition;缓存机制的选择--CPU使用和内存使用的权衡:checkpoint;算子的使用和选择-groupbykey,map vs mappartitions等,使用广播变量,累加器等; 序列化:压缩,存储格式的选择
数据倾斜:重写partition规则,抽样看数据的分布,结合具体的业务
架构的选择:统一使用yarn结合hadoop,还是使用自己的standalone计算框架
2.spark源码-DAG-Task--任务调度部分?
spark是粗粒度的资源申请,任务调度:sparkContext-DAGSheduler切分stage,TaskSheduler发送任务到申请好的Executor中的线程池执行
3.submit相关配置?一般指定多大的资源?
submit --master/yarn --class --deploy model clster/client
Executor cores 默认一个Executor 1 core,lg内存,1G,2--3个task
4.写完spark程序如何知道多少个task?(即资源如何调配的)
看你的并行度的设置,block的数量,web UI
5.spark和mr性能是不是差别很多?
一般来说Spark比Hadoop快:
原因:
a.MR有大量的磁盘io,溢写等,Spark则可以基于内存缓存机制计算
b.MR和Spark的资源申请的方式:粗粒度和细粒度的区别
c.DAG计算引擎中的pipeline计算模型,MR就是MapReduce模型
d.算子的丰富程度
使用场景:大于pb级别的数据量一般选择MR
生态的区别:Spark一站式的大数据处理平台,Hadoop还需要和其他的整合,升级,版本兼容等一堆问题,CDH版本如果需要更多的功能需要考虑成本的问题
6.spark任务yarn执行流程(client)?
7.spark运行在Yarn上流程(cluster)?
使用场景的区别:基于yarn的好处,兼容hadoop,一套计算框架,能好的维护
8.spark调优?
9.shuffle主要介绍下?
shuffle发生?---shuffle的过程---shuffle实现的选择---shuffle的优化
10.宽窄依赖?
看父RDD和子RR的关系,除了父RDD和子RDD一对多外,其他的都是窄依赖
11.shuffle怎么落地的?
shuffle的实现类型:hash Shuffle还是sortShuffle?Shuffle数据落地?
12.Spark RDD 是什么?
弹性分布式数据集---源码的五大特性-----RDD的计算模型:pipeline计算模型
13.Spark算子?
map,flatmap,filter,foreach,first,take(n),join,cogroup,reducebykey,sortBy,distinct,mapPartition等等
14.spark 优势?
一栈式大数据处理平台,灵活的编程模型,相比MR速度快
15.spark on yarn 和mapreduce中yarn有什么区别?
没什么区别,yarn就是一个资源管理框架
16.spark原理?
pipeline计算模型+任务调度和资源调度
17.spark运行的job在哪里可以看到?
Driver进程所在的节点;web UI
18.如何监测集群中cpu,内存的使用情况,比如说:有一个spark特别占资源,特别慢,怎么排查这种情况?
spark WEB UI;集群监控工具,找到taskid
20.rdd的处理过程是什么,不要说概念?
画切分Stage,pipeline的计算模型的图
21.spark的工作流程?
Spark的资源调度和任务调度+pipeline的计算模型
22.SparkSQL和Spark架构,运行流程图,Spark运行的两种方式。常用的Spark函数有哪些?
spark架构图+运行流程图(资源的调度+任务调度)+Spark client和SparkCluster+transformation算子+action算子+持久化操作算子
23.Spark了解多少?
spark生态-架构-运行模式+任务调度和资源调度
24:GroupByKey的作用?
根据key分组
Spark Sql的面试题:
1.sparkSQL介绍下(RDD、DataFrame)
关于Spark Streaming的面试题:
2.sparkStreaming怎么跟kafka对接的,数据拉取到哪里?
3.日流量10G没必要sparkstreaming?
4.spark streaming 例子。问维护做过没?说sparkStreaming的维护成本很高。 我告诉他是的,比如说可能会丢数据,wal会慢。这一块儿不是我维护。没细问。
5.spark streming调优?
6.sparkstreaming原理?
7.spark Streaming介绍下?和Storm比较?
8.spark Streaming某一个task挂了,怎么解决的?
9.spark streaming?spark的相关算法,比如推荐系统需要什么算法?
10.park streaming工作流程?
11.sparkstreanming没有问题,但无法计算,怎么排查问题?
12.storm和spark streaming的区别?
Redis面试题:
1.redis用来做什么?
模型等,频繁调用的放在redis中,取其快
2.redis的常用数据类型?
3.redis工作原理?
4.redis缓存机制?
5.redis支持的最大数据量是多少?redis集群下怎么从某一台集群查key-value。
关于项目的面试题:
1.项目流程,专网日志分析项目的数据流程?
2.一个work给分配多少资源?怎么分配的,预先分配吗?
3.怎么收集的数据?
4.项目都负责哪一块?
5.推荐系统建模周期,这期间遇到过什么问题?
6.sample正负例样本表,标签是怎么打的?
7.数据来源是什么?
8.标签值是不是不多?(正负例样本表是标签+-1),他指的标签是维度
10.讲项目?
13.还有服务器多少台?
14.介绍最近的项目?遇到的问题?
15.什么是协同过滤,协同过滤的值怎么求得,
16.具体的pv/uv量,
17.训练数据量,
18.有多少个维度,
19.特征怎么选取的,
20.模型效果怎么评估
21.另一个项目问到了数据怎么收集的?
22.你具体负责哪一块?
23.对自己每个项目做讲解,项目中的疑难点?
24.服务器如何选择?项目服务器多少台?namenode多少台?dotanode多少台?kafka多少台?yarn多少台?
25.问我数据量多大问题,和mapreduce运行时间问题,由于我实现没有准备好,回答不好,订单的我回答50G,微博我回答1TB,mapreduce运行时间我回答 1~2小时?
26.推荐系统矩阵列表是怎么实现的?
27.日志处理具体怎么写的mapreduce流程?
28.storm项目中遇到了那些问题,怎么解决?
29.用到hbase的项目提问,实际如何处理的,java是怎么调用的,数据太多怎么优化,所设定的数据要处理多久?
30.如何搭建实时日志分析平台,需要那些条件?
31.从设计架构,业务实现,为什么这样做,性能如何,等等问题,很多地方深入到项目中实现细节?
32.训练集和测试集的比例多大?
33.描述一下逻辑回归的特点?
34.说说项目中用到的框架?
35.项目中的业务简单说一下?
36.两个项目专网日志分析和电表集中器,分别用了什么架构,怎么进行搭建?有几台flume机器,怎么从其他系统获取的数据,kafka几台?
kafka吞吐量10万条信息每秒,我们用了2台,接着问那一台kafka挂了呢?
37.没搞过kafka高可用,说多台kafka也是坑,到处都是陷阱。
38.项目中负责那一块?
39.storm处理完数据写入哪里?回答hdfs和hbase 又问storm怎么写入hdfs和hbase的具体说一下。
40.线性回归的原理,什么场景适合线性回归,举两个例子说下。
41.模型生成完以后是怎么知道预测的好坏的?
42.对了还问了storm处理的时候利用率怎么样?怎么检测storm没有问题的,程序跑通就一定没有问题吗?反正我也不知道怎么回答了,不知道大数据有没有测试人员,怎么测试改需求?
43.怎么从其他系统获取的数据,回答flume+kafka+storm这样的流程。
44.接着问flume有几台,通过什么协议获取的数据?
45.flume收集信息的时候遇到了什么问题?怎么解决的?
46.kafka几台,我回答一台,因为kafka最大支持吞吐量10万条每秒,接着问kafka传输的实际吞吐量每秒多少条?一直追问这个,我没遇到过真不知道怎么回答,kafka传输数据的时候遇到什么错误吗?怎么解决的?又是坑,说没有遇到过。接着又问你们kafka处理的时候都没遇到过什么问题吗?弄得我无言以对,沉默。
47.日志表中的数据使用hive怎么实现,mapreduce怎么实现?
48.项目中使用的技术,解决了什么问题?
49.flume在实际项目怎么进行数据采集?
50.感觉自己工作中做的最好的是哪一块?
54:关于集群数据量,运行时间的参考
刚才面试面试官问了你们每天有多少数据,
用了多少台机器,
一般根据你写的项目,每天产生的数据量规划,假如一天数据量100g
一般集群规划是年数据的3倍,还有hadoop集群3倍冗余
假如一台服务器磁盘6T
100G*365*3*3/6*1024g=53.4 这样的集群(一般在60台左右的服务器)
机器的配置,
配置cpu找一个稍微老一点至强cpu
内存每台16g或32g
每天运行多久
一般一个作业10分钟到-几个小时不等
一般一个作业也就几十分钟。。运行几天的很少
有多少个MR,
30-50个左右
一般公司很多个作业。。
你可以你们部门的,其他你不清楚就别说,比如数据清洗的(这里面就有很多作业了,去掉不完整数据,数据格式转换,数据字段连接,字段抽取等等),相应你简历上写的项目,,很多模板都有作业。。你细化一下
比如推荐的作业,统计汇总的作业,用户定位的作业,
遇到bug怎么解决,上线之后的bug怎么解决,
一般在测试阶段就那部分线上数据测试过了。。
如果在线上还有问题
一般kill掉作业。。当然可以做mapreduce里面设计日志输出到单独文件,,
根据hadoop异常日志出什么问题了。当然hadoop每台都会有日志,当然hadoop自己的日子很庞大,可以采用chukwa(大概看看干什么的就行,就是收集方便查看hadoop本身的日志)处理,
然后分析作业代码。。
有没有关心过运行时候的状态,
mapreduce运行状态,hadoop有监控页面
当然也可以自己写监控程序,mapreduce有作业监听方法,可以获取进度。
http://m.blog.csdn.net/blog/u014313009/38045435
其他面试题:
1.各个软件的版本号?
2.spark程序用什么语言写的?
3.用Python写的什么?
4.标签数据库?
5.数据清洗流程(源,过程)?
6.nginx了解吗?
7.数据清洗怎么发现的?
8.清洗完后面都有哪些要求?
9.DSL和SQL用哪个比较多?
10.为什么会发生数据倾斜,你怎么知道发生数据倾斜的?
11.事物方面比较详细说下?
12.hadoop的生态圈?
13.会配置本地yum源码?
14.是否用过maven?
15.谈谈redis?
16.平实喜欢关注什么关键技术,论坛?
17.用到哪些全文检索的技术?
18.免密码登陆如何设置?
19.linux命令,都是平时用到的命令?
20.是否配过yum本地源?
21.集群多大 每天流量多少?
22.集群中定时任务是怎么做的?
32.Mysql主从复制一段时间后突然数据同步不了怎么办?
33.说说你的都用了naginx 中都用了那些模块在什么条件下使用的?
34.Lvs解决什么 然后就是画图说负载的问题mapreduce的执行过程是否带过团队?
35.ha原理?
36.给与用户的每天通话数据,如何在五天内给出一个可行能够评判用户信任度的系统
43.项目业务场景,问题,架构,人员分配,项目中遇到问题,规模等等?
44.聊聊SOA,实现技术,最基本的特征啥的?
45.说说kettle的简单流程?
46.谈谈lvs和keepalived怎么用的?跟其他负载均衡的区别?什么缺点?具体用在什么情景?
知不知道另外一种负载均衡的技术,比lvs要好,能同时作用与第四层和第七层。还说lvs一般只做DB的负载均衡
47.oracle的优化,可以自主选择索引的那种?
48.面试官问我以前的企业有多少人怎么说?问组内有多少人怎么说?问以前项目的数据量怎么说?问集群节点数量怎么说等等一系列比较菜鸟的问题,
这些问题说重要倒不很重要,但是说不重要的话如果人家突然问到,你胡乱回答却容易闹笑话,让对方瞬间揭穿你毫无经验的事实。
所以我的回答一般都是说用的测试数据,项目上线时候我本人没有参与。也许这么回答不是那么精妙,但是站我自己的角度感到最起码没有大的问题。
(比如笔者第一家面试的时候,人家问我当初写的mapreduce程序运行一次多久,我说2小时。。。然后对方表示很震惊,问我多大数据量,我顿时碉堡了,
感觉说多少都不合适,于是就找个机会岔开了一下话题,我说您是想问我mapreduce调优这一块吧?不等对方回答,我赶紧把背好mapreduce调优说了一下,
来回胡扯了几句,结果竟然混过去了对方最后没再追问,还给了offer。。。第2家开始,所有面试问到运行了几分钟时候我一般会回答1到3分钟之间,
项目用的测试数据,所以数据不大,节点的话就依照平时咱虚拟机装的节点规模稍微大一点
49.问了下openstack,回答openstack的各个模块和作用
50.hbase+solr,让我说了一下,解释了一下,问solr你们怎么建索引的,建了多少索引,根据什么去建的这些索引?最后还问solr的索引表是单张表,还是多张表,这些表是存在hbase里面了还是分开的?为什么没有存hbase里面,搞得我无言以对。
51.自己熟悉大数据的部分说一下?
52.hadoop与storm、spark的比较?
53.事务都有哪些特点?
55.使用过其他什么开源框架?
56.最擅长那种技术?
57.在实际开发的过程中遇到了什么问题,怎么解决?
58.是否参加过CodeReview?有什么心得?
59.Hadoop用的什么版本?
60.PV UV IP解释?