diff --git a/README.md b/README.md index 3d07efe..20aaa60 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,23 @@ -# Introduction +# 前言 + +随着大数据时代的到来,各行各业的工作者都迫切需要更好更快的数据计算与分析工具,`2009`年,`Spark`应运而生,在很短的时间里就崭露头角,受到了业界的广泛肯定与欢迎,如今已是`Apache`软件基金会会下的顶级开源项目之一。相较于曾经引爆大数据产业革命的`Hadoop MapReduce`框架,`Spark`带来的改进更加令人欢欣鼓舞。首先,基于内存计算的`Spark`速度更快,减少了迭代计算时的`IO`开销,而且支持交互性使用,其次。`Spark`丰富的`API`提供了更强大的易用性,它支持使用`Scala`、`Java`、`Python`与`R`语言进行编程,有助于开发者轻松构建并行的应用程序。而且,`Spark`支持多种运行模式,既可以运行于独立的集群模式或`Hadoop`集群模式中,也可以运行在云星宇`Amazon EC2`等云环境中。 + + +Apache Spark是用于大规模数据处理的统一分析引擎,Spark使用Scala语言进行实现,它是一种面向对象、函数式编程语言,能够像操作本地集合对象一样轻松地操作分布式数据集,它具有运行速度快、易用性好、通用性强和随处运行等特点。 + +它有如下几个特点: + +1. 运行速度快 +Apache Spark使用最先进的DAG调度程序,查询优化器和物理执行引擎,为批处理数据和流数据提供了高性能。 + +2. 使用方便 +可以使用Java,Scala,Python,R和SQL等语言快速编写应用程序。 +Spark提供了80多个高级操作员,可轻松构建并行应用程序。也可以从Scala,Python,R和SQL Shell 交互使用它。 +3. 支持多种开发场景 +Spark技术栈包括:SparkSQL 、 DataFrames、Spark MLlib for machine learning, GraphX 以及 Spark Streaming。 +![](/image/stack.png) + +4. 可运行在多种环境 +Spark可在Hadoop,Apache Mesos,Kubernetes,独立或云中运行。它可以访问各种数据源。 +![](/image/frame.png) diff --git a/SUMMARY.md b/SUMMARY.md index 56aa14f..03cd6be 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -1,9 +1,10 @@ # 大数据分析(Spark) * [项目简介](README.md) -* [第一章 Spark环境搭建和使用方法](/chapter1/1Spark简介.md) - * [1.1 Spark单机版环境搭建](/chapter1/1.1Spark单机版环境搭建.md) - * [1.2 Spark完全分布式环境搭建](/chapter1/1.2Spark完全分布式环境搭建.md) +* [第一章 Spark环境搭建和使用方法](/chapter1/1Spark安装简介.md) + * [1.1 Scala环境搭建](/chapter1/1.1Scala环境搭建.md) + * [1.2 Spark单机版环境搭建](/chapter1/1.2Spark单机版环境搭建.md) + * [1.3 Spark完全分布式环境搭建](/chapter1/1.2Spark完全分布式环境搭建.md) * [第二章 Spark结构化数据分析与处理](/chapter2/2结构化数据分析与处理简介.md) * [2.1 SparkSQL统计各个研发单位研制战斗机占比](/chapter2/2.1统计各个研发单位研制战斗机占比.md) * [2.2 SparkSQL对战斗机飞行性能进行分析](/chapter2/2.2对战斗机飞行性能进行分析.md) diff --git a/chapter1/1.1Scala环境搭建.md b/chapter1/1.1Scala环境搭建.md new file mode 100644 index 0000000..7906967 --- /dev/null +++ b/chapter1/1.1Scala环境搭建.md @@ -0,0 +1,61 @@ +## 1.1 Scala开发环境搭建 + + +`Scala`是一种函数式面向对象语言,它融汇了许多前所未有的特性,而同时又运行于`JVM`之上。随着开发者对`Scala`的兴趣日增,以及越来越多的工具支持,无疑`Scala`语言将成为你手上一件必不可少的工具。 + +而我们将要学习的大数据框架`Spark`底层是使用`Scala`开发的,使用`scala`写出的代码长度是使用`java`写出的代码长度的`1/10`左右,代码实现更加简练。 + +所以安装与配置`Scala`的环境是我们在开始学习`Spark`之前要完成的准备工作。 + +接下来我们开始安装,分为三个步骤: + +1. 下载解压; +2. 配置环境; +3. 校验。 + + + +### 1.1.1 下载解压 + +在[Scala官网](https://www.scala-lang.org/download/)根据平台选择下载`Scala`的安装包, +

+ +

+ +接下来,解压到`/app`目录下: + +``` +mkdir /app //创建 app 目录 + +tar -zxvf scala-2.12.7.tgz -C /app +``` + +提示:在平台已经将解压包下载在`/opt`目录下了,就不需要再从网络下载了。 + + +### 1.1.2 配置环境 + +接下来我们开始配置环境,**在自己本机上需要配置好`Java`环境**,因为`Scala`是基于`jvm`的(在平台已经将`Java`环境配置好了): + +`vi /etc/profile` +

+ +

+ +不要忘了配置好之后`source /etc/profile` + +### 1.1.3 校验 + +在命令行输入:`scala -version`出现如下结果就配置成功了 + +

+ +

+ +按照惯例,我们在开始一个编程语言要进行一个仪式,哈哈,那就是,`Hello World`,接下来我们使用`Scala`输出`Hello World`: + +在命令行中输入`scala`进入Scala命令行,输入`println("Hello World")` 就可以啦。 + +

+ +

diff --git a/chapter1/1.2Spark单机版环境搭建.md b/chapter1/1.2Spark单机版环境搭建.md new file mode 100644 index 0000000..c64405a --- /dev/null +++ b/chapter1/1.2Spark单机版环境搭建.md @@ -0,0 +1,114 @@ +## 1.2 Spark单机版环境搭建 + +`Apache Spark`是专为大规模数据处理而设计的快速通用的计算引擎。`Spark`是`UC Berkeley AMP lab`(加州大学伯克利分校的`AMP`实验室)所开源的类`Hadoop MapReduce`的通用并行框架,`Spark`拥有`Hadoop MapReduce`所具有的优点;但不同于`MapReduce`的是——`Job`中间输出结果可以保存在内存中,从而不再需要读写`HDFS`,因此`Spark`能更好地适用于数据挖掘与机器学习等需要迭代的`MapReduce`的算法。 + +现在我们来配置一个伪分布式的`Spark`开发环境,与配置`Hadoop`类似分为三个步骤: + +1. 下载解压安装包; +2. 配置环境变量; +3. 配置`Spark`环境; +4. 校验。 + +### 1.2.1 下载解压安装包 + +我们从[官网](http://spark.apache.org/downloads.html)下载好安装包, + +

+ + +

+ + +接下来解压,在平台已经将`spark`安装包下载到`/opt`目录下了,所以不需要再下载了。 + +``` +tar -zxvf spark-2.2.2-bin-hadoop2.7/ -C /app +``` + +将压缩包解压到`/app`目录下。 + + + + +### 1.2.2 配置环境变量 + +我们将`spark`的根目录配置到`/etc/profile`中(在文件末尾添加)。 + +``` +vim /etc/profile +``` +

+ +

+ +不要忘了`source /etc/profile` + + +### 1.2.3 修改Spark配置文件 + +切换到`conf`目录下: +``` +cd /app/spark-2.2.2-bin-hadoop2.7/conf +``` + +在这里我们需要配置的是`spark-env.sh`文件,但是查看目录下文件只发现一个`spark-env.sh.template`文件,我们使用命令复制该文件并重命名为`spark-env.sh`即可; + +

+ +

+ +接下来编辑`spark-env.sh`,在文件末尾添加如下配置: + +``` +export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_111 + +export SCALA_HOME=/app/scala-2.12.7 + +export HADOOP_HOME=/usr/local/hadoop/ + +export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop + +export SPARK_MASTER_IP=machine_name // machine_name 根据自己的主机确定 + +export SPARK_LOCAL_IP=machine_name // machine_name 根据自己的主机确定 + +``` + +参数解释: + +| 参数 | 解释 | +| - | - | +| JAVA_HOME | Java的安装路径 | +|SCALA_HOME|Scala的安装路径| +| HADOOP_HOME| Hadoop的安装路径 | +| HADOOP_CONF_DIR| Hadoop配置文件的路径| +| SPARK_MASTER_IP | Spark主节点的IP或机器名| +| SPARK_LOCAL_IP | Spark本地的IP或主机名 | + +如何查看机器名/主机名呢? + +很简单,在命令行输入:`hostname`即可。 + + + +### 1.2.4 校验 + +最后我们需要校验是否安装配置成功了; +现在我们启动`spark`并且运行`spark`自带的`demo`: + +首先我们在`spark`根目录下启动`spark`: +在`spark`的根目录下输入命令`./sbin/start-all.sh`即可启动,使用`jps`命令查看是否启动成功,有`woker`和`master`节点代表启动成功。 + +

+ +

+ +接下来运行`demo`: +- 在`Spark`根目录使用命令`./bin/run-example SparkPi > SparkOutput.txt`运行示例程序 +- 在运行的时候我们可以发现打印了很多日志,最后我们使用`cat SparkOutput.txt`可以查看计算结果(计算是有误差的所以每次结果会不一样): +

+ +

+ + +好了,如果你能到这一步就已经完成了伪分布式`Spark`的安装啦。 \ No newline at end of file diff --git a/chapter1/1.2Spark完全分布式环境搭建.md b/chapter1/1.2Spark完全分布式环境搭建.md deleted file mode 100644 index e69de29..0000000 diff --git a/chapter1/1.1Spark单机版环境搭建.md b/chapter1/1.3Spark完全分布式环境搭建.md similarity index 100% rename from chapter1/1.1Spark单机版环境搭建.md rename to chapter1/1.3Spark完全分布式环境搭建.md diff --git a/chapter1/1Spark安装简介.md b/chapter1/1Spark安装简介.md new file mode 100644 index 0000000..0fc1ea6 --- /dev/null +++ b/chapter1/1Spark安装简介.md @@ -0,0 +1,14 @@ +# 第一章:Spark单机版环境搭建 + +要开始进行Spark的学习,我们需要首先安装Spark的开发环境,作为一名新手,在搭建环境的时候可能会遇到一些问题,所以我们将女装Spark的步骤分为三步: + +1. Scala环境搭建 +2. Spark单机版环境搭建 +3. Spark完全分布式集群环境搭建 + +通过这三个分解的步骤,相信你能完成Spark开发环境的搭建。 + +那么,现在开始吧! + + + diff --git a/chapter1/1Spark简介.md b/chapter1/1Spark简介.md deleted file mode 100644 index e69de29..0000000 diff --git a/image/frame.png b/image/frame.png new file mode 100644 index 0000000..367714c Binary files /dev/null and b/image/frame.png differ diff --git a/image/stack.png b/image/stack.png new file mode 100644 index 0000000..0e095c7 Binary files /dev/null and b/image/stack.png differ