logo资料库

大数据面试题.docx

第1页 / 共43页
第2页 / 共43页
第3页 / 共43页
第4页 / 共43页
第5页 / 共43页
第6页 / 共43页
第7页 / 共43页
第8页 / 共43页
资料共43页,剩余部分请下载后查看
1.选择题
1.1.下面哪个程序负责 HDFS 数据存储。
1.2.HDfS 中的 block 默认保存几份?
1.3.下列哪个程序通常与NameNode在一个节点启动?
1.4.HDFS 默认 Block Size
1.5.下列哪项通常是集群的最主要瓶颈
1.6.关于 SecondaryNameNode 哪项是正确的?
1.7.下列哪项可以作为集群的管理?
1.8.Client 端上传文件的时候下列哪项正确
1.9.下列哪个是 Hadoop 运行的模式
2.面试题
2.1. Hadoop的核心配置是什么?
2.2.那当下又该如何配置?
2.3.“jps”命令的用处?
2.4.mapreduce的原理?
2.5.HDFS存储的机制?
2.5.1.hdfs写流程
2.5.2.读流程
2.6.举一个简单的例子说明mapreduce是怎么来运行的 ?
2.7.用mapreduce来实现下面需求?
2.8.hadoop中Combiner的作用?
2.9.简述hadoop安装
2.10.请列出hadoop进程名
2.11.解决下面的错误
2.12.写出下面的命令
2.13.简述hadoop的调度器
2.14.列出你开发mapreduce的语言
2.15.wordcount示例书写程序
2.16.不同语言的优缺点
2.17.hive有哪些保存元数据的方式,个有什么特点。
2.18.简述MapReduce中combiner和partition的作用
2.19.hive内部表和外部表的区别
2.20.hbase的rowkey怎么创建好?列族怎么创建好?
2.21.用mapreduce怎么处理数据倾斜问题?
2.22.hadoop框架中怎么来优化
2.22.1.从应用程序角度进行优化
2.22.2.对参数进行调优
2.23.我们开发job时,是否可以去掉reduce阶段。
2.24.datanode在什么情况下不会备份
2.25.combiner出现在那个过程
2.26.hdfs的体系结构
2.27.3个datanode中有一个datanode出现错误会怎样?
2.28.描述一下hadoop中,有哪些地方使用了缓存机制,作用分别是什么?
2.29.如何确定hadoop集群的健康状态
2.30.生产环境中为什么建议使用外部表?
3.15期新增
3.1.新增
3.2.你们数据库怎么导入hive 的,有没有出现问题
3.3.一个datanode 宕机,怎么一个流程恢复
3.4.Hbase 的特性,以及你怎么去设计 rowkey 和 columnFamily ,怎么去建一个ta
3.5.Redis,传统数据库,hbase,hive 每个之间的区别
3.6.shuffle 阶段,你怎么理解的
3.7.Mapreduce 的 map 数量 和 reduce 数量 怎么确定 ,怎么配置
3.8.唯一难住我的是他说实时计算,storm 如果碰上了复杂逻辑,需要算很长的时间,你怎么去优化,怎么保证
3.9.Hive 你们用的是外部表还是内部表,有没有写过UDF,hive 的版本
3.10.设计日志收集分析系统
3.11.你来做技术分享,选择什么主题?课程安排?
3.12.Hive语句实现WordCount。
3.13.a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,找出a、b文件共同的u
3.14.一亿个数据获取前100个最大值(步骤及算法复杂度)
3.15.实时数据统计会用到哪些技术,它们各自的应用场景及区别是什么?
3.16.String和StringBuffer的区别,StringBuffer与StringBuilder的
3.17. HashMap,HashTable,Vector,ArrayList,linkedlist和 Ar
3.18.多线程实现方式Thread和Runnable的区别
3.19.一个Hadoop环境,整合了HBase和Hive,是否有必要给HDFS和Hbase都分别配置压缩策略
3.20.简述Hbase性能优化的思路
3.21.简述Hbase filter的实现原理是什么?结合实际项目经验,写出几个使用filter的场景
3.22.ROWKEY的后缀匹配怎么实现?例如ROWKEY是yyyyMMDD-UserID形式,如果要以Use
3.23.简述Hive中虚拟列作用是什么,使用它的注意事项。
3.24.如果要存储海量的小文件(大小都是几百K~几M),请简述自己的设计方案。
3.25.有两个文本文件,文件中的数据按行存放,请编写MapReduce程序,找到两个文件中彼此不相同的行
4.共同朋友
5.脚本替换
6.一键执行
7.面试问题:
8.面试问题:
9.面试问题:
10.面试问题:
11.京东商城 - 大数据
11.1.可靠的sources和receivers
11.2.metadata checkpoint
11.3.数据可能丢失的场景
11.4.WAL
11.5.At-Least-Once
11.6.WAL的缺点
11.7.Kafka direct API
11.8.总结
大数据工程师面试题 1. 选择题 1.1. 下面哪个程序负责 HDFS 数据存储。 a)NameNode b)Jobtracker 答案 C datanode c)Datanode d)secondaryNameNode e)tasktracker 1.2.HDfS 中的 block 默认保存几份? a)3 份 b)2 份 c)1 份 d)不确定 答案 A 默认 3 份 1.3. 下列哪个程序通常与 NameNode 在一个节点启动? a)SecondaryNameNode b)DataNode c)TaskTracker d)Jobtracker 答案 D 1.4.HDFS 默认 Block Size a)32MB b)64MB c)128MB 答案:C 1.5. 下列哪项通常是集群的最主要瓶颈 b)网络 c)磁盘 IO d)内存 a)CPU 答案:C 磁盘 首先集群的目的是为了节省成本,用廉价的 pc 机,取代小型机及大型机。小型机和大型机 有什么特点? 1.cpu 处理能力强 2.内存够大,所以集群的瓶颈不可能是 a 和 d 3.如果是互联网有瓶颈,可以让集群搭建内网。每次写入数据都要通过网络(集群是内网), 然后还要写入 3 份数据,所以 IO 就会打折扣。 1.6. 关于 SecondaryNameNode 哪项是正确的? a)它是 NameNode 的热备 b)它对内存没有要求 1
c)它的目的是帮助 NameNode 合并编辑日志,减少 NameNode 启动时间 d)SecondaryNameNode 应与 NameNode 部署到一个节点 答案 C。 1.7. 下列哪项可以作为集群的管理? a)Puppet b)Pdsh c)Cloudera Manager d)Zookeeper 答案 ABD 具体可查看什么是 Zookeeper,Zookeeper 的作用是什么,在 Hadoop 及 hbase 中具体作 用是什么。 1.8.Client 端上传文件的时候下列哪项正确 a)数据经过 NameNode 传递给 DataNode b)Client 端将文件切分为 Block,依次上传 c)Client 只上传数据到一台 DataNode,然后由 NameNode 负责 Block 复制工作 答案 B 分析:Client 向 NameNode 发起文件写入的请求。NameNode 根据文件大小和文件块配置 情况,返回给 Client 它所管理部分 DataNode 的信息。Client 将文件划分为多个 Block,根 据 DataNode 的地址信息,按顺序写入到每一个 DataNode 块中。具体查看 HDFS 体系结构 简介及优缺点。 1.9. 下列哪个是 Hadoop 运行的模式 a)单机版 b)伪分布式 c)分布式 答案 ABC 单机版,伪分布式只是学习用的。 2. 面试题 2.1. Hadoop 的核心配置是什么? Hadoop 的核心配置通过两个 xml 文件来完成:1,hadoop-default.xml;2,hadoop-site.xml。 这些文件都使用 xml 格式,因此每个 xml 中都有一些属性,包括名称和值,但是当下这些文 件都已不复存在。 2.2. 那当下又该如何配置? Hadoop 现在拥有 3 个配置文件:1,core-site.xml;2,hdfs-site.xml;3,mapred-site.xml。这 些文件都保存在 conf/子目录下。 2
2.3. “jps”命令的用处? 这个命令可以检查 Namenode、Datanode、Task Tracker、 Job Tracker 是否正常工作。 2.4.mapreduce 的原理? Hadoop 中的 MapReduce 是一个使用简易的软件框架,基于它写出来的应用程序能够运行在 由上千个商用机器组成的大型集群上,并以一种可靠容错的式并 行处理上 T 级别的数据集。 一个 MapReduce 作业(job)通常会把输入的数据集切分为若干独立的数据块,由 map 任务 (task)以完全并行的方式处理它们。框架会对 map 的输出先进行排序,然后把结果输入给 reduce 任务。通常作业的输入和输出都会被存储在文件系统中。整个框架负责任务的调度和 监控,以及重新执行已经失败的任务。 通常,MapReduce 框架和分布式文件系统是运行在一组相同的节点上的,也就是说,计算 节点和存储节点通常在一起。这种配置允许框架在那些已经存好数据的节点上高效地调度任 务,这可以使整个集群的网络带宽被非常高效地利用。 MapReduce 框架由一个单独的 master JobTracker 和每个集群节点一个 slave TaskTracker 共同 组成。master 负责调度构成一个作业的所有任务,这些任务分布在不同的 slave 上,master 监控它们的执行,重新执行已经失败的任务。而 slave 仅负责执行由 master 指派的任务 3
2.5.HDFS 存储的机制? 2.5.1. hdfs 写流程 流程: 1、 client 链接 namenode 存数据 2、 namenode 记录一条数据位置信息(元数据),告诉 client 存哪。 3、 client 用 hdfs 的 api 将数据块(默认是 64M)存储到 datanode 上。 4、 datanode 将数据水平备份。并且备份完将反馈 client。 5、 client 通知 namenode 存储块完毕。 6、 namenode 将元数据同步到内存中。 7、 另一块循环上面的过程。 4
2.5.2. 读流程 流程: 1、 client 链接 namenode,查看元数据,找到数据的存储位置。 2、 client 通过 hdfs 的 api 并发读取数据。 3、 关闭连接。 2.6. 举一个简单的例子说明 mapreduce 是怎么来运行的 ? 流程解析: 1、 一个 mr 程序启动的时候,最先启动的是 MRAppMaster,MRAppMaster 启动后根据本次 job 的描述信息,计算出需要的 maptask 实例数量,然后向集群申请机器启动相应数量 的 maptask 进程 2、 maptask 进程启动之后,根据给定的数据切片范围进行数据处理,主体流程为: a) 利用客户指定的 inputformat 来获取 RecordReader 读取数据,形成输入 KV 对 b) 将输入 KV 对传递给客户定义的 map()方法,做逻辑运算,并将 map()方法输出的 KV 对收集到缓存 c) 将缓存中的 KV 对按照 K 分区排序后不断溢写到磁盘文件 3、 MRAppMaster 监控到所有 maptask 进程任务完成之后,会根据客户指定的参数启动相应 数量的 reducetask 进程,并告知 reducetask 进程要处理的数据范围(数据分区) 4、 Reducetask 进程启动之后,根据 MRAppMaster 告知的待处理数据所在位置,从若干台 maptask 运行所在机器上获取到若干个 maptask 输出结果文件,并在本地进行重新归并 排序,然后按照相同 key 的 KV 为一个组,调用客户定义的 reduce()方法进行逻辑运算, 并收集运算输出的结果 KV,然后调用客户指定的 outputformat 将结果数据输出到外部 存储 5
2.7. 用 mapreduce 来实现下面需求? 现在有 10 个文件夹,每个文件夹都有 1000000 个 url.现在让你找出 top1000000url。 解答:topk 方法一: 运用 2 个 job,第一个 job 直接用 filesystem 读取 10 个文件夹作为 map 输入,url 做 key,reduce 计算 url 的 sum, 下一个 job map 用 url 作 key,运用 sum 作二次排序,reduce 中取 top10000000 方法二: 建 hive 表 A,挂分区 channel,每个文件夹是一个分区. select x.url,x.c from(select url,count(1) as c from A where channel ='' group by url) x order by x.c desc limit 1000000; (还可以用 treeMap, 到 1000000 了每来一个都加进去, 删掉最小的) 2.8.hadoop 中 Combiner 的作用? combiner 是 reduce 的实现,在 map 端运行计算任务,减少 map 端的输出数据。 作用就是优化。 但是 combiner 的使用场景是 mapreduce 的 map 和 reduce 输入输出一样。 1、combiner 最基本是实现本地 key 的聚合,对 map 输出的 key 排序,value 进行迭代。如 下所示: map: (K1, V1) → list(K2, V2) combine: (K2, list(V2)) → list(K2, V2) reduce: (K2, list(V2)) → list(K3, V3) 2、combiner 还具有类似本地的 reduce 功能. 例如 hadoop 自带的 wordcount 的例子和找出 value 的最大值的程序,combiner 和 reduce 完 全一致。如下所示: map: (K1, V1) → list(K2, V2) combine: (K2, list(V2)) → list(K3, V3) reduce: (K3, list(V3)) → list(K4, V4) 3、如果不用 combiner,那么,所有的结果都是 reduce 完成,效率会相对低下。使用 combiner, 先完成的 map 会在本地聚合,提升速度。 4、对于 hadoop 自带的 wordcount 的例子,value 就是一个叠加的数字,所以 map 一结束就 可以进行 reduce 的 value 叠加,不必要等到所有的 map 结束再去进行 reduce 的 value 叠加。 combiner 使用的合适,可以在满足业务的情况下提升 job 的速度,如果不合适,则将导致输 出的结果不正确。 2.9. 简述 hadoop 安装 1.简单描述如何安装配置一个 Apache 开源版的 Hadoop: 6
2.10. 请列出 hadoop 进程名 2.请列出正常工作的 Hadoop 集群中 Hadoop 都分别需要启动那些进程,他们的作用是什么: 7
2.11. 解决下面的错误 1、 权限问题,可能曾经用 root 启动过集群。(例如 hadoop 搭建的集群,是 tmp/hadoop-hadoop/.....) 2、 可能是文件夹不存在 3、 解决: 删掉 tmp 下的那个文件,或改成当前用户 2.12. 写出下面的命令 4.写出下列执行命令: 1).杀死一个 job 2).删除 hdfs 上的/tmp/aaa 目录 3).加入一个新的存储节点和删除一个计算节点需要刷新集群状态命令 8
分享到:
收藏