八千里路云和月 | 2021年最新从零到大数据专家学习路径指南

在2019年9月份的时候,我写过一篇文章《剑谱总纲 | 大数据方向学习面试知识图谱》。站在2019年的视角来看,应该成为了2019年我写的在各个平台最受欢迎的文章之一。目前该篇文章在公众号阅读3300+。在当时来看,几乎每个读者都主动打开并阅读了该文章。

又过了两年,站在一个新的起点上。疫情突袭,反全球化浪潮迭起加之国内流量见顶,各大公司之间开启了白热化竞争。加之国家十四五规划出台,国家把信息科技作为了未来5-10年的核心发展方向,对我们传统的数据人提出了新的要求。

就像我在《大数据方向另一个十年开启》一文中所说,大数据方向秉持了10年前时候的姿态一直在向前发展,未来可能有些方向会慢慢消亡,或者从传统的定义进化。

2010年-2020年这10年是大数据从台后走到台前的10年,也是野蛮生长的10年,各位也可以看到这个细分方向从业人员的专业,基本涵盖了各种各样的专业。

「风口上的猪」终究有落地的一天。各大公司流量见顶,外部受到反全球化影响,内部反垄断+国家大棒追杀。除了核心的搜索、推荐、广告业务和各个公司核心的地盘业务,严控成本也已经是各家共识。

数据组和算法组最受影响,人员成本叠加设备成本过高,ROI过低。

所以,2020年开始至未来10年是这个行业规范化的时代。不在是写写SQL,跑跑脚本就能拿到可观的薪水的时代了。

基于此,我写了这个基于《剑谱总纲 | 大数据方向学习面试知识图谱》 的升级版,希望每一个进入这个细分领域的人得到的不在是一个阉割版、未来天花板较低的学习大纲。

八千里路云和月 | 2021年最新从零到大数据专家学习路径指南_第1张图片

以下是文章的主要内容:

第一部分:学习路径概览篇

第二部分:学习路径拆分篇

第三部分:视频&书籍推荐篇

第四部分:面试篇

第五部分:建议篇

第一部分:学习路径概览篇

1. 编程语言

计算机专业的同学的第一门语言大都是C语言,然后是面向对象的Java。除此之外,可以学习Scala和Python。

Java是大数据领域的屠龙刀,适合集团化大规模作战。对Java的要求没有上限,越熟悉越好。Python更像一把锋利的匕首,更适用于短兵相接和贴身肉搏,用来写各种脚本。

2.Linux基础

需要掌握基于Linux系统下的常用命令和常见问题诊断。

3.数据库入门

基于MySQL了解常见的SQL语法,大数据领域SQL化是未来的发展方向。

4.计算机基础

计算机网络,操作系统,数据结构和算法,计算机组成原理。

四门专业课,也是校招面试时的重点。

5.语言基础篇

  • 语言基础

  • 多线程

  • 并发包中常用的并发容器(J.U.C)

  • JVM

  • NIO

  • RPC

6.分布式理论篇

  • 分布式中的一些基本概念:集群(Cluster)、负载均衡(Load Balancer)等

  • 分布式系统理论基础:一致性、2PC 和 3PC

  • 分布式系统理论基础:CAP

  • 分布式系统理论基础:时间、时钟和事件顺序

  • 分布式系统理论进阶:Paxos

  • 分布式系统理论进阶:Raft、Zab

  • 分布式系统理论进阶:选举、多数派和租约

  • 分布式锁的解决方案

  • 分布式事务的解决方案

  • 分布式 ID 生成器解决方案

7.网络通信篇

  • Netty 三层网络架构:Reactor 通信调度层、职责链 PipeLine、业务逻辑处理层

  • Netty 的线程调度模型

  • 序列化方式

  • 链路有效性检测

  • 流量整形

  • 优雅停机策略

  • Netty 对 SSL/TLS 的支持 等等

8.离线计算篇

MapReduce HDFS YARN Hive Hbase

9.消息队列篇

  • Kafka

  • 了解Pulsar

10.实时计算篇

  • Spark

  • Flink

十分了解实时计算方向领域内的实时数据仓库、实时计算等的技术选型、架构设计、疑难杂症的排查。

11.数据仓库&数据湖

  • 数仓理论:范式、分层模型等

  • 数据仓库常见的问题:数据治理、元数据管理等

  • 数据湖理论和架构、用到的框架(Hudi、IceBerg)等

12.算法篇

  • 常见的大数据领域的算法:倒排、TopN、布隆过滤、字典树等

  • 了解常见的机器学习算法

  • 了解算法工程化

12.不可缺少的后端技能

  • Spring

  • Mybatis

  • SpringBoot

  • ...

以及后端常见的一些接口抽象、分层设计和架构设计(DDD领域驱动,MVC等)

13.业务理解

基于当前业务的技术选型、成本控制、ROI投入产出比

第二部分:学习路径拆分篇

1. 语言基础篇

语言基础

  • Java 的面向对象

  • Java 语言的三大特征:封装、继承和多态

  • Java 语言数据类型

  • Java 的自动类型转换,强制类型转换

  • String 的不可变性,虚拟机的常量池,String.intern() 的底层原理

  • Java 语言中的关键字:final、static、transient、instanceof、volatile、synchronized的底层原理

  • Java 中常用的集合类的实现原理:ArrayList/LinkedList/Vector、SynchronizedList/Vector、HashMap/HashTable/ConcurrentHashMap 互相的区别以及底层实现原理

  • 动态代理

  • CAS、乐观锁与悲观锁、数据库相关锁机制、分布式锁、偏向锁、轻量级锁、重量级锁、monitor

  • 锁优化、锁消除、锁粗化、自旋锁、可重入锁、阻塞锁、死锁

  • 死锁的原因

  • 死锁的解决办法

  • CountDownLatch、CyclicBarrier 和 Semaphore 三个类的使用和原理

多线程

  • 并发和并行的区别

  • 线程与进程的区别

  • 线程的实现、线程的状态、优先级、线程调度、创建线程的多种方式、守护线程

  • 自己设计线程池、submit() 和 execute()、线程池原理

  • 为什么不允许使用 Executors 创建线程池

  • 死锁、死锁如何排查、线程安全和内存模型的关系

  • ThreadLocal 变量

  • Executor 创建线程池的方式:

  • ThreadPoolExecutor 创建线程池、拒绝策略

  • 线程池关闭的方式

并发容器(J.U.C)

  • JUC 包中 List 接口的实现类:CopyOnWriteArrayList

  • JUC 包中 Set 接口的实现类:CopyOnWriteArraySet、ConcurrentSkipListSet

  • JUC 包中 Map 接口的实现类:ConcurrentHashMap、ConcurrentSkipListMap

  • JUC包中Queue接口的实现类:ConcurrentLinkedQueue、ConcurrentLinkedDeque、ArrayBlockingQueue、LinkedBlockingQueue、LinkedBlockingDeque

以及Java并发包下的其他内容。

JVM

  • JVM 内存结构

  • 堆和栈

  • Java 内存模型

  • 垃圾回收

  • JVM 参数及调优

  • Java 对象模型

  • 虚拟机性能监控与故障处理工具

  • 即时编译器、编译优化

  • 类加载机制

NIO

  • 用户空间以及内核空间

  • Linux 网络 I/O 模型:阻塞 I/O (Blocking I/O)、非阻塞 I/O (Non-Blocking I/O)、I/O 复用(I/O Multiplexing)、信号驱动的 I/O (Signal Driven I/O)、异步 I/O

  • 灵拷贝(ZeroCopy)

  • BIO、AIO、NIO 对比

  • 缓冲区 Buffer

  • 通道 Channel

  • 反应堆

  • 选择器

RPC

  • RPC 的原理编程模型

  • 常用的 RPC 框架:Thrift、Dubbo、SpringCloud

  • RPC 的应用场景和与消息队列的差别

  • RPC 核心技术点:服务暴露、远程代理对象、通信、序列化

2. Linux基础

  • 基本指令

  • 系统和网络命令

  • 权限模型

  • 基础的Shell脚本

3.分布式理论篇

  • 分布式中的一些基本概念:集群(Cluster)、负载均衡(Load Balancer)等

  • 分布式系统理论基础:一致性、2PC 和 3PC

  • 分布式系统理论基础:CAP

  • 分布式系统理论基础:时间、时钟和事件顺序

  • 分布式系统理论进阶:Paxos

  • 分布式系统理论进阶:Raft、Zab

  • 分布式系统理论进阶:选举、多数派和租约

  • 分布式锁的解决方案

  • 分布式事务的解决方案

  • 分布式 ID 生成器解决方案

4.网络通信Netty

Netty 是当前最流行的 NIO 框架,Netty 在互联网领域、大数据分布式计算领域、游戏行业、通信行业等获得了广泛的应用,业界著名的开源组件只要涉及到网络通信,Netty 是最佳的选择之一。

关于 Netty 我们要掌握:

  • Netty 三层网络架构:Reactor 通信调度层、职责链 PipeLine、业务逻辑处理层

  • Netty 的线程调度模型

  • 序列化方式

  • 链路有效性检测

  • 流量整形

  • 优雅停机策略

  • Netty 对 SSL/TLS 的支持

  • Netty的部分源码阅读举例:

Netty 的 Buffer
Netty 的 Reactor
Netty 的 Pipeline
Netty 的 Handler
Netty 的 ChannelHandler
Netty 的 LoggingHandler
Netty 的 TimeoutHandler
Netty 的 CodecHandler
Netty 的 MessageToByteEncoder

4.离线计算

Hadoop 体系是我们学习大数据框架的基石,尤其是 MapReduce、HDFS、Yarn 三驾马车基本垫定了整个数据方向的发展道路。也是后面我们学习其他框架的基础,关于 Hadoop 本身我们应该掌握哪些呢?

MapReduce

  • 掌握 MapReduce 的工作原理

  • 能用 MapReduce 手写代码实现简单的 WordCount 或者 TopN 算法

  • 掌握 MapReduce Combiner 和 Partitioner的作用

  • 熟悉 Hadoop 集群的搭建过程,并且能解决常见的错误

  • 熟悉 Hadoop 集群的扩容过程和常见的坑

  • 如何解决 MapReduce 的数据倾斜

  • Shuffle 原理和减少 Shuffle 的方法

HDFS

  • 十分熟悉 HDFS 的架构图和读写流程

  • 十分熟悉 HDFS 的配置

  • 熟悉 DataNode 和 NameNode 的作用

  • NameNode 的 HA 搭建和配置,Fsimage 和 EditJournal 的作用的场景

  • HDFS 操作文件的常用命令

  • HDFS 的安全模式

Yarn

  • Yarn 的产生背景和架构

  • Yarn 中的角色划分和各自的作用

  • Yarn 的配置和常用的资源调度策略

  • Yarn 任务资源调度的过程

Hive

Hive 是一个数据仓库基础工具,在 Hadoop 中用来处理结构化数据。它架构在 Hadoop 之上,总归为大数据,并使得查询和分析方便。Hive 是应用最广泛的 OLAP 框架。Hive SQL 也是我们进行 SQL 开发用的最多的框架。

关于 Hive 你必须掌握的知识点如下:

  • HiveSQL 的原理:我们都知道 HiveSQL 会被翻译成 MapReduce 任务执行,那么一条 SQL 是如何翻译成 MapReduce 的?

  • Hive 和普通关系型数据库有什么区别?

  • Hive 支持哪些数据格式

  • Hive 在底层是如何存储 NULL 的

  • HiveSQL 支持的几种排序各代表什么意思(Sort By/Order By/Cluster By/Distrbute By)

  • Hive 的动态分区

  • HQL 和 SQL 有哪些常见的区别

  • Hive 中的内部表和外部表的区别

  • Hive 表进行关联查询如何解决长尾和数据倾斜问题

  • HiveSQL 的优化(系统参数调整、SQL 语句优化)

列式数据库 Hbase

我们在提到列式数据库这个概念的时候,第一反应就是 Hbase。

HBase 本质上是一个数据模型,类似于谷歌的大表设计,可以提供快速随机访问海量结构化数据。它利用了 Hadoop 的文件系统(HDFS)提供的容错能力。它是 Hadoop 的生态系统,提供对数据的随机实时读/写访问,是 Hadoop 文件系统的一部分。

我们可以直接或通过 HBase 的存储 HDFS 数据。使用 HBase 在 HDFS 读取消费/随机访问数据。HBase 在 Hadoop 的文件系统之上,并提供了读写访问。

HBase 是一个面向列的数据库,在表中它由行排序。表模式定义只能列族,也就是键值对。一个表有多个列族以及每一个列族可以有任意数量的列。后续列的值连续地存储在磁盘上。

表中的每个单元格值都具有时间戳。总之,在一个 HBase:表是行的集合、行是列族的集合、列族是列的集合、列是键值对的集合。

关于 Hbase 你需要掌握:

  • Hbase 的架构和原理

  • Hbase 的读写流程

  • Hbase 有没有并发问题?Hbase 如何实现自己的 MVVC 的?

  • Hbase 中几个重要的概念:HMaster、RegionServer、WAL 机制、MemStore

  • Hbase 在进行表设计过程中如何进行列族和 RowKey 的设计

  • Hbase 的数据热点问题发现和解决办法

  • 提高 Hbase 的读写性能的通用做法

  • HBase 中 RowFilter 和 BloomFilter 的原理

  • Hbase API 中常见的比较器

  • Hbase 的预分区

  • Hbase 的 Compaction

  • Hbase 集群中 HRegionServer 宕机如何解决

5.消息队列篇

Kafka 是最初由 Linkedin 公司开发,是一个分布式、支持分区的(partition)、多副本的(replica)的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于 Hadoop 的批处理系统、低延迟的实时系统、Spark 流式处理引擎,Nginx 日志、访问日志,消息服务等等,用 Scala 语言编写,Linkedin 于 2010 年贡献给了 Apache 基金会并成为顶级开源项目。

Kafka 或者类似 Kafka 各个公司自己造的消息'轮子'已经是大数据领域消息中间件的事实标准。Kafka 不满足单纯的消息中间件,也正朝着平台化的方向演进。

关于 Kafka 我们需要掌握:

  • Kafka 的特性和使用场景

  • Kafka 中的一些概念:Leader、Broker、Producer、Consumer、Topic、Group、Offset、Partition、ISR

  • Kafka 的整体架构

  • Kafka 选举策略

  • Kafka 读取和写入消息过程中都发生了什么

  • Kakfa 如何进行数据同步(ISR)

  • Kafka 实现分区消息顺序性的原理

  • 消费者和消费组的关系

  • 消费 Kafka 消息的 Best Practice(最佳实践)是怎样的

  • Kafka 如何保证消息投递的可靠性和幂等性

  • Kafka 消息的事务性是如何实现的

  • 如何管理 Kafka 消息的 Offset

  • Kafka 的文件存储机制

  • Kafka 是如何支持 Exactly-once 语义的

  • 通常 Kafka 还会要求和 RocketMQ 等消息中间件进行比较

6.实时计算篇

你可以参考:《我们在学习Spark的时候,到底在学习什么?》

Spark 是专门为大数据处理设计的通用计算引擎,是一个实现快速通用的集群计算平台。它是由加州大学伯克利分校 AMP 实验室开发的通用内存并行计算框架,用来构建大型的、低延迟的数据分析应用程序。它扩展了广泛使用的 MapReduce 计算模型。高效的支撑更多计算模式,包括交互式查询和流处理。Spark 的一个主要特点是能够在内存中进行计算,即使依赖磁盘进行复杂的运算,Spark 依然比 MapReduce 更加高效。

Spark 生态包含了:Spark Core、Spark Streaming、Spark SQL、Structured Streming 和机器学习相关的库等。

学习 Spark 我们应该掌握:

  • Spark Core

  • Spark的集群搭建和集群架构(Spark 集群中的角色)

  • Spark Cluster 和 Client 模式的区别

  • Spark 的弹性分布式数据集 RDD

  • Spark DAG(有向无环图)

  • 掌握 Spark RDD 编程的算子 API(Transformation 和 Action 算子)

  • RDD 的依赖关系,什么是宽依赖和窄依赖

  • RDD 的血缘机制

  • Spark 核心的运算机制

  • Spark 的 CheckPoint 和容错

  • Spark 的通信机制

  • Spark Shuffle 原理和过程

  • Spark Streaming

  • 原理剖析(源码级别)和运行机制

  • Spark Dstream 及其 API 操作

  • Spark Streaming 消费 Kafka 的两种方式

  • Spark 消费 Kafka 消息的 Offset 处理

  • 数据倾斜的处理方案

  • Spark Streaming 的算子调优

  • 并行度和广播变量

  • Shuffle 调优

  • Spark SQL

  • Spark SQL 的原理和运行机制

  • Catalyst 的整体架构

  • Spark SQL 的 DataFrame

  • Spark SQL 的优化策略:内存列式存储和内存缓存表、列存储压缩、逻辑查询优化、Join 的优化

  • Structured Streaming

Spark 从 2.3.0 版本开始支持 Structured Streaming,它是一个建立在 Spark SQL 引擎之上可扩展且容错的流处理引擎,统一了批处理和流处理。正是 Structured Streaming 的加入使得 Spark 在统一流、批处理方面能和 Flink 分庭抗礼。

我们需要掌握:

  • Structured Streaming 的模型

  • Structured Streaming 的结果输出模式

  • 事件时间(Event-time)和延迟数据(Late Data)

  • 窗口操作

  • 水印

  • 容错和数据恢复

  • Spark Mlib

本部分是 Spark 对机器学习支持的部分,我们学有余力的同学可以了解一下 Spark 对常用的分类、回归、聚类、协同过滤、降维以及底层的优化原语等算法和工具。可以尝试自己使用 Spark Mlib 做一些简单的算法应用。

Flink

你可以参考:《我们在学习Flink的时候,到底在学习什么?》

文中缺少两张图,可以在我的朋友圈找到。

Apache Flink(以下简称 Flink)项目是大数据处理领域最近冉冉升起的一颗新星,其不同于其他大数据项目的诸多特性吸引了越来越多人的关注。尤其是 2019 年初 Blink 开源将 Flink 的关注度提升到了前所未有的程度。

那么关于 Flink 这个框架我们应该掌握哪些核心知识点?

  • Flink 集群的搭建

  • Flink 的架构原理

  • Flink 的编程模型

  • Flink 集群的 HA 配置

  • Flink DataSet 和 DataSteam API

  • 序列化

  • Flink 累加器

  • 状态 State 的管理和恢复

  • 窗口和时间

  • 并行度

  • Flink 和消息中间件 Kafka 的结合

  • Flink Table 和 SQL 的原理和用法

  • Flink CDC

  • Flink和其他框架的Connector的原理和使用

  • Flink SQL中常见的问题

7.其他

数据仓库&数据湖

  • 数仓理论:范式、分层模型等

  • 数据仓库常见的问题:数据治理、元数据管理等

  • 数据湖理论和架构、用到的框架(Hudi、IceBerg)等

算法

  • 常见的大数据领域的算法:倒排、TopN、布隆过滤、字典树等

  • 了解常见的机器学习算法

  • 了解算法工程化

第三部分:视频&书籍推荐篇

这部分我在之前的分类文章中会有推荐,如果有遗漏可以参考之前的各个分类下的文章。

万能的B站!Orz...

操作系统

  • 学堂在线上清华的操作系统

参考链接:https://www.xuetangx.com/course/THU08091000267/5883104

  • 哈工大李治军老师的操作系统

参考链接:https://www.icourse163.org/course/HIT-1002531008#/info

  • B站视频:操作系统

参考链接:https://www.bilibili.com/video/BV1YE411D7nH

数据结构与算法

  • 陈越&何应钦

参考链接:https://www.icourse163.org/course/zju-93001#/info

  • B站视频(Java版数据结构与算法)

参考链接:https://www.bilibili.com/video/BV1E4411H73v

计算机网络

  • 哈工大

参考链接:https://www.icourse163.org/course/hit-154005

  • 中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版》

参考链接:https://www.bilibili.com/video/BV1JV411t7ow

计算机组成原理

  • 哈工大

参考链接:

上:https://www.icourse163.org/course/hit-309001#/info

下:https://www.icourse163.org/course/hit-1001527001#/info

计算机专业应用

  • Java零基础入门

参考链接:https://www.bilibili.com/video/BV1Kb411W75N

  • MySQL数据库

参考链接:https://www.bilibili.com/video/BV1KW411u7vy

  • Linux教程

参考链接:https://www.bilibili.com/video/BV1dW411M7xL

  • 大数据Hadoop 2.x教程

参考链接:https://www.bilibili.com/video/BV1cW411r7c5

  • Hive框架详解

参考链接:https://www.bilibili.com/video/BV1W4411B7cN

  • Hbase教程

参考链接:https://www.bilibili.com/video/BV1Pb411A7ad

  • Kafka教程

参考链接:https://www.bilibili.com/video/BV1Nb411A7Ln

  • Spark教程

参考链接:https://www.bilibili.com/video/BV11A411L7CK

  • Flink入门教程

参考链接:https://www.bilibili.com/video/BV1Qp4y1Y7YN

  • 实战项目

参考教程:https://www.bilibili.com/video/BV1Hp4y1z7aZ

参考教程:https://www.bilibili.com/video/BV1df4y1U79z

参考教程:https://www.bilibili.com/video/BV1dJ411k7BE

第四部分:面试篇

你可以参考:《2021年大数据面试进阶系列系统总结》

或者你可以在CSDN找到我持续更新的面试篇大纲:

https://blog.csdn.net/u013411339/article/details/112426724

另外,欢迎大家加入我的知识星球《挺进大厂》,后台回复:知识星球。基于个人面试经历的面试题总结。

汇总部分

  • 剑谱总纲 | 大数据方向学习面试知识图谱

  • 一线互联网公司面试进阶全攻略

  • 【大数据成神之路】第一版更新完毕

  • 关于技术面试的一点点体会

专题部分

Hadoop系列

  • 最新Hive/Hadoop高频面试点小集合

  • Hadoop所支持的几种压缩格式

  • 【大数据面试之对线面试官】MapReduce/HDFS/YARN面试题70连击

  • HDFS的SecondaryNameNode作用,你别答错了

  • Yarn 使用 Cgroup 实现任务资源限制

  • 查看YARN任务日志的几种方式

  • 最新Hive/Hadoop高频面试点小集合

  • 大数据哔哔集20210106 - Hadoop3.0有哪些新特性

Hive

  • Hive性能调优 | 数据倾斜

  • 面试必备技能-HiveSQL优化

  • Hive常用参数调优十二板斧

Hbase

  • 面试必考点:HBase Compaction机制

  • Hbase性能优化百科全书

ES等

  • 触类旁通Elasticsearch之吊打同行系列:原理篇

  • 触类旁通Elasticsearch之吊打同行系列:操作篇

  • 触类旁通Elasticsearch之吊打同行系列:搜索篇

Kafka/消息队列

  • 面试知识点 | Kafka的数据存储与索引设计

  • Kafka面试题系列(基础篇)

  • Kafka面试题系列(进阶篇)

  • Kafka面试题系列(进阶篇2)

  • 关于MQ面试的几件小事 | 消息队列的用途、优缺点、技术选型

  • 关于MQ面试的几件小事 | 如何保证消息不丢失

  • 关于MQ面试的几件小事 | 如何保证消息按顺序执行

  • 一道真实的阿里面试题 | 如何保证消息队列的高可用

  • 你可能需要知道的Kafka面试题与部分答案整理

  • 消息队列面面观

  • Kafka三种可视化监控管理工具Monitor/Manager/Eagle

  • Kafka体系架构详细分解

  • Kafka笔记—可靠性、幂等性和事务

  • Kafka体系架构详细分解

  • Kafka面试题系列(进阶篇)

  • Kafka面试题系列(基础篇)

  • 面试知识点 | Kafka的数据存储与索引设计

  • 斗转星移 | 三万字总结Kafka各个版本差异

Spark

  • 面试必知的 Spark SQL 几种 Join 实现

  • 面试注意点 | Spark&Flink的区别拾遗

  • Spark如何协调来完成整个Job的运行详解

  • 独孤九剑-Spark面试80连击(上) https://blog.csdn.net/u013411339/article/details/100179471

  • 独孤九剑-Spark面试80连击(下)https://blog.csdn.net/u013411339/article/details/100179469

  • Spark的Cache和Checkpoint区别和联系拾遗

  • Spark Job 逻辑执行图和数据依赖解析

  • Spark Job 物理执行图详解

  • Spark Shuffle过程详解

Flink

  • 【大数据面试题】Flink企业级面试题60连击

  • 全网第一 | Flink学习面试灵魂40问答案

  • 面试别人说他熟悉Flink,我问了他Flink如何实现exactly-once语义

  • 阅读源码|Spark 与 Flink 的 RPC 实现

  • Flink性能调优小小总结

  • 生产上的坑才是真的坑 | 盘一盘Flink那些经典线上问题

  • 我们在学习Flink的时候,到底在学习什么?

数据仓库/数据湖

  • 数据湖存储架构选型

  • 数据湖架构、战略和分析的8大错误认知

  • 数据湖在大数据典型场景下应用调研个人笔记

  • 数据湖VS数据仓库?湖仓一体了解一下

后端相关

  • 三万六千字通关MySQL面试

  • 分析和定位线上作业 OOM 问题利器-MAT

  • 浅谈ZooKeeper中Kafka相关信息的存储

  • JVM架构体系与GC命令小总结

  • 深入理解CAP理论和适用场景

  • ZooKeeper需要关注的点

  • MySQL中InnoDB及索引深入剖析

  • MySql的Binlog日志工具分析:Canal、Maxwell、Databus、DTS

  • 一致性协议算法-2PC、3PC、Paxos、Raft、ZAB、NWR超详细解析

  • MySQL数据库性能优化史诗级大总结

不便分类的其他

  • 十道海量数据处理面试题

  • 这个面试问题很难么 | 如何处理大数据中的数据倾斜

  • 面试系列:十个海量数据处理方法大总

  • 我们常说的海量小文件的根源是什么?

  • 28道关于ZooKeeper的面试题

  • 【数据白皮书重磅分享】推荐|埋点|用研|标签

  • 1万2千字长文助力春招 | Netty面试篇

  • Filter(过滤)|Project(映射)|Pushdowns(谓词下推)

  • 代达罗斯之殇-大数据领域小文件问题解决攻略

面试综合系列

  • 【对线面试官】阿里面试经历,有些人走一步看一步就挂了

  • 关于技术面试的一点点体会

  • 助力秋招-独孤九剑破剑式 | 10家企业面试真题

  • 如果你在准备面试,好好看看这130道题

简历系列

  • 一份优秀的简历该长成什么样

  • 你过来,我给你看个宝贝

第五部分:关于建立知识体系的建议

之前跟几个前同事聊天,聊起招人,吐槽吐槽着聊到这个话题。关于技术人的知识体系的问题。

知识体系其实不光适用在技术人的技术建设上,个人的知识体系建设也很重要。

常见的几个问题,看看大家有没有体会:

一、经常过度陷入技术性细节中

这个表现在什么地方?比如我问你一个问题,xxx功能是如何实现的?很多同学就开始从功能、表结构等等开始讲,很少站在一个系统设计的角度讲这个功能的上下游,为什么需要,为什么不用其他方案。

二、懂的框架太多太杂,全是知识点

数据开发的同学们尤其严重,有些同学在简历上罗列的框架不少于30个。没有基本的工程能力,上来就是分布式、流计算,搞不清楚数据开发在整个企业技术架构中的上下承接关系,后端基础几乎为0。

对于数据这个点来说,搞不清10年来是如何发展到今天的,过度追逐新的框架,人云亦云,盲目上马。对于技术框架解决的业务问题思考过少。太多人问我用不用Pulsar、用不用Flink了,我怎么回答你?你首先要清楚Pulsar、Flink解决了别人解决不了的什么样问题,去翻官网,自己搞个脚手架玩一玩,而不是看到Pulsar吹自己要替代Kafka,Flink吹自己吊打Spark,所以就要用吧。

三、后端基础几乎为0

我可以很负责的告诉大家,一个没有后端开发基础、没有工程能力的数据开发是不合格的,严格意义上都不能被称为开发,不如叫数据分析师或者运维开发好了。所以做过后端的同学们,这是你的天然优势,Spring从0几年开始迭代至今快有20年了,从Spring1.x到Spring Boot的问世,没事就看上一眼,Github有海量的Demo可以一键跑起来,后端技能万万不可抛弃。

Java的后端生态是所有语言中最强大,最全面的。发展至今已经成了互联网的基石,是很难轻易替代的。这也是大多数大数据框架选择Java开发的原因之一。

四、自己画个思维导图,看看自己的技术栈是否完整

不知道有多少同学有这个能力能白板画出自己的技术栈和语言基础栈,你会哪些东西,这些知识点是如何关联的,各自适用于什么样的场景。

有多少人能画出Java JUC这个包下的常用类的关系来,类似下图。

如果你工作3年以上,能徒手画出这样的类图是基本能力,然后不用别人问你问题,自己都能知道哪里是考点。

这就跟一个考研的同学需要能徒手画出专业课的知识架构来一样是基本要求。

建立自己的知识体系不是一件容易的事,需要大量的外部输入,看大量的文章和别人的经验,也需要强大的执行力。看是一回事,消化掉融进自己的知识体系是另外一回事。

每天我们都被海量的点状信息不断轰炸,各个门户网站、公众号的文章应接不暇,很多人保存一下就没下文了,很可能几年都不翻。我的习惯是,看到一篇好文章,觉得可以实践就立马保存,然后抽时间把他的东西整理一下,整理到自己的学习文档中,附个连接上去。久而久之,随着你自己整理的东西越来越多,整个知识就会像一个Xmind图一样印在脑海里。

没有这样的技术大图在脑海里,如何做技术选型,如何做技术架构?

这件事越早做越好。

最后

不知不觉已经洋洋洒洒一万多字,如果把文章中的引用文章展开估计会突破3万字。以上的学习路径是我在读书和工作后摸索出来的个人学习路径。如果有遗漏和纰漏欢迎批评指正。

其中少了一部分内容,例如算法工程化和业务理解部分,这部分内容一是不容易展开,二是部分我也在探索中,不好说拿出不成熟的经历来误导大家。这部分会在后面持续更新。

也请大家见证我个人的成长过程。

时代在进步,后浪已成席卷之势而来。

就像我在朋友圈发的:

已经消亡的技术该不该回顾?

当下正红的框架该不该警惕?

未来可期的领域该不该斟酌?

答案是显而易见的。

具有过去、现在、未来思维的开发者才终有年薪百万之日。

过去的Oracle,当下的MySQL,再到孕育中的OLAP等,你不得不密切关注分布式数据库的发展。

过去的Weblogic,曾经的Tomcat,以及燎原中的嵌入式容器,你不得不卷入轻量级容器的潮流。

过去的堆叠式部署,当下的docker实施,叠加压顶之势的Cloud Native,你不得不全面拥抱云的时代。

没有时间广角的开发者终将被时代所抛弃。

不谋全局者,不足以谋一域。

不谋万世者,不足以谋一时。

大数据,YYDS。

你好,我是王知无,一个大数据领域的硬核原创作者。

做过后端架构、数据中间件、数据平台&架构、算法工程化。

专注大数据领域实时动态&技术提升&个人成长&职场进阶,欢迎关注。

你可能感兴趣的:(分布式,大数据,编程语言,hadoop,oom)