大工Hadoop考试题库
- 0.单选15题(30分)、填空10题(10分)、判断10题(10分)、简答(25分)、编程(25分)
- 1. Hadoop 常见的发型版本有哪些?
- 2. Hadoop、Spark、Hive、Hbase、Sqoop 这些技术分别是用来做什么的?
- 3. HDFS 元数据是如何存储的?存放在哪里?里面会存放什么内容?在配置集群时是如何通过参数进行配置的?
- 4. HDFS 安全模式有什么特点?
- 5. HDFS 的设计目标是什么?
- 6. HDFS、Yarn 和 JobHistory 服务的端口分别是多少?如何启动和停止?
- 7. HDFS 和 Yarn 架构中 Master 和 Slaver 节点上的进程名称是什么?
- 8. HDFS 副本数是否可以修改?如何修改?
- 9. HDFS 数据块抽象的优点是什么?
- 10. HDFS三副本放置策略?
- 11. Namenode 的作用是什么?
- 12. HDFS blocksize 和 map任务的数量有什么关系?reduce任务的数量是如何确定的?
- 13. HDFS API 读写HDFS文件时如何创建输入输出数据流对象?
- 14. Hadoop支持的数据压缩算法有哪几种?
- 15. 如何自定义序列化类?需要继承什么接口?实现什么方法?
- 16. Shuffle过程包括哪四个过程?作用都是什么?它们执行的顺序是什么?(简答)
- 17. Shuffle处理全过程如何自定义计数器?
- 18. Hadoop序列化相对于 Java序列化的优点是什么?
- 19. SequenceFile 和 MapFile 类型的区别?
- 20. TextInputFormat 和 KeyValueTextInputFormat 两种文件输入格式时如何处理key-value的?
- 21. PageRank算法中转移矩阵及其迭代计算
- 22. Yarn框架中ResourceManagere的功能是什么?
- 简答题:TOP-N
0.单选15题(30分)、填空10题(10分)、判断10题(10分)、简答(25分)、编程(25分)
1. Hadoop 常见的发型版本有哪些?
2. Hadoop、Spark、Hive、Hbase、Sqoop 这些技术分别是用来做什么的?
技术 | 功能 |
---|---|
Hadoop | 分布式离线计算框架 |
Spark | 分布式内存计算框架 |
Hive | HiveQL数据仓库系统 |
HBase | 分布式实时存储数据库 |
sqoop | 数据库间ETL工具 |
3. HDFS 元数据是如何存储的?存放在哪里?里面会存放什么内容?在配置集群时是如何通过参数进行配置的?
元数据分为 fsimage edits. 存放在NameNode中。
元数据又称之为解释性数据,记录数据的数据文件系统。元数据一般指文件大小、最后修改时间、底层存储位置、属性、所属用户、权限等信息。在 hdfs-site.xml下的dfs.namenode.name.dir的value值进行参数配置
4. HDFS 安全模式有什么特点?
由于不同节点启动顺序不一样,因此刚启动时会进入安全模式,只读不能写。
5. HDFS 的设计目标是什么?
6. HDFS、Yarn 和 JobHistory 服务的端口分别是多少?如何启动和停止?
//HDFS服务
start-dfs.sh
stop-dfs.sh
//YARN服务
start-yarn.sh
stop-yarn.sh
//同时启动/关闭HDFS和TARN服务
start-all.sh
stop-all.sh
//JobHistory服务(只在namenode节点执行此命令)
mapred --daemon start historyserver
mapred --daemon stop historyserver
服务名称 | 端口 |
---|---|
通过浏览器查看HDFS | 9870 |
通过浏览器查看Yarn | 8088 |
通过浏览器查看历史作业 History server | 19888 |
7. HDFS 和 Yarn 架构中 Master 和 Slaver 节点上的进程名称是什么?
HDFS | YARN | |
---|---|---|
master | NameNode | ResourceManager |
slaver | DataNode | NodeManager |
8. HDFS 副本数是否可以修改?如何修改?
配置集群时可以修改dfs.replication
以及setrep命令:
9. HDFS 数据块抽象的优点是什么?
10. HDFS三副本放置策略?
三副本放置策略(BlockPlacementPolicyDefault)
写请求方所在机器是其中一个Datanode,则第一份副本直接存放在本地,否则随机在集群中选择一个Datanode,第二个副本存放于不同第一个副本的所在的机架,第三个副本存放于第二个副本所在的机架,但是属于不同的节点。
其余的副本在遵循以下限制的前提下随机放置,一个节点最多放置一个副本,如果副本数少于两倍机架数,同一机架不能放置超过两个副本。
11. Namenode 的作用是什么?
- 管理文件系统的命名空间,维护文件系统的文件目录树
- 记录文件/目录的元信息和每个文件对应的数据块列表
- 接收用户的操作请求
12. HDFS blocksize 和 map任务的数量有什么关系?reduce任务的数量是如何确定的?
HDFS block size 默认128M,splitsize一般等于block size,split有1.1倍原则,block没有。而maptask数目等于split数目。
reduce任务数量取决于map中partition数量。
13. HDFS API 读写HDFS文件时如何创建输入输出数据流对象?
14. Hadoop支持的数据压缩算法有哪几种?
15. 如何自定义序列化类?需要继承什么接口?实现什么方法?
**对象不能直接在网络中传输或者存放到磁盘中,所以需要进行序列化操作。**Java序列化包含信息太多不方便,所以需要Hadoop序列化。 Hadoop采用的运算模型是将任务分散在不同节点上进行初步处理;然后将分节点上已经计算完毕的任务汇总进行合并操作。在集群节点间通信时需要频繁的序列化和反序列化,因此要求序列化速度要快、体积要小、占用网络带宽要小,使数据适合远程传输并保证传输后数据的质量。
- 如果不需要排序,那么只用继承Writable接口。同时实现这两个方法(write和readFields)。write叫做序列化方法,用于把对象指定的字段写出去;readFields叫做反序列化方法。
- 如果从字节流中读取字段重构对象如果需要排序,那么需要继承WritableComparable,同时实现compareTo
16. Shuffle过程包括哪四个过程?作用都是什么?它们执行的顺序是什么?(简答)
- Collect/Copy阶段
- Spill阶段
- Sort阶段
- Merge阶段
将Maptask结果写入缓冲区(Collect阶段),达到环形缓冲区阈值后,会溢写到磁盘里(Spill阶段),如果有分区则按照分区依次写入同时在不同分区里进行排序(Sort阶段)【快排】,写入磁盘后,最后对所有溢出的临时文件进行合并成一个数据文件(Merge阶段)同时也进行排序(Sort阶段)【归并】,由Reducer来拉取不同Maptask输出的数据文件中属于自己分区的数据(Copy阶段),进行合并(Merge阶段)同时对合并的数据进行排序(Sort阶段),最后输入给Reduce。
17. Shuffle处理全过程如何自定义计数器?
18. Hadoop序列化相对于 Java序列化的优点是什么?
- java的序列化机制比较臃肿,重量级,是不断的创建对象的机制,并且会额外附带很多信息(校验、继承关系系统等)。
- Hadoop的序列化机制中,用户可以复用对象,这样就减少了java对象的分配和回收,提高了应用效率。即序列化速度更快、体积更小、占用网络带宽更小。
19. SequenceFile 和 MapFile 类型的区别?
Mapfile多了index索引,其中的key是经过排序的,而SequenceFile的key是没有经过排序的。
20. TextInputFormat 和 KeyValueTextInputFormat 两种文件输入格式时如何处理key-value的?
TextInputFormat是以文件每一行行首在文件中的偏移量作为key,以一整行作为value。
KeyValueTextInputFormat默认按制表符将一行分为两列,第一列为键,第二列为值。