# 学习路线
未来想在互联网发展,应该怎么学?就大数据方向来说,我个人认为主要有三个方面:
第一,计算机基础知识是不可或缺的,如果你拥有扎实的基础知识,在遇到问题时可以快速认识到问题的本质,从而解决问题。我至今在不断在加强自己计算机基础知识的学习;
第二,大数据框架的技术原理,对于重点框架要重视企业级调优以及源码的学习。
第三,项目实战。学习了大量的技术需要结合项目场景去应用,才能加深你对技术的理解。
大数据是一个进可攻、退可守的方向。
进可以往人工智能方向发展,但是需要非常扎实的数学知识。
## 计算机基础
精通一门语言:Java,C,C++,Python,Go,Scala,等等。(大数据建议选择 Java、Scala或者Python)我自己学习的是Java语言,语言只是一门工具,无需太过纠结。
数据结构与算法:链表,队列,堆,二叉树,排序,查找,贪心,回溯等。
计算机网络与基础:OSI七层体系,常用的TCP/IP四层体系。
操作系统:进程与线程,乐观锁与悲观锁,缓存一致性,CPU时间片调度。
数学:高等数学,线性代数,概率论与数理统计。
## 大数据框架
**Linux**:无论你做的是后端还是大数据,`Linux`已经成为企业筛选人才的一个标准。我极力推荐观看尚硅谷韩顺平老师的Linux入门视频教程,清华大学的学霸,课程逻辑清晰,讲解透彻。
**Hadoop**:Hadoop是大数据技术中最重要的框架之一,是学习大数据的第一课。目前,Hadoop已经从1.x版本发展到现在的3.x版本。Hadoop一共包含3个组件:分别是最强的分步式文件系统HDFS,海量数据并行计算框架MapReduce,流行的资源管理系统Yarn。任何框架的学习,先搭建好环境,线上跑一个测试案例,之后再深入其原理。HDFS有伪分布式、完全分步式以及高可用架构模型,重点了解HA架构模型以及各个角色的职责。
**ZooKeeper**:ZooKeeper是一个分步式协调管理组件,主要的典型应用场景是数据发布/订阅、分步式协调/通知、集群管理等。你可以结合《从Paxos到ZooKeeper》这本书结合一起学,这本书不仅阐述了CAP理论,把ZooKeeper的核心原理讲的很透。小白可以从下面这个视频入门。
尚硅谷ZooKeeper链接:https://space.bilibili.com/302417610/video?keyword=ZooKeeper
**Hive**:Hive 是一款开源数据仓库工具,它可以将结构型数据映射成一张表,但其底层使用的是MapReduce,提供类SQL查询,一般称之为HQL。初学者入门Hive,可以从视频开始,重点需要了解内部表与外部表的区别,以及分区分桶等。如果你要深入学习其内部原理及调优,可以去读一读《Hive编程指南》和Apache官方文档,对企业级的调优有详细的阐述。
尚硅谷Hive链接:https://www.bilibili.com/video/BV1EZ4y1G7iL
**HBase**:HBase是一个结构化数据的分步式存储系统,可扩展也支持海量数据存储的NoSQL数据库,是每一个大数据从业者应该要掌握的基本框架。重点要掌握其架构原理,各个角色职责,Compact流程和Region流程。下面是入门 HBase 的视频教程。
尚硅谷HBase链接:https://www.bilibili.com/video/BV1Y4411B7jy
**Redis**(重点!):Redis是一个开源的 key-value 存储系统,支持存储的 value 类型相对更多,并且支持各种不同方式的排序,为了保存效率,数据都是缓存在内存中。该组件无论是后端还是大数据,都是必会的一个框架。我学习一个新技术,先是通过视频入门,之后再去看相关书籍和官方文档,深入理解技术细节。
尚硅谷周阳老师Redis链接:https://www.bilibili.com/video/BV1oW411u75R
**Kafka**(重点!): 作为高吞吐量的分步式发布订阅消息系统,Kafka 可以处理消费者规模的网站中所有动作流数据。这里建议:先了解 Kafka 是解决什么问题的而产生的,再了解其基本架构,最后深入理解核心实现原理。
尚硅谷Kafka入门链接:https://www.bilibili.com/video/BV1a4411B7V9
**Spark**(重点!重点!重点!):Spark 支持了 Streaming、SQL、GraphX、MLLib等应用。但相较于 Hadoop 中的 MapReduce 计算框架,Spark速度快10到100倍左右另外,计算过程中,如果某一节点出现问题,事件重演的代价远低于 MapReduce。Spark SQL 可以对结构化数据进行处理。Spark Streaming 主要用于实时流数据处理场景,支持多种数据源,DStream 是 Spark Streaming 的基础抽象Spark MLlib 提供了常见的机器学习功能的程序库,GraphX 主要用于图计算。下面是我为大家筛选的 Spark 入门学习链接,这个视频主要是基于Scala 2.12版本讲解,对最新的 Spark3.0作了详细的介绍,是一套小白入门学习的好资料。
**Flink**(重点!重点!重点!):Flink 是一个分步式处理引擎,用于对无界和有界数据流进行状态计算。Flink 计算具有快速、灵巧、结果准确以及良好的容错性等一系列优点,被广泛用于各行各业的流式数据场景。目前,国内形成以阿里为首的企业,腾讯,京东,滴滴,携程,美团等,都在使用 Flink框架。Flink 在大数据的流式计算占据着非常重要的地位,每一个大数据人都应该要掌握这门技术。