设为首页 加入收藏

TOP

Spark(二)Spark安装入门
2019-03-19 13:08:04 】 浏览:54
Tags:Spark 安装 入门

目录:

2、Spark安装入门

2.1、Spark安装部署

2.1.1、Spark下载:

2.1.2、安装前准备:

2.1.3、配置环境变量:

2.1.4、配置Spark环境:

2.1.5、启动Spark集群

2.2、Spark中的Scale的shell

2.3、Spark核心概念简介

2.4、独立应用

2.4.1、初始化SparkContext

2.4.2、构建独立应用


2、Spark安装入门

2.1、Spark安装部署

2.1.1、Spark下载:

下载地址:http://spark.apache.org/downloads.html

为了方便也可以进入到家目录下使用命令下载:

[hadoop@rdb1 ~]$ wget https://d3kbcqa49mib13.cloudfront.net/spark-2.2.0-bin-hadoop2.6.tgz

2.1.2、安装前准备:

文件解压与改名:

[hadoop@rdb1 ~]$ tar –zxvf spark-2.2.0-bin-hadoop2.6.tgz –C ./spark-2.2.0

2.1.3、配置环境变量:

vi /etc/profile

2.1.4、配置Spark环境:

打开spark-2.2.0文件夹:

[hadoop@rdb1 spark-2.2.0]$ cd spark-2.2.0

此处需要配置的文件为两个:

spark-env.shslaves

首先我们把缓存的文件spark-env.sh.template改为spark识别的文件spark-env.sh

[hadoop@rdb1 spark-2.2.0]$ cp conf/spark-env.sh.template conf /spark-env.sh

1、修改spark-env.sh文件:

[hadoop@rdb1 spark-2.2.0]$ vi conf/spark-env.sh

在末尾加上:

变量说明:

JAVA_HOMEJava安装目录

SCALA_HOMEScale安装目录

SPARK_MASTER_IPspark集群的Master节点的ip地址

SPARK_WORKER_MEMORY:每个worker节点能够最大分配给exectors的内存大小

2、修改slaves文件:

[hadoop@rdb1 spark-2.2.0]$ vi conf/slaves.template

由于是单机版,可直接在末尾加上localhost

2.1.5、启动Spark集群

1、启动Hadoop的HDFS文件系统:

start-dfs.sh

启动之后使用jps命令可以查看到rdb1已经启动了namenode,说明Hadoop的HDFS文件系统已经启动了。

2、启动Spark

因为hadoop/sbin以及spark/sbin均配置到了系统的环境中,它们同一个文件夹下存在同样的start-all.sh文件。最好是打开spark-2.2.0,在文件夹下面打开该文件。

./sbin/start-all.sh

成功打开后使用jps在rdb1单节点上可以查看新开启的Master和Worker进程。

成功打开Spark集群之后可以进入Spark的WebUI界面,可以通过:SparkMaster_IP:8080访问,

可见有一个正在运行的Worker节点。

http://192.1.101.61:8080/

3、打开Spark-shell

使用spark-shell便可打开Sparkshell

成功打开后,我们也可以通过SparkMaster_IP:4040访问WebUI查看当前执行的任务。

http://192.1.101.61:4040/

2.2、Spark中的Scale的shell

Spark带有交互式的shell,可以作即时数据分析。Spark shell和其他的shell工具不一样的是,在其他shell工具中你只能使用单机的硬盘和内存来操作数据,而Spark shell可用来与分布式存储在许多机器的内存或者硬盘上的数据进行交互,并且处理过程的分发由Spark自动控制完成。

由于 Spark 能够在工作节点上把数据读取到内存中,所以许多分布式计算都可以在几秒钟之内完成,哪怕是那种在十几个节点上处理 TB 级别的数据的计算。这就使得一般需要在shell 中完成的那些交互式的即时探索性分析变得非常适合 Spark。Spark 提供 Python 以及Scala 的增强版 shell,支持与集群的连接。

打开Scale版本的shellbin/spark-shell

在 Spark 中,我们通过对分布式数据集的操作来表达我们的计算意图,这些计算会自动地在集群上并行进行。这样的数据集被称为弹性分布式数据集(resilient distributed dataset),简称 RDD。RDD 是 Spark 对分布式数据和计算的基本抽象

首先使用shell从本地文件中创建一个RDD来做一些简单的即时统计。

//Scale行数统计

2.3、Spark核心概念简介

从上层来看,每个Spark应用都由一个驱动器程序(driver program)来发起集群上的并行操作。驱动器程序包含应用的main函数,并且定义了集群上的分布式数据集,还对这些数据集应用了相关操作。在前面的例子里,实际的驱动器程序就是Spark shell本身,你只需要输入想要运行的操作就可以了。

驱动器程序同一个SparkContext对象来访问Spark。这个对象代表对计算集群的连接。shell启动时已经自动创建了一个SparkContext对象,是一个叫做sc的变量。

查看变量sc

一旦有了SparkContext,就可以用它来创建RDD调用sc.textFile()来创建一个代表文件中各行文本的RDD。我们可以在这些行上进行各种操作,比如count()。

要执行这些操作,驱动器程序一般要管理多个执行器(executor)节点。比如,我们要在集群上运行count()操作,要么不同的节点会统计文件的不同部分的行数。由于我们刚才是在本地模式下运行Spark shell,因此所有的工作会在单节点上执行,但你可以将这个shell连接到集群上来进行并行的数据分析。

spark如何在集群上运行:

最后,我们有很多用来传递函数的API,可以将对应操作运行在集群上。比如,可以扩展我们的README示例,筛选出文件中包含某个特定单词的行。以“Python”这个单词为例,Scale版本例子如下:

Spark API最神奇的地方就在于像filter这样基于函数的操作也会在集群上并行执行。也就是说,Spark会自动将函数(比如line.contains(“Python”))发到各个执行器节点上。这样就可以在单一的驱动器程序中编程,并且代码自动运行在多个节点上。

2.4、独立应用

这与shell中使用的区别在于需要自行初始化SparkContext。

连接Spark过程在各语言中并不一样。在Java和Scale中,只需要给你的应用添加一个对于spark-core的maven依赖。

<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-mllib_2.10 -->
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-mllib_2.10</artifactId>
    <version>2.2.0</version>
    <scope>provided</scope>
</dependency>

2.4.1、初始化SparkContext

一旦完成了应用与Spark的连接,接下来就需要在你的程序中导入Spark包并且创建SparkContext。你可以通过先创建一个SparkConf对象来配置你的应用。然后基于这个SparkConf创建一个SparkContext对象。

在Java中初始化Spark:

SparkConf conf = new SparkConf().setMaster(“local”).setAppName(“My App”);

JavaSparkContext sc = new JavaSparkContext(conf);

创建SparkContext只需要传递两个参数:

集群URL:告诉Spark如何连接到集群上。

应用名:当连接到集群时,这个值可以帮助我们在集群管理器的用户界面中找到我们的应用。

在初始化SparkContext之后,可以使用我们前面展示的所有方法(比如利用文本文件)来创建RDD并操作它们。

最后,关闭Spark可以调用SparkContext的stop()方法,或者直接退出应用(比如System.exit(0))。

2.4.2、构建独立应用

Java版本单词数统计应用:

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Spark 2.1.0的运行模式 下一篇linux增加用户操作

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目