Schalal

第一章 大数据时代

1.1 什么是大数据

大数据的5V特点:

大数据的发展趋势

1.2 大数据下的分析工具

高效安全地存储+高效及时地处理+机器学习挖掘数据并建立模型

奠基:

论文名 内容 相关工具
Google File System 大数据分布式存储 Hadoop HDFS,Kafka,Elasticsearch
Google MapReduce 大数据分布式计算 Hadoop MapReduce,Spark,Flink,Storm
Google BigTable 大数据分布式查询 Hive,HBase,Kylin,Impala,Presto,ClickHouse,Druid
  分布式挖掘 Spark ML,Alink,Tensorflow,Torch

其他:Apache Superset(大数据可视化),Jupyter Notebook(实时交互),Apache Zeppelin(实时交互)

第二章 Spark

2.1 Hadoop生态系统

Hadoop主要组件:

主要优点:

主要缺点:

HDFS支持跨多台服务器进行数据存储,且数据会自动复制到不同的数据节点上,以防数据丢失,HDFS采用主从(Master/Slave)架构,一个HDFS集群由以下两种节点组成:

数据备份是HDFS可靠性和性能的关键,HDFS通过Rack-Aware策略为每个DataNode分配Rack ID。

Hadoop生态系统(略)

2.2 Spark与Hadoop

Spark出现之前,完成大数据分析任务需要多套工具,如离线分析用Hadoop MapReduce,查询数据用Hive,流数据处理用Storm,机器学习用Mahout——>数据格式转换费力,系统运维复杂—–>Spark的目标:使用一个技术栈完美地解决大数据领域的各种计算任务(Spark RDD + Spark Streaming + Spark MLlib + Spark GraphX),Apache Spark™ is a multi-language engine for executing data engineering, data science, and machine learning on single-node machines or clusters.

Spark与Hadoop的比较:

  Hadoop Spark
语言实现上 Java Scala(基于JVM)
数据存储上 基于HDFS,磁盘IO 基于RDD,内存IO,如果内存不足则缓存到磁盘IO,效率更高
使用场景上 较为完备,适用于实时性要求不高的批处理任务计算 是一个计算框架,不提供分布式文件系统,需要与如HBase等集成使用
实现原理上 一个作业称为一个Job,Job分为Map Task和Reduce Task,进程随Task的结束而结束 一个作业称为一个Application,一个Application对应一个SparkContext,一个Application中存在多个Job,每触发一次Action就生成一个Job,Job可以并行或串行执行;一个Job内含多个Stage,一个Stage内含多个Task,由TaskScheduler分发到各个Executor中执行,Executor的生命周期与Application一致

Spark核心概念

Spark软件栈:

Spark运行框架:

一些概念:

Spark的部署模式(略)

2.4 Spark基本操作

Spark对内存数据的抽象,即为RDD。RDD是一种分布式、多分区、只读的数组,Spark相关操作都是基于RDD进行的。Spark可以将HDFS块文件转换成RDD,也可以由一个或多个RDD转换成新的RDD。基于这些特性,RDD在分布式环境下能够被高效地并行处理。PySpark是Apache Spark社区发布的一个工具,让熟悉Python的开发人员可以方便地使用Spark组件。PySpark借助Py4j库,可以使用Python编程语言处理RDD。

PySpark首先利用Python创建SparkContext对象,然后用Socket与JVM上的SparkContext通信,当然,这个过程需要借助Py4J库。JVM上的Spark Context负责与集群上的SparkWorker节点进行交互。在PySpark中,对RDD提供了Transformation和Action两种操作类型。Transformation操作非常丰富,采用延迟执行的方式,在逻辑上定义了RDD的依赖关系和计算逻辑,但并不会真正触发执行动作,只有等到Action操作才会触发真正执行操作。Action操作常用于最终结果的输出。

从HDFS文件生成 RDD ,经过map、filter、join等多次Transformation操作,最终调用saveAsTextFile操作,将结果输出到HDFS中,并以文件形式保存。在PySpark中,RDD可以缓存到内存或者磁盘上,提供缓存的主要目的是减少同一数据集被多次使用的网络传输次数,提高PySpark的计算性能。PySpark提供对RDD的多种缓存级别,可以满足不同场景对RDD的使用需求。RDD的缓存具有容错性,如果有分区丢失,可以通过系统自动重新计算。

常用的Transformation操作

常用的Action操作

2.5 Spark SQL

Spark SQL的前身是Shark,即Hive on Spark,本质上是通过Hive的HQL进行解析,把HQL翻译成Spark上对应的RDD操作,然后通过Hive的Metadata获取数据库里的表信息,最后获取相关数据并放到Spark上进行运算。

Spark SQL的主要特点:

2.6 Spark机器学习

(略)