Spark介绍以及安装和部署

一、spark(计算引擎)介绍

Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。

Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。

Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。

尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 Hadoop 文件系统中并行运行。通过名为 Mesos 的第三方集群框架可以支持此行为。Spark 由加州大学伯克利分校 AMP 实验室 (Algorithms, Machines, and People Lab) 开发,可用来构建大型的、低延迟的数据分析应用程序。

二、基本原理

Spark Streaming:构建在Spark上处理Stream数据的框架,基本的原理是将Stream数据分成小的时间片段(几秒),以类似batch批量处理的方式来处理这小部分数据。Spark Streaming构建在Spark上,一方面是因为Spark的低延迟执行引擎(100ms+),虽然比不上专门的流式数据处理软件,也可以用于实时计算,另一方面相比基于Record的其它处理框架(如Storm),一部分窄依赖的RDD数据集可以从源数据重新计算达到容错处理目的。此外小批量处理的方式使得它可以同时兼容批量和实时数据处理的逻辑和算法。方便了一些需要历史数据和实时数据联合分析的特定应用场合。

三、安装部署

1、安装前需要安装hadoop集群

2、 用到的软件
软件 版本 下载地址
linux Ubuntu Server 18.04.2 LTS https://www.ubuntu.com/download/server
hadoop hadoop-2.7.1 http://archive.apache.org/dist/hadoop/common/hadoop-2.7.1/hadoop-2.7.1.tar.gz
java jdk-8u211-linux-x64 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
spark spark-2.4.3-bin-hadoop2.7 https://www.apache.org/dyn/closer.lua/spark/spark-2.4.3/spark-2.4.3-bin-hadoop2.7.tgz
scala scala-2.12.5 http://www.scala-lang.org/download/
Anaconda Anaconda3-2019.03-Linux-x86_64.sh https://www.anaconda.com/distribution/

3、 节点安排
名称 ip hostname
主节点 192.168.233.200 Master
子节点1 192.168.233.201 Slave01
子节点2 192.168.233.202 Slave02

4、 安装Spark
4.1 解压到安装目录

$ tar zxvf spark-2.4.3-bin-hadoop2.7.tgz -C /usr/local/bigdata/
$ cd /usr/local/bigdata/
$ mv spark-2.4.3-bin-hadoop2.7 spark-2.4.3

4.2 修改配置文件
配置文件位于/usr/local/bigdata/spark-2.4.3/conf目录下。

(1) spark-env.sh
将spark-env.sh.template重命名为spark-env.sh。
添加如下内容:

export SCALA_HOME=/usr/local/bigdata/scala
export JAVA_HOME=/usr/local/bigdata/java/jdk1.8.0_211
export HADOOP_HOME=/usr/local/bigdata/hadoop-2.7.1
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
SPARK_MASTER_IP=Master
SPARK_LOCAL_DIRS=/usr/local/bigdata/spark-2.4.3
SPARK_DRIVER_MEMORY=512M

(2)slaves
将slaves.template重命名为slaves
修改为如下内容:

Slave01
Slave02

4.3 配置环境变量
在~/.bashrc文件中添加如下内容,并执行$ source ~/.bashrc命令使其生效

export SPARK_HOME=/usr/local/bigdata/spark-2.4.3
export PATH=$PATH:/usr/local/bigdata/spark-2.4.3/bin:/usr/local/bigdata/spark-2.4.3/sbin

5、运行Spark
先启动hadoop

$ cd $HADOOP_HOME/sbin/
$ ./start-dfs.sh
$ ./start-yarn.sh
$ ./start-history-server.sh

然后启动启动sapark

$ cd $SPARK_HOME/sbin/
$ ./start-all.sh
$ ./start-history-server.sh

要注意的是:其实我们已经配置的环境变量,所以执行start-dfs.sh和start-yarn.sh可以不切换到当前目录下,但是start-all.sh、stop-all.sh和/start-history-server.sh这几个命令hadoop目录下和spark目录下都同时存在,所以为了避免错误,最好切换到绝对路径下。

spark启动成功后,可以在浏览器中查看相关资源情况:http://192.168.233.200:8080/,这里192.168.233.200是Master节点的IP

6、 配置Scala环境
spark既可以使用Scala作为开发语言,也可以使用python作为开发语言。

6.1 安装Scala
spark中已经默认带有scala,如果没有或者要安装其他版本可以下载安装包安装,过程如下:
先下载安装包,然后解压

$ tar zxvf scala-2.12.5.tgz -C /usr/local/bigdata/

然后在~/.bashrc文件中添加如下内容,并执行$ source ~/.bashrc命令使其生效

export SCALA_HOME=/usr/local/bigdata/scala-2.12.5
export PATH=/usr/local/bigdata/scala-2.12.5/bin:$PATH

测试是否安装成功,可以执行如下命令:

scala -version
Scala code runner version 2.12.5 -- Copyright 2002-2018, LAMP/EPFL and Lightbe

6.2 启动Spark shell界面
执行spark-shell --master spark://master:7077命令,启动spark shell。

hadoop@Master:~$ spark-shell --master spark://master:7077
19/06/08 08:01:49 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Spark context Web UI available at http://Master:4040
Spark context available as 'sc' (master = spark://master:7077, app id = app-20190608080221-0002).
Spark session available as 'spark'.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 2.4.3
      /_/

Using Scala version 2.11.12 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_211)
Type in expressions to have them evaluated.
Type :help for more information.

scala>

7、 配置python环境
7.1 安装python
系统已经默认安装了python,但是为了方便开发,推荐可以直接安装Anaconda,这里下载的是安装包是Anaconda3-2019.03-Linux-x86_64.sh,安装过程也很简单,直接执行$ bash Anaconda3-2019.03-Linux-x86_64.sh即可。

7.2 启动PySpark的客户端
执行命令:$ pyspark --master spark://master:7077

具体如下:

hadoop@Master:~$ pyspark --master spark://master:7077
Python 3.6.3 |Anaconda, Inc.| (default, Oct 13 2017, 12:02:49)
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
19/06/08 08:12:50 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /__ / .__/\_,_/_/ /_/\_\   version 2.4.3
      /_/

Using Python version 3.6.3 (default, Oct 13 2017 12:02:49)
SparkSession available as 'spark'.
发布了62 篇原创文章 · 获赞 21 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_40618664/article/details/105010217