写在前面
100个问题搞定大数据理论体系
100个问题搞定Java虚拟机
目录结构
HDFS(version:3.2.2)
- Hadoop是什么?
- 为什么使用Hadoop?
- Hadoop3.x有哪些新特性?
- HDFS的设计目标是什么?
- HDFS的设计需求有哪些?
- HDFS是什么?
- HDFS和普通的文件系统有什么差异?
- HDFS架构是什么?NameNode,SecondaryNameNode,Datanode有什么作用?
- HDFS心跳机制是什么?
- HDFS上大文件如何切分?
- HDFS高可用和联邦指的什么?
- HDFS Snapshots 是什么?
- HDFS高可用原理是什么?
- HDFS容错性设计有哪些?
- HDFS的读写流程?
- HDFS是如何删除数据的?
- HDFS存储大量小文件有什么问题?如何存储大量小文件?
- SequenceFile是什么?
- Block块是不是设置的越大越好?Block块是不是设置的越小越好?
- HDFS 序列化是什么?
- Hadoop RPC是什么?
- block块的存储策略是什么?HDFS副本放置策略是什么?
- HDFS副本机制有哪些?
- HDFS机架感知是什么?
- HDFS的数据负载均衡策略有哪些?
- Hadoop有多少protocol?
- HDFS是如何管理数据的?HDFS是如何管理元数据的
- HDFS启动流程是什么?
- HDFS上传文件流程是什么?
- HDFS源码里面有哪些设计模式?
- HDFS源码中用到了哪些锁?
- 你认为HDFS该如何解决三副本带来的存储成本问题?
- HDFS支持SSD存储吗?
- HDFS集中式缓存管理是什么?
- HDFS的可靠性措施?
- HDFS权限管理?
- HDFS配额管理
- HDFS文件归挡
- HDFS安全模式是什么?
- HDFS如何保障数据安全?
- Kerberos认证是什么?
- HDFS Shell如何使用?
- HDFS api有哪些?
- 在两个HDFS集群之间如何传输数据?
- HDFS如何调优?
- HDFS如何运维?
- HDFS常见异常处理?
MapReduce
- MapReduce是什么?
- MapReduce设计目标
- MapReduce特点
- MapReduce编程模型
- 为什么淘汰MapReduce?
- MapReduce工作流程?
- MapReduce的Shuffle工作原理?
- 如何解决MapReduce数据倾斜的问题?
- MapReduce on YARN
- MapReduce计数器
- 两代MapReduce框架的区别
- MapReduce调优
YARN
- YARN产生背景
- YARN架构
- YARN核心组件
- YARN应用运行原理
- YARN应用提交过程
- YARN中有哪些调度器
- ResourceManager HA
Zookeeper
- Zookeeper是什么?
- 为什么要用ZooKeeper?
- ZooKeeper有哪些应用场景
- ZooKeeper的架构
- ZooKeeper集群启动时的leader选举?运行时新leader选举?
- 什么是ZooKeeper仲裁quorum? 为什么要仲裁?
- ZooKeeper数据模型
- ZooKeeper Watcher是什么?为什么要有 Watcher?
- ZooKeeper工作原理
- ZooKeeper问题应对
Hive
- Hive是什么?有什么特点?
- 为什么使用Hive
- Hive与数据库的区别?
- Hive读时模式和写时模式的区别?
- Hive有什么优缺点?
- Hive架构原理?
- Hive的交互方式?
- Hive的数据类型?
- Hive数据模型
- 内部表与外部表的区别?
- Hive分区表是什么?
- Hive工作原理?
- Hive数据如何导入?
- Hive数据如何导出?
- Hive静态分区和动态分区?
- 将数据直接上传到分区目录(hdfs)上,让Hive分区表和数据产生关联有哪些方式?
- hive中分区可以提高查询效率,分区是否越多越好,为什么?
- hive的分桶表是什么?有什么作用?
- Hive桶表是否可以通过直接load将数据导入?
- Hive分区和分桶的区别?
- order by,sort by,distribute by,cluster by的区别?
- 聚合函数是否可以写在order by后面,为什么?
- 什么情况下Hive可以避免进行MapReduce?
- textFile、sequencefile、orc、parquet对比?
- hive的SerDe是什么?
- 如何解决多字符分割场景?
- Hive的企业级调优?
HBase
- HBase是什么?有什么特点?
- HBase和RDBMS的对比
- hbase整体架构?
- hbase表的数据模型?
- hbase的数据存储原理?
- Hbase内部原理
- hbase读写数据流程?
- hbase如何处理内存占用过大,大量小文件的情况?
- hbase表的预分区是什么?为什么要预分区?如何预分区?
- hbase如何处理单个region数据过多/过少的情况?
- HBase如何批量导入数据?
- 什么是热点?怎样处理热点?
- HBase如何进行数据备份?
- HBase二级索引?
- Hbase集群中每一个⻆色如何实现高可用?
- hbase的rowkey设计原则
- HBase过滤器?
- HBase计数器?
- HBase协处理器?
- Phoenix是什么?
- 常见异常处理?
- HBase存储模块总体设计
- Hbase应用场景
- HBase shell
- HBase JavaApi
Flume
- Flume是什么?
- Flume的架构?
- Flume运行机制
- Flume如何实现高可用?
- Flume的静态拦截器?
- Flume自定义拦截器/自定义Source/自定义Sink?
- Flume如何实现数据的断点续传?
- 如何使用Flume NG构建数据流拓扑
- Flume与Kafka的区别
- Sqoop与Flume差别
- Flume的优势
- Flume的架构原则
- Flume的可靠性级别
- Flume Channel
- 适合使用Flume的场景
Sqoop
- Sqoop是什么?
- 为什么使用 Sqoop
- Sqoop的工作机制?
- Sqoop基本架构?
- Sqoop 1和2区别
- Sqoop工作原理
- Sqoop基本思想和特点
- 如何高效的增量收集数据
- Sqoop Connector 有哪些?
- 使用 Sqoop 的场景
- 为什么需要工作流调度系统?
Azkaban
- Azkaban是什么?
- Azkaban基本架构?
- Azkaban架构的三种运行模式?
- 常见的工作流系统对比
Kafka
- 消息引擎系统是什么
- Kafka 是什么?
- Kafka 常用术语
- Kafka 的版本号选择
- Kafka 的种类选择
- Kafka 有什么作用?
- Kafka 线上集群部署方案
- Kafka 集群参数配置
- kafka 副本机制
待补充
Flink
待补充
ELK
待补充
ClickHouse
待补充
Spark Core
- Spark是什么?为什么要设计Spark这个框架?
- Spark有什么特点?相比于其他分布式计算框架有什么优劣?
- Spark为什么这么快?
- Spark是如何实现高可用的?
- Spark是如何实现高容错的?
- spark生态圈
- RDD是什么?
- RDD是怎么来的?
- 你认为Spark为什么要设计出RDD这个抽象模型?
- RDD的弹性体现在哪些方面?
- RDD的容错性体现在哪些方面?
- RDD的五大特性是什么?为什么有这五大特性?
- RDD里面的Partition到底代表什么?/ RDD的存储原理是什么?
- RDD的窄依赖和宽依赖有什么区别?
- checkpoint主要适用于以下哪些场景?
- RDD的操作可以分为哪些类型?
- 创建RDD的方式
- RDD算子
- RDD,DataFrame,DataSet有什么区别?
- RDD compute/ iterator 实现逻辑
- 广播变量和累加器是什么?为什么要设计这两个低级API?它们两者是如何实现的?
- SparkContext是什么?有什么作用?
- Driver和SparkContext有什么关系?
- SparkContext工作原理是什么?/ SparkContext整体运行流程是什么?
- DAGScheduler是什么?有什么作用?
- DAGScheduler是如何划分Stage的?
- DAG的生成机制
- DAGScheduler是如何提交Job的?
- DAGSCheduler的调度流程?
- TaskScheduler是什么?有什么作用?
- TaskScheduler的工作原理是什么?
- TaskScheduler实例化
- TaskSchedulerImpl的初始化流程?
- TaskSchedulerImpl的启动流程?
- Taskschedulerlmpl是如何提交Task的?
- TaskSchedulerImpl是如何分配资源的
- Spark为什么要设计出DAGScheduler和TaskScheduler的双层调度体系?
- SparkEnv是什么?有什么作用?
- SparkConf
- 创建spark环境
- SparkUI的实现
- SparkContext初始化
- SparkContext的伴生对象
- 安全管理器SecurityManager
- Shuffle是什么?
- Spark的Shuffle相比于MapReduce有什么改进的地方?
- Spark中的Shuffle分为哪些类型?彼此之间有什么区别?
- Spark的Shuffle发展历程?
- Shuffle框架内核
- ShuffleManager是什么?有什么作用?
- Shuffle的注册流程是什么?
- Shuffle读写的流程是什么?
- Shuffle的发生时机?
- Shuffle抓过来的数据到底放到了哪里?
- Sorted-Based shuffle 流程?
- MapOutputTracker 是什么?有什么作用?
- Tungsten是什么?
- 为什么需要Tungsten?
- Tungsten是如何优化内存管理的?
- 内存管理模型?
- Master启动原理?
- Master的部署
- Worker启动原理?
- Executor启动原理?
- Executor创建
- Executor资源分配
- Executor启动
- Executor异常处理
- Master如何实现 HA?
- Master领导选举的流程?
- Master如何实现资源调度?
- Master,Worker,Driver,Executor分别是什么?彼此之间有什么联系?
- Worker的部署
- 注册worker的完整流程?
- Master是如何进行Worker超时检测的?
- Spark本地模式整体运行流程是什么?
- 本地部署模式有哪些?
- 以Client的部署模式提交应用程序
- 以Cluster的部暑模式提交应用程序
- local-cluster部署模式整体运行流程是什么?
- Spark的Standalone模式整体运行流程是什么?
- standalone部署模式的容错机制?
- Spark在YARN集群上面的整体运行流程是什么?
- Spark on YARN提交过程?
- HeartbeatReceiver的工作原理?
- PersistenceEngine是什么?
- StandalonescheduleBackend是如何实现的?
- DriverEndpoint是如何实现的?
- CoarseGrainedExecutorBackend是什么?
- spark运行模式有哪些?
- ExecutorAllocationManager
- ContextCleaner的创建与启动
- SparkListener
- Spark存储模块有哪些关键组件?
- BlockManager是什么?有什么作用?
- 初始化块管理器BlockManager
- BlockStore
- Block锁是什么?
- Partition和Block有什么区别?
- 不同Storage Level对比
- Block是如何传输的?
- Block 的下载流程?
- Block的上传流程?
- Spark读写数据的流程?
- Spark中序列化和压缩有什么作用?
- cache是如何实现的?
- 缓存的适用场景
- 缓存工作机制解析
- checkpoint是如何实现的?
- 检查点 (checkpoint) 的适用场景和工作机制
- Spark是如何管理内存的?
- Executor内存模型
- AppendOnlyMap和PartitionedPairBuffer是如何实现的?
- MemoryManager是如何申请,释放内存的?
- HeapMemoryAllocator的工作原理?
- Spark存储模块之间是如何通信的?
- Spark启动时消息通信流程是什么?
- Spark运行时消息通信流程是什么?
- Spark RPC和Akka之间有什么关系?
- Spark RPC请求响应全流程是什么?
- ListenerBus是什么?有什么作用?
- StandaloneschedulerBackend是什么?有什么作用?
- 执行器的通信接口( Executorbackend)
- CoarseGrainedExecutorBackend是什么?和Executor有什么关系?
- Driver和Master如何通信?
- Application如何注册?spark程序的注册机制
- LauncherBackend是什么?
- 内部交互的消息机制
- Storage模块通信层
- Rpc框架的基本架构
- RPC核心组件
- 事件总线
- 度量系统
- 创建心跳接收器
- Rpc环境
- Spark的作业调度全流程是什么?
- Spark是如何执行任务的?
- Spark 是如何获取执行结果的?
- TaskSetManager是什么?有什么作用?
- Task是什么?
- Task工作流程?
- Task获取最佳位置
- Executor中任务是如何执行的?
- Job运行流程?
- Job触发流程?
- Spark 提供了哪些监控手段?
- Spark UI怎么用?
- Spark Metrics是什么?
- Spark REST API 如何使用?
- Spark Shell如何使用?
- Spark有哪些运维脚本?
Spark sql
- Spark sql是怎么发展起来的?
- Spark sql是什么?
- Spark sql是如何实现的?
- Spark sql特点
- DataFrame 编程模型
- 通过 RDD 如何构建 DataFrame
- RDD 和 DataFrame 的区别
- SparkSession
- DataFrame API
- DataFrame 的常用操作
- Spark sql 操作 MongoDB
- Spark sql 中 Parquet 进行数据分片是如何实现的
- Spark sql内置函数
- Spark sql窗口函数
- Spark sql UDF
- Spark sql UDAF
- Spark sql 解析引擎 Catalyst
- InternalRow 体系
- TreeNode 体系
- Expression 体系
- ANTLR
- 访问者模式
- AstBuilder
- Spark sql逻辑计划
- LogicPlan 基本操作与分类
- QueryPlan
- UnResolvedLogicPlan 生成
- Catalog 体系
- Rule 体系
- AnalyzedLogicalPlan 生成过程
- Spark sql优化器 optimizer
- optimizer 规则体系
- OptimizedLogicalPlan 的生成过程
- Spark sql物理计划
- SparkPlan
- Spark sql的执行原理
Spark Streaming
- Spark Streaming 是如何发展起来的?
- Spark Streaming 设计思想
- Spark Streaming 是什么?
- Spark Streaming 的特点
- Spark Streaming,Spark Structured Streaming,Storm,Flink 的对比
- Spark Streaming 工作原理
- Spark Streaming 整体架构
- DStream
- StreamingContext
- Spark Streaming 数据源
- Spark Streaming 转换输出操作
- 流数据上使用 DataFrame 和 sql 进行操作
- Spark Streaming 持久化
- Spark Streaming checkpoint
- Spark Streaming 共享变量
- 使用 foreachRDD 设计模式
- 将 DStream 输出到文件中
- 将 DStream 输出到 MysqL 中
- 将 DStream 输出到 HBase 中
- 将 DStream 数据输出到 Redis 中
Spark Structured Streaming
待补充
文献引用
- Hadoop 3.2.2 官方文档
- 《Hadoop大数据挖掘从入门到进阶实战:视频教学版》邓杰编著
- 《云时代的大数据技术与应用实践》朱利华著
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。