2021最新最全大数据面试宝典-有答案
【Hadoop相关知识点】 HDFS读写流程:Hadoop分布式文件系统(HDFS)的读写流程包括客户端与NameNode通信获取文件元数据,读取数据时客户端与DataNode直接通信以获取数据块;写入数据时客户端首先在本地缓存数据,然后分块写入DataNode,并通过NameNode更新元数据。 HDFS读取文件损坏处理:当HDFS读取文件时遇到某个块损坏,HDFS会尝试从其他副本读取数据,如果副本足够,系统会自动修复损坏的块。 HDFS上传文件时DataNode挂掉处理:如果在上传文件过程中某个DataNode挂掉,HDFS会重新选择其他DataNode来存储数据块,并更新NameNode上的元数据信息。 NameNode启动操作:NameNode在启动时会读取FsImage和EditLog文件,然后装载元数据到内存,完成启动过程。 SecondaryNameNode工作机制:SecondaryNameNode定期合并FsImage和EditLog,生成新的FsImage并推送给NameNode,以减轻NameNode的内存压力,但SecondaryNameNode不能恢复所有数据。 NameNode数据存储安全保证:Hadoop通过使用多个备份和心跳机制来保证NameNode的数据存储安全。 NameNodeHA脑裂问题解决:在NameNode高可用性配置中,使用Zookeeper等机制解决脑裂问题。 HDFS小文件问题与解决:小文件过多会导致NameNode内存压力增大,可以通过合并小文件,或者使用CombineFileInputFormat等手段避免。 HDFS组织架构:HDFS包含NameNode和DataNode两种角色,NameNode负责管理文件系统的命名空间和客户端对文件的访问,DataNode负责存储实际数据。 MR(MapReduce)机制:MapReduce是一种编程模型,用于处理大规模数据集的并行运算。Map阶段将输入数据分割成独立的块处理,Reduce阶段对Map结果进行汇总。 Hive相关知识点 Hive内部表和外部表区别:Hive的内部表数据由Hive管理,删除表时同时删除元数据和数据;外部表则仅管理元数据,数据由外部系统管理。 Hive索引:Hive支持索引来加速查询,但主要用于优化性能和管理。 Hive调度:可以通过HiveServer2、Tez等工具实现对Hive作业的调度。 列式存储优点:ORC、Parquet等列式存储格式减少了读取未使用数据的I/O操作,提高了数据压缩比,适合复杂查询。 数据建模模型:常见的数据模型包括星型模型、雪花模型等。 数据仓库分层:数据仓库通过分层(如ODS、DW、DM)来提升数据处理的效率和质量。 使用Hive解析JSON串:Hive支持解析JSON格式的数据。 Sortby和Orderby区别:Sortby对数据在每个Reducer内部排序,而Orderby对全局数据排序。 数据倾斜排查与解决:数据倾斜是MapReduce作业执行不均衡的现象,可以通过多种方法解决,比如对数据进行预处理、调整分区策略等。 Hive小文件问题解决:可以通过合并小文件、调整HDFS的块大小来解决。 Hive优化:优化Hive作业可以通过多种方式,包括调整MapReduce参数、分区、小文件合并、使用Tez或Spark执行引擎等。 Spark相关知识点 Spark与MapReduce相比效率更高:Spark的效率高于MapReduce,原因在于它使用了内存计算,避免了磁盘I/O,同时有DAG调度优化和高效的任务执行模型。 Hadoop和Spark使用场景:Hadoop适用于批处理大数据,而Spark则适合于批处理、流处理、机器学习和图计算。 Spark容错与宕机恢复:Spark通过RDD的不变性和分区的血统信息来保证容错,可以迅速从故障中恢复。 RDD持久化原理与Checkpoint:RDD持久化是将数据存储在内存中,Checkpoint是将RDD的数据写入磁盘以避免长依赖链。 Spark主备切换机制原理:Spark通过Zookeeper等协调服务来实现主备切换,保证集群的高可用。 Spark解决Hadoop问题:Spark在迭代计算和内存计算方面相较于Hadoop有性能上的优势。 SparkSQL处理使用Dataframe还是SQL:通常情况下,使用Dataframe可以获得更好的性能,因为它提供了优化的执行计划。 Kafka相关知识点 使用Kafka的原因:Kafka作为高吞吐量的分布式消息系统,适合日志收集和实时数据处理场景。 Kafka消息消费与再次消费:Kafka支持消息消费后再次消费。 Kafka数据存储位置:Kafka将数据存储在磁盘上,以保持高吞吐量,消息顺序写入磁盘。 Kafka数据丢失保障:Kafka通过多副本和高可用性设计保证数据不会丢失。 Kafka采集数据选择:Kafka适合实时数据采集场景。 Kafka重启与数据丢失:Kafka的offset在Zookeeper中,重启不会导致数据丢失。 Kafka宕机解决:可以通过选举新的Controller和从副本继续提供服务。 HBase相关知识点 HBase写数据机制:HBase通过HLog和MemStore保证数据的可靠性,写入流程包括数据首先写入WAL日志,然后写入MemStore,达到一定量后刷写到磁盘。 HDFS与HBase使用场景:HBase适合高并发的随机读写,而HDFS适合高吞吐量的顺序访问。 HBase存储结构:HBase采用列式存储,由RowKey、列簇、列限定符和时间戳组成。 HBase热点问题解决:HBase热点问题可以通过预分区、Region拆分和合理设计RowKey等方式解决。 Flink相关知识点 Flink容错机制:Flink使用分布式数据快照(Checkpoint)机制进行容错。 Flink中的Time:Flink支持事件时间(Event Time)、处理时间(Processing Time)和摄入时间(Ingestion Time)。 迟到数据处理:Flink提供了Watermarks机制来处理乱序和迟到的数据。 Flink运行依赖Hadoop组件:Flink不必须依赖Hadoop组件,它是一个独立的分布式处理引擎。 Flink集群角色:Flink集群中包括JobManager和TaskManager等角色,各自负责作业管理和任务执行。 Flink资源管理中TaskSlot:Flink中的TaskSlot是资源调度的单位,决定了TaskManager的并发执行能力。