Hadoop大数据面试题解析:核心技术与集群管理

1 下载量 110 浏览量 更新于2024-06-27 1 收藏 1.89MB PDF 举报
"该资源是一份关于大数据面试题目的PDF文档,主要涵盖了HDFS(Hadoop Distributed File System)的基础知识和一些常见问题,旨在帮助求职者准备面试,挑战高薪职位。" 在这份文档中,主要涉及了以下几个重要的大数据和Hadoop相关知识点: 1. **HDFS组件**: - **NameNode**: 负责元数据管理,不存储实际数据。 - **DataNode**: 存储HDFS的数据块,是HDFS的主要数据存储节点。 - **Secondary NameNode**: 不是NameNode的热备,而是帮助NameNode定期合并编辑日志,减少NameNode重启时的恢复时间。 - **JobTracker/TaskTracker**:旧版Hadoop MapReduce的调度和任务执行组件,已经被YARN取代。 2. **HDFS配置**: - **Block Size**: HDFS的默认Block Size通常是128MB,用于决定文件如何分割存储。 - **副本数**:默认情况下,每个文件块会在HDFS中保存3份,以提供容错性和数据可靠性。 3. **HDFS性能瓶颈**: - 在廉价PC机组成的集群中,磁盘I/O通常是性能瓶颈,因为数据写入需要通过网络并复制多份。 4. **集群管理**: - **Puppet、Pdsh、Cloudera Manager**等工具可用于集群的自动化管理和监控。 - **Zookeeper**:提供分布式协调服务,在Hadoop和HBase等系统中起到关键作用。 5. **HDFS操作**: - **客户端上传文件**:客户端将文件切分成Block,直接上传到DataNode,NameNode负责协调Block的位置信息,不直接参与数据传输。 - **运行模式**:Hadoop可以运行在单机版、伪分布式和分布式模式下,其中分布式模式是实际生产环境中的常见模式。 6. **MapReduce**: - **原理**:MapReduce是一种并行计算模型,包含Map和Reduce两个主要阶段,用于处理和生成大数据集。 - **WordCount示例**:经典的MapReduce应用,用于统计文本中单词出现的次数,展示了MapReduce的基本工作流程。 7. **面试题**: - 面试题还涵盖了Hadoop的核心配置,如core-site.xml、hdfs-site.xml和mapred-site.xml等,以及如何通过"jps"命令检查Hadoop服务的状态。 这些知识点对于理解和使用Hadoop生态系统,尤其是HDFS和MapReduce的运作原理至关重要,对于准备大数据相关面试的求职者来说是非常有价值的参考资料。
2022-11-10 上传
2022-12-24 上传
⼤数据的⼀些⾯试题 ⼤数据的⼀些⾯试题 五、双层桶划分—-其实本质上就是【分⽽治之】的思想,重在"分"的技巧上! 适⽤范围:第k⼤,中位数,不重复或重复的数字 基本原理及要点:因为元素范围很⼤,不能利⽤直接寻址表,所以通过多次划分,逐步确定范围,然后最后在⼀个可以接受的范围内进⾏。 可以通过多次缩⼩,双层只是⼀个例⼦。 扩展: 问题实例: 1).2.5亿个整数中找出不重复的整数的个数,内存空间不⾜以容纳这2.5亿个整数。 有点像鸽巢原理,整数个数为2^32,也就是,我们可以将这2^32个数,划分为2^8个区域(⽐如⽤单个⽂件代表⼀个区域),然后将数据分离到 不同的区域,然后不同的区域在利⽤bitmap就可以直接解决了。也就是说只要有⾜够的磁盘空间,就可以很⽅便的解决。 2).5亿个int找它们的中位数。 这个例⼦⽐上⾯那个更明显。⾸先我们 将int划分为2^16个区域,然后读取数据统计落到各个区域⾥的数的个数,之后我们根据统计结果就 可以判断中位数落到那个区域,同时知道这个区域中的第 ⼏⼤数刚好是中位数。然后第⼆次扫描我们只统计落在这个区域中的那些数就可以 了。 实际上,如果不是int是int64,我们可以经过3次这样的划分即可降低到可以接受 的程度。即可以先将int64分成2^24个区域,然后确定区域 的第⼏⼤数,在将该区域分成2^20个⼦区域,然后确定是⼦区域的第⼏⼤数,然后⼦区域⾥ 的数的个数只有2^20,就可以直接利⽤direct addr table进⾏统计了。 六、数据库索引 适⽤范围:⼤数据量的增删改查 基本原理及要点:利⽤数据的设计实现⽅法,对海量数据的增删改查进⾏处理。 七、倒排索引(Inverted index) 适⽤范围:搜索引擎,关键字查询 基本原理及要点:为何叫倒排索引?⼀种索引⽅法,被⽤来存储在全⽂搜索下某个单词在⼀个⽂档或者⼀组⽂档中的存储位置的映射。 以英⽂为例,下⾯是要被索引的⽂本: T0 = "it is what it is" T1 = "what is it" T2 = "it is a banana" 我们就能得到下⾯的反向⽂件索引: "a": {2} "banana": {2} "is": {0, 1, 2} "it": {0, 1, 2} "what": {0, 1} 检索的条件"what","is"和"it"将对应集合的交集。 正向索引开发出来⽤来存储每个⽂档的单词的列表。正向索引的查询往往满⾜每个⽂档有序 频繁的全⽂查询和每个单词在校验⽂档中的验证 这样的查询。在正向索引中,⽂档占据了中⼼的位置,每个⽂档指向了⼀个它所包含的索引项的序列。也就是说⽂档 指向了它包含的那些单 词,⽽反向索引则是单词指向了包含它的⽂档,很容易看到这个反向的关系。 扩展: 问题实例:⽂档检索系统,查询那些⽂件包含了某单词,⽐如常见的学术论⽂的关键字搜索。 ⼋、外排序 适⽤范围:⼤数据的排序,去重 基本原理及要点:外排序的归并⽅法,置换选择败者树原理,最优归并树 扩展: 问题实例: 1).有⼀个1G⼤⼩的⼀个⽂件,⾥⾯每⼀⾏是⼀个词,词的⼤⼩不超过16个字节,内存限制⼤⼩是1M。返回频数最⾼的100个词。 这个数据具有很明显的特点,词的⼤⼩为16个字节,但是内存只有1m做hash有些不够,所以可以⽤来排序。内存可以当输⼊缓冲区使⽤。 九、trie树 适⽤范围:数据量⼤,重复多,但是数据种类⼩可以放⼊内存 基本原理及要点:实现⽅式,节点孩⼦的表⽰⽅式 扩展:压缩实现。 问题实例: 1).有10个⽂件,每个⽂件1G,每个⽂件的每⼀⾏都存放的是⽤户的query,每个⽂件的query都可能重复。要你按照query的频度排序。 2).1000万字符串,其中有些是相同的(重复),需要把重复的全部去掉,保留没有重复的字符串。请问怎么设计和实现? 3).寻找热门查询:查询串的重复度⽐较⾼,虽然总数是1千万,但如果除去重复后,不超过3百万个,每个不超过255字节。 ⼗、分布式处理 mapreduce 适⽤范围:数据量⼤,但是数据种类⼩可以放⼊内存 基本原理及要点:将数据交给不同的机器去处理,数据划分,结果归约。 扩展: 问题实例: 1).The canonical example application of MapReduce is a process to count the appearances of each different word in a set of documents: 2).海量数据分布在100台电脑中,想个办法⾼效统计出这批数据的TOP10。 3).⼀共有N个机器,每个机器上有N个数。每个机器最多存O(N)个数并对它们操作。如何找到N^2个数的中数(median)? 经典问题分析 上千万or亿