Spark的安装部署

★注意1:

大家之前安装的如果是CDH的Hadoop那么安装Spark的时候使用红线标出的重新编译之后的CDH版Spark即可

 安装

●下载Spark安装包

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

●解压重命名

解压

重命名

●注意:如果有权限问题,可以修改为root,方便学习时操作,实际中使用运维分配的用户和权限即可

chown -R root /export/servers/spark    转变文件拥有者

chgrp -R root /export/servers/spark    转变文件所属用户组

 

●解压目录说明:

bin        可执行脚本

conf       配置文件

data       示例程序使用数据

examples   示例程序

jars       依赖 jar 包

python     pythonAPI

R          R 语言 API

sbin       集群管理命令

yarn       整合yarn需要的东东

启动spark-shell

开箱即用

直接启动bin目录下的spark-shell:

./spark-shell 

 

●spark-shell说明

1.直接使用./spark-shell 

表示使用local 模式启动,在本机启动一个SparkSubmit进程

2.还可指定参数 --master,如:

spark-shell --master local[N] 表示在本地模拟N个线程来运行当前任务

spark-shell --master local[*] 表示使用当前机器上所有可用的资源

3.不携带参数默认就是

spark-shell --master local[*]

4.后续还可以使用--master指定集群地址,表示把任务提交到集群上运行,如

./spark-shell --master spark://node01:7077 

5.退出spark-shell

使用 :quit

 

初体验-读取本地文件

●准备数据

vim /root/words.txt

hello me you her 
hello you her
hello her 
hello 
val textFile = sc.textFile("file:///root/words.txt")
val counts = textFile.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _)
counts.collect//收集结果
// Array[(String, Int)] = Array((you,2), (hello,4), (me,1), (her,3))

初体验-读取HDFS文件

●准备数据

上传文件到hdfs

hadoop fs -put /root/words.txt /wordcount/input/words.txt

目录如果不存在可以创建

hadoop fs -mkdir -p /wordcount/input

结束后可以删除测试文件夹

hadoop fs -rm -r /wordcount

val textFile = sc.textFile("hdfs://node01:8020/wordcount/input/words.txt")
val counts = textFile.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _)
counts.saveAsTextFile("hdfs://node01:8020/wordcount/output")

 

 

 

 

 

什么是spark

  spark是基于内存的,用于大规模数据处理(离线计算,实时计算,快速查询(交互查询))的统一分析引擎

 

spark特点

 Spark特点

快: 

Spark计算速度是MapReduce计算速度的10-100倍

易用:(算法多)

MR支持1种计算模型,Spsark支持更多的计算模型。

通用:

Spark 能够进行离线计算、交互式查询(快速查询)、实时计算、机器学习、图计算等

兼容性:

Spark支持大数据中的Yarn调度,支持mesos。可以处理hadoop计算的数据。

 

Spark发展史

 

1、2009年诞生于美国加州大学伯克利分校AMP 实验室

2、2014年,Spark 成为 Apache 的顶级项目

 

Spark为什么会流行

 

原因1:优秀的数据模型和计算抽象

Spark将多个RDD之间的中间数据写入内存,MR将中间数据写入硬盘,内存比硬盘速度快

原因2:完善的生态圈

Spark Core:Spark基本功能

Spark SQL : 操作结构化数据

Spark Streaming: 对实时数据进行流式计算

Spark MLlib: 机器学习

GraphX:用于图计算

 

Hadoop与Spark的对比

 

Hadoop

Spark

类型

基础平台, 包含计算, 存储, 调度

分布式计算工具

场景

大规模数据集上的批处理

迭代计算, 交互式计算, 流计算

价格

对机器要求低, 便宜

对内存有要求, 相对较贵

编程范式

Map+Reduce, API 较为底层, 算法适应性差

RDD组成DAG有向无环图, API 较为顶层, 方便使用

数据存储结构

MapReduce中间计算结果存在HDFS磁盘上, 延迟大

RDD中间运算结果存在内存中 , 延迟小

运行方式

Task以进程方式维护, 任务启动慢

Task以线程方式维护, 任务启动快

Spark运行模式

1.local本地模式(单机)--开发测试使用

2.standalone独立集群模式--开发测试使用

 

3.standalone-HA高可用模式--生产环境使用

4.on yarn集群模式--生产环境使用

5.on mesos集群模式--国内使用较少

6.on cloud集群模式--中小公司未来会更多的使用云服务

 

Spark安装部署

 

1、local本地模式安装部署

 

第一步:上传并解压

第二步:开箱即用(不需要修改配置)

启动spark

./spark-shell  

没有参数表示   等于  local[*]

./spark-shell  --master local[*]

Local表示在本机运行。[*]表示可用的所有资源

./spark-shell  --master local[n]

Local表示在本机运行。[n]表示使用n个线程

 

Spark初体验

1、读取本地数据计算WordCount

val textFile = sc.textFile("file:///opt/tt.txt")

val counts = textFile.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _)

2、读取hdfs集群数据计算WordCount

  val textFile = sc.textFile("hdfs://node01:8020/tt.txt")

val counts = textFile.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _)

counts.saveAsTextFile("hdfs://node01:8020/ttt")

standalone集群模式

第一步:软件上传并解压

第二步修改配置文件

export JAVA_HOME=${JAVA_HOME}
export SPARK_MASTER_HOST=node01
export SPARK_MASTER_PORT=7077

修改slaves

Node02
Node03

第三步:软件包的分发

scp -r spark-2.2.0-bin-2.6.0-cdh5.14.0 node02:$PWD

scp -r spark-2.2.0-bin-2.6.0-cdh5.14.0 node03:$PWD

第四步:启动集群

./start-all.sh –master spark://node01:7077
第五步:验证

sc.textFile("hdfs://node01:8020/tt.txt")

.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _)

.saveAsTextFile("hdfs://node01:8020/tttt")

 

standalone-HA高可用模式

HA解决master的单点问题

第一步:上传解压

第二步:修改配置文件

export JAVA_HOME=${JAVA_HOME}
export SPARK_MASTER_PORT=7077
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER  -Dspark.deploy.zooke
eper.url=node01:2181,node02:2181,node03:2181  -Dspark.deploy.zookeeper.dir=/spark"
"../conf/spark-env.sh" 67L, 3966C written

第三步:同步更新的配置到其他节点

scp spark-env.sh node02:/$PWD

scp spark-env.sh node03:/$PWD

第四步:启动zookeeper

第五步:启动spark

启动集群  ./start-all.sh

启动第二个Master(node02/node03)

第六步:验证HA

http://node01:8080/

http://node02:8080/

on yarn集群模式

前期准备

  1. hadoop安装部署好

2、安装部署单机版本的spark

 

第一步:安装包的上传并解压

第二步:修改配置文件

export JAVA_HOME=${JAVA_HOME}
export SPARK_MASTER_HOST=node01
export SPARK_MASTER_PORT=7077
export HADOOP_CONF_DIR=/export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop

第三步测试

使用spark-submits

/export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
--driver-memory 1g \
--executor-memory 1g \
--executor-cores 2 \
--queue default \
/export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/examples/jars/spark-examples_2.11-2.2.0.jar \
10

 

 

参数的说明

--master  local [n]/[*]/spark://HOST:PORT/YARN   指定 Master 的地址

--name "appName"                 指定程序运行的名称

--class                            程序的main方法所在的类

--jars  xx.jar                       程序额外使用的 jar 包

--driver-memory  512m               Driver运行所需要的内存, 默认1g

--executor-memory  2g               指定每个 executor 可用内存为 2g, 默认1g

--executor-cores  1                  指定每一个 executor 可用的核数

--total-executor-cores  2              指定整个集群运行任务使用的 cup 核数为 2 个

 --queue default    指定任务的对列

--deploy-mode 指定运行模式(client/cluster)

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值