大数据学习线路图

大数据入门指南 : https://github.com/heibaiying/BigData-Notes
大数据成神之路 : https://github.com/wangzhiwubigdata/God-Of-BigData
大数据学习指南 : https://github.com/MoRan1607/BigDataGuide
大数据面试题 : https://github.com/CheckChe0803/BigData-Interview
此文档中包含大部分大数据软件的基本使用

首先,在准备学习大数据之前,我们要理解大数据不是某个专业或一门编程语言,实际上它是一系列技术的组合运用。

基础阶段

Linux基础:shell

因为大数据相关软件都是在Linux上运行的,所以Linux要学习的扎实一些,学好Linux对你快速掌握大数据相关技术会有很大的帮助,能让你更好的理解hadoop、hive、hbase、spark等大数据软件的运行环境和网络环境配置,能少踩很多坑,学会shell就能看懂脚本这样能更容易理解和配置大数据集群。还能让你对以后新出的大数据技术学习起来更快。

编程语言:Java基础(JavaSE), Scala, Python

大家都知道Java的方向有JavaSE、JavaEE、JavaME,学习大数据要学习那个方向呢?只需要学习Java的标准版JavaSE就可以了,当然Java怎么连接数据库还是要知道的,像JDBC一定要掌握一下。
Scala,Spark项目是由Scala语言编写的。
Python,目前大数据基本都支持python了。

数据库:MySQL

和数据打交道,当然需要对使用最广泛的MySQL及其SQL语言非常熟悉。大数据中的原始业务数据基本都是存储在关系型数据库中。所以一定要熟练使用数据库。

Hadoop及其生态

Hadoop

Hadoop几乎已经成为大数据的代名词,所以这个是必学的。Hadoop里面包括几个组件HDFSMapReduceYarn

  • HDFS,Hadoop分布式文件系统,它是Hadoop的基础。
  • YARN,分布式资源管理,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。有了它大数据生态体系的其它软件就能在hadoop上运行了,因为它能更好的利用HDFS大存储的优势和节省更多的资源。
  • MapReduce,分布式计算系统,处理效率非常低,生产环境中基本已经被spark取代,当然一些T+1类型的计算使用它还是没问题的。

Hive

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。类似Navicat客户端,不同的是Hive是读取HDFS上的数据,作为离线查询使用,离线就意味着速度很慢,有可能跑一个任务需要几个小时甚至更长时间都有可能。在日常开发中Hive用的还是挺广泛的,常做一些统计工作等。

Sqoop 和 Flume

Sqoop,是用于把Mysql等传统数据库里的数据导入到Hadoop里的。当然你也可以不用这个,直接把Mysql数据表导出成文件再放到HDFS上也是一样的,当然生产环境中使用要注意Mysql的压力。

Flume是高可用的,分布式的海量日志数据采集,聚合和传输的系统。最主要的作用就是实时的读取服务器本地磁盘的数据,将数据写到HDFS里面。

Flume和Sqoop是Hadoop数据集成和收集系统,各自擅长的领域不同,因此应用场景也不同。

Zookeeper

这是个万金油,安装Hadoop的HA(高可用)的时候就会用到它,以后的Hbase也会用到它。它一般用来存放一些相互协作的信息,这些信息比较小一般不会超过1M,都是使用它的软件对它有依赖,对于我们个人来讲只需要把它安装正确,让它正常的run起来就可以了。

Oozie

在没有工作流调度系统之前,公司里面的任务都是通过 crontab 来定义的,时间长了后会发现很多问题:大量的crontab、没有按时执行,各种原因失败,需要重试、多服务器环境下,crontab分散在很多集群上。而在大数据领域,现在市面上常用的工作流调度工具有Oozie, Azkaban,Cascading,Hamake等。

Apache Hue

HUE=Hadoop User Experience,Hue是一个开源的Apache Hadoop UI系统,是基于Python Web框架Django实现的。可以在浏览器端的Web控制台上与Hadoop集群进行交互,来分析处理数据,例如操作HDFS上的数据,运行MapReduce Job,执行Hive的SQL语句,浏览HBase数据库等等。

Cloudera Manager

是一个拥有集群自动化安装、中心化管理、集群监控、报警功能的一个工具(软件),使得安装集群从几天的时间缩短在几个小时内,运维人员从数十人降低到几人以内,极大的提高集群管理的效率。Cloudera Manager可以管理大部分hadoop生态软件。

Apache Atlas

Apache 旗下的一款元数据管理和治理的产品, 这些资产进行分类和治理,为数据分析,数据治理提供高质量的元数据信息.
随着企业业务量的逐渐膨胀,数据日益增多,不同业务线的数据可能在多种类型的数据库中存储,最终汇集到企业的数据仓库中进行整合分析,这个时候如果想要追踪数据来源,理清数据之间的关系将会是一件异常头疼的事情,倘若某个环节出了问题,追溯的成本将是巨大的,于是 Atlas 在这种背景下应运而生了,通过它,我们可以非常方便的管理元数据,并且可以追溯表级别,列级别之间的关系(血缘关系),为企业的数据资产提供强有力的支撑和保障。Atlas 支持从 HBase 、Hive、Sqoop、Storm、Kafka 中提取和管理元数据,同时也可以通过 Rest Api 的方式自行定义元数据模型,生成元数据。

计算引擎

Spark

Spark不能替代Hadoop,主要用于替代Hadoop中的MapReduce计算模型。

Spark的生态系统主要包含了Spark Core、Spark SQL、Spark Streaming、MLLib和GraphX 等组件,各个组件的具体功能如下:

  • Spark Core:Spark Core包含Spark的基本功能,如内存计算、任务调度、部署模式、故障恢复、存储管理等。Spark建立在统一的抽象RDD之上,使其可以以基本一致的方式应对不同的大数据处理场景;通常所说的Apache Spark,就是指Spark Core;
  • Spark SQL:Spark SQL允许开发人员直接处理RDD,同时也可查询Hive、HBase等外部数据源。Spark SQL的一个重要特点是其能够统一处理关系表和RDD,使得开发人员可以轻松地使用SQL命令进行查询,并进行更复杂的数据分析;
  • Spark Streaming:Spark Streaming支持高吞吐量、可容错处理的实时流数据处理,其核心思路是将流式计算分解成一系列短小的批处理作业。Spark Streaming支持多种数据输入源,如Kafka、Flume和TCP套接字等;
  • MLlib(机器学习):MLlib提供了常用机器学习算法的实现,包括聚类、分类、回归、协同过滤等,降低了机器学习的门槛,开发人员只要具备一定的理论知识就能进行机器学习的工作;
  • GraphX(图计算):GraphX是Spark中用于图计算的API,可认为是Pregel在Spark上的重写及优化,Graphx性能良好,拥有丰富的功能和运算符,能在海量数据上自如地运行复杂的图算法。

Flink

由于 Spark Streaming 是基于批处理引擎的,因此它的处理延时较大,基本上为秒级延迟。因此,具有毫秒级的流处理引擎 Flink 诞生了。

其他常用大数据工具

fineBI/Apache Superset 数据可视化

FineBI是帆软软件有限公司推出的一款商业智能产品,针对企业信息化遇到的困难,为企业提供专业的商业智能解决方案。FineBI的商业智能分析模块可以预测模拟企业将来的发展,协助企业及时调整策略做出更好的决策,增强企业的可持续竞争性。

Apache Superset开源的、现代的、轻量级BI分析工具,python语言开发的web应用,要求python3.6环境。

消息队列:kafka

Kafka是一个分布式的、高吞吐的、基于发布/订阅的消息系统。利用kafka技术可以在廉价PC Server上搭建起大规模的消息系统。

内存缓存:redis

作为一个高速缓存,redis几乎可以在任何环节中用到。

采集系统

数据来源不仅仅从业务数据,日志等获取,还可以使用采集系统,采集外部数据。

自然语言处理NLP

文字类型的数据,必须经过自然语言处理后才能可使用。

实战项目

  • 基于Hive的离线数仓项目

  • 基于Spark的实时+数仓项目

  • 基于Flink的实时ETL和数仓项目

此处评论已关闭