2018~2021 年期间,笔者阅读了200+大数据相关的书籍和专栏。
本专栏为笔者,在多年读书笔记的基础上,结合自身的大数据开发心得体会,呕心沥血之作。
同时笔者也根据个人推荐度对引用的文献进行了排行,详情请见参考文献。
来点关注吧,万分感谢!
本专栏姊妹篇100个问题搞定大数据理论体系
100个问题搞定Java虚拟机
目录结构 HDFS(3.2.2)- Hadoop是什么?
- 为什么使用Hadoop?
- Hadoop3.x有哪些新特性?
- Hadoop1.x 和 Hadoop2.x 有什么区别?
- HDFS的设计目标是什么?
- HDFS的设计需求有哪些?
- HDFS是什么?
- 怎么看待 HDFS 的设计思想?
- HDFS和普通的文件系统有什么差异?
- 图文详解HDFS体系架构
- SecondaryNameNode有什么作用?
- HDFS心跳机制是什么?
- HDFS上大文件如何切分?
- Block块是不是设置的越大越好?Block块是不是设置的越小越好?
- HDFS的高可用和联邦是什么?
- HDFS Snapshot 是什么?
- HDFS高可用原理是什么?
- HDFS容错性设计有哪些?
- HDFS读写流程是怎样的?
- HDFS是如何删除数据的?
- HDFS存储大量小文件有什么问题?如何存储大量小文件?
- SequenceFile 是什么?怎么用?
- HDFS MapFile 是什么?
- Hadoop 序列化是什么?
- Hadoop RPC是什么?
- Block块的存储策略是什么?HDFS副本放置策略是什么?
- HDFS副本机制是什么?
- HDFS机架感知是什么?
- HDFS的数据负载均衡策略有哪些?
- 你认为HDFS该如何解决三副本带来的存储成本问题?Hadoop3.x 的文件纠删码技术是什么?
- HDFS支持SSD存储吗?
- HDFS集中式缓存管理是什么?
- HDFS的启动流程怎样的?
- HDFS是如何进行权限管理的?
- HDFS是如何进行配额管理的?
- HDFS的文件归档(Archive)是什么?
- 如何理解HDFS的安全模式?
- 如何保障 HDFS 的数据安全?
- HDFS 的 Kerberos 认证是什么?
- HDFS 常用的命令行操作有哪些?
- HDFS 代码怎么写?
- 如何在两个HDFS集群之间如何传输数据?
- Hadoop有多少protocol?
- HDFS源码里面有哪些设计模式?
- HDFS源码中用到了哪些锁?
- 生产环境 Hadoop 集群对操作系统有哪些要求?
- HDFS如何调优?
- HDFS如何运维?
- HDFS常见的异常如何处理?
- MapReduce是什么?有什么特点?
- MapReduce编程模型是怎样的?
- 为什么要淘汰MapReduce?
- MapReduce工作流程?
- 图文详解 MapReduce on YARN
- 如何解决MapReduce数据倾斜的问题?
- MapReduce 代码怎么写?
- MapReduce 的计数器(Counter)是什么?
- MapReduce如何调优?
- YARN 的架构是怎样的?YARN 的核心组件有哪些?
- YARN应用运行原理是什么?
- 谈谈你对 YARN 这个框架的理解?
- YARN应用提交过程是怎样的?
- YARN中有哪些调度器?
- ResourceManager怎样实现高可用?
- YARN 如何调优?
- Zookeeper是什么?
- ZooKeeper 有什么特性?
- ZooKeeper有哪些应用场景?
- 如何用 ZooKeeper 实现分布式锁?
- ZooKeeper的架构是怎样的?
- ZooKeeper的选举机制是怎样的?
- 什么是ZooKeeper仲裁quorum? 为什么要仲裁?
- ZooKeeper数据模型是怎样的?
- ZooKeeper 的 Watch 机制是什么?
- ZooKeeper工作原理是什么?
- ZooKeeper问题如何应对?
- ZooKeeper 编程怎么写?
- 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?
- Hive 的数据压缩格式怎么选择?
- Hive 的文件存储格式怎么选择?
- Hive 的 SerDe 是什么?
- Hive 中如何解决多字符分割场景?
- Hive 如何调优?
- Hbase 怎么安装部署?
- Hbase是什么?有什么特点?
- Hbase 和 RDBMS 相比有什么区别?
- Hbase 整体架构是什么?
- Hbase 表的数据模型是什么?
- Hbase 的数据存储原理是什么?
- Hbase 的 flush 机制和 compact 机制是什么?
- Hbase 的 region 拆分机制是什么?
- Hbase 表的预分区是什么?为什么要预分区?如何预分区?
- Hbase 热点是什么?怎么解决 Hbase 热点?
- 如何搞懂 Hbase 的内部原理?
- Hbase 读写数据流程是咋样的?
- Hbase 的 bulkload 是什么?
- Hbase如何进行数据备份?
- Hbase二级索引?
- Hbase集群中每一个⻆色如何实现高可用?
- hbase的rowkey设计原则
- Hbase过滤器?
- Hbase计数器?
- Hbase协处理器?
- Phoenix是什么?
- 常见异常处理?
- Hbase存储模块总体设计
- Hbase应用场景
- Hbase shell
- Hbase JavaApi
- Flume 是什么?Flume 有什么特点?
- Flume的架构是怎样的?
- Flume 是怎么保障可靠性的?
- Flume 的可靠性级别有哪些?
- Flume 如何自定义 Mysql Source?
- Flume 如何自定义 Mysql Sink?
- Flume 怎样实现数据的断点续传?
- Flume的静态拦截器?
- Flume自定义拦截器
- Flume 的使用场景是什么?
- Sqoop 是什么?
- Sqoop 的使用场景是什么?
- Sqoop 基本架构是什么?
- Sqoop 1 和 2 区别
- Sqoop 工作原理是什么?
- 如何高效的增量收集数据?
- Sqoop Connector 有哪些?
Azkaban(3.30.1)待补充
- 为什么需要工作流调度系统?
- Azkaban 是什么?有什么特点?
- Azkaban 基本架构是什么?
- Azkaban 的三种部署模式是什么?
- 常见的工作流系统对比
Kafka(2.8)待补充
- 为什么要有消息队列/消息引擎系统?
- Kafka 是什么?
- 为什么使用 Kafka?
- Kafka 核心概念有哪些?
- Kafka 的架构是怎样的?
- Zookeeper对于Kafka的作用是什么?
- Kafka 的线上集群部署方案是怎样的?
- Kafka 集群常用命令有哪些?
- Kafka的 ack 的三种机制是什么?
- Kafka 生产者消息分区机制?
- Kafka 生产者压缩算法有哪些?
- 如何提升 Kafka 生产者的吞吐量?
- 如何保证 Kafka 消息不丢失?
- Kafka 如何不重复消费数据?
- Kafka 如何保证消息的有序性?
- Kafka 积压了百万消息如何处理?
- Kafka 生产者遇到了异常如何处理?
- Kafka 客户端拦截器
- Kafka 如何自定义分区?
- Kafka 的 Java 生产者如何管理 TCP 连接?
- Kafka 的 Java 消费者如何管理 TCP 连接?
- 幂等生产者是什么?
- 事务生产者是什么?
- 消费者组是什么?
- Kafka 的 Coordinator 是什么?
- 消费者组重平衡是什么?
- 消费者组消费进度监控都怎么实现?
- Kafka副本机制是什么?Kafka 的 ISR 是什么?
- Kafka 的 Producer 消息发送原理是什么?
- Kafka 请求处理全流程
- Kafka 消费者组重平衡全流程
- Kafka 的Controller
- Kafka 的高水位(HW)是什么?
- Kafka 的 LEO 是什么?
- Kafka 的 Leader Epoch 是什么?
- Kafka 如何管理主题?
- Kafka 的动态配置是什么?
- 怎么重设消费者组位移?
- Kafka 常见工具脚本?
- Kafka 怎么调优?
Flink(1.13.2)待补充
- 流计算框架对比?
- Flink 怎么部署安装?
- Flink 是什么?有什么特点?
- Flink 的编程模型是什么?
- Flink 功能模块是怎样的?
- Flink 的系统架构是怎样的?
- Flink 的集群部署模式有哪些?
- 一篇文章搞懂 Flink 的 Window
- Flink 的 Time 三兄弟
- 一篇文章搞懂 Flink 的 watermark 机制
- Flink 的状态保存和恢复
ELK(6.7.0)待补充
- Elasticsearch 怎么安装部署?
- ELK 是什么?
- 如何安装 elasticsearch-head 插件?
- Elasticsearch 的核心概念有哪些?
- Elasticsearch 怎么管理索引?
- 一篇文章入门 Elasticsearch 查询
- Elasticsearch 如何定义字段类型mappings ?
- Elasticsearch 的分页解决方案
- Elasticsearch 中文分词器 IK 的安装与使用
Kylin待补充
Spark Core(3.3.0-SNAPSHOT)待补充
因为笔者一直在研究 Apache Spark 的源码,故专栏中涉及 Spark 的源码版本都是基于 github 的 master 分支,当前版本号为:3.3.0-SNAPSHOT
- 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 通过什么来实现?
- Dataframe 编程模型是什么?
- RDD 和 Dataframe 的区别是什么?
- Dataset 是什么?
- SparkSession
- Dataframe API
- Dataframe 的常用操作
- 通过 RDD 如何构建 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 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 中
参考文献(按推荐度排序)待补充
官方文档都是要先阅读的,极客时间几个专栏都还不错,书籍推荐榜前几名强烈推荐!
后几名没什么必要去看,我都是引用了几句话所以加了进来。
博客引用不在推荐榜单排名内
随着专栏更新会不断更新~
- Hadoop 3.2.2 官方文档
- Spark 3.1.2 官方文档
- Kafka 2.8 官方文档
- Hbase 2.4.4 官方文档
- ZooKeeper 3.7 官方文档
- Hive 3.1.2 官方文档
- Flume 1.9.0 官方文档
- 极客时间专栏《Kafka核心技术与实战》胡夕
- 极客时间专栏《从0开始学大数据》李智慧
- 极客时间专栏《大规模数据处理实战》蔡元楠
- 极客时间专栏《Spark核心原理与实战》王磊
- 《大数据架构详解:从数据获取到深度学习》朱洁,罗华霖编著
- 《图解 Spark:核心技术与案例实战》郭景瞻编著
- 《Spark大数据商业实战三部曲:内核解密商业案例性能调优 第 2 版》王家林,段智华,夏阳编著
- 《Spark内核设计的艺术:架构设计与实现》耿嘉安著
- 《Hadoop专家:管理、调优与 Spark YARN HDFS安全》(美)山姆·阿拉帕蒂(SamR. Alapati)著; 赵国贤等译
- 《Hadoop权威指南(第3版)》(美)怀特(White,T.)著;华东师范大学数据科学与工程学院译
- 《企业数据湖》(印)汤姆斯・约翰(Tomcy John),(印)潘卡・米斯拉(Pankaj Misra)著;张世武,李想,张浩林译
- 《Spark内核机制解析及性能调优》王家林等编著
- 《Hadoop海量数据处理-技术详解与项目实战第2版》范东来著
- 《大数据技术体系详解:原理、架构与实战》董西成著
- 《Hadoop大数据技术原理与应用》 黑马程序员编著
- 《Hadoop大数据挖掘从入门到进阶实战:视频教学版》邓杰编著
- 《Hadoop & Spark大数据开发实战》肖睿、雷刚跃主编
- 《大数据开发与应用》青岛英谷教育科技股份有限公司,山东工商学院编著
- 《大数据时代 hadoop 技术及应用分析》韦鹏程,施成湘,蔡银英著
- 《从 Paxos到 Zookeeper:分布式一致性原理与实践》倪超著
- 《大数据技术及应用探究》胡沛,韩璞著
- 《云时代的大数据技术与应用实践》朱利华著
- 《云计算中的大数据技术与应用》梁凡著
- 《大数据技术概论》陈明编著
- 《大数据应用基础》娄岩主编
- 《Hadoop大数据分析》高水彬,钱亮宏,方志军编著
- 《大数据资源》朱扬勇主编
- 《大数据高可用环境搭建与运维》天津滨海迅腾科技集团有限公司编著
- MapReduce-Counter使用-快速实现大文件行数的统计



