Spark Local和集群安装与使用

Spark 2.4.7

1. 简介

Apache Spark是用于大规模数据处理的统一分析引擎。它提供Java,Scala,Python和R中的高级API,以及支持常规执行图的优化引擎。它还支持一组丰富的更高级别的工具,包括Spark SQL用于SQL和结构化数据的处理,MLlib机器学习,GraphX用于图形处理,以及Structured Streaming的增量计算和流处理。

2. 安装

Spark 安装包类型可选是否包含Hadoop,包含的话则包括Hadoop相关依赖,可以直接添加hive-site.xml配置后,访问hive,否则需要自己在打包。这里选择包含Hadoop的。

Spark官网下载
Spark下载

2.1 Local模式

配置环境变量,修改 ~/.bashrc 文件,该文件中环境变量只对hadoop用户有效

export SPARK_HOME=/home/hadoop/softwares/spark/spark-2.4.7
PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

让环境变量立即生效

source ~/.bashrc

复制conf/spark-env.sh

cp ./conf/spark-env.sh.template ./conf/spark-env.sh

修改conf/spark-env.sh

export SPARK_DIST_CLASSPATH=$(/home/hadoop/softwares/hadoop/hadoop-2.7.2/bin/hadoop classpath)

测试
配置完成后就可以直接使用,通过运行Spark自带的示例,验证Spark是否安装成功。

计算Pi

./bin/run-example SparkPi

计算Pi
运行交互式Spark Shell

./bin/spark-shell

加载文件,进行简单RDD操作

val textFile = sc.textFile("file:///home/hadoop/softwares/spark/spark-2.4.7/README.md")
// 获取RDD文件textFile的第一行内容
textFile.first()
// 获取RDD文件textFile所有项的计数
textFile.count()
// 抽取含有“Spark”的行,返回一个新的RDD
val lineWithSpark = textFile.filter(line => line.contains("Spark"))
// 统计新的RDD的行数
lineWithSpark.count()
// 找出文本中每行的最多单词数
textFile.map(line => line.split(" ").size).reduce((a, b) => if (a > b) a else b)

输入:quit退出

2.2 集群模式

2.2.1 独立模式

独立模式可以在集群的每个节点上放置Spark的安装目录,然后通过启动master,让worker连接master,也可以指定salve文件,来实现集群。

2.2.1.1 方式1:直接连接master

启动master

./sbin/start-master.sh -h 192.168.110.40 --webui-port 18080

可以启动一个或多个worker,并通过以下方式将其连接到master

./sbin/start-slave.sh spark://192.168.110.40:7077

spark web

可在 conf/spark-env.sh 中指定端口等配置

export SPARK_MASTER_WEBUI_PORT=18080
export SPARK_WORKER_WEBUI_PORT=18081

针对集群运行交互式Spark Shell

./bin/spark-shell --master spark://192.168.110.40:7077

spark web

2.2.1.2 方式2:创建slaves文件

安装 Hadoop多节点集群
集群规划

192.168.110.40 hadoop-master
192.168.110.41 hadoop-slave1
192.168.110.42 hadoop-slave2

Spark文件目录根据上面Local模式进行修改,删除上面测试产生的work和logs文件夹。

配置slaves文件,设置worker节点

cp ./conf/slaves.template ./conf/slaves

删除slaves文件中其他内容,添加

hadoop-slave1
hadoop-slave2

修改conf/spark-env.sh

export JAVA_HOME=/usr/local/softwares/java/jdk1.8.0_161
export SPARK_DIST_CLASSPATH=$(/home/hadoop/softwares/hadoop/hadoop-2.7.2/bin/hadoop classpath)
export SPARK_MASTER_HOST=192.168.110.40
export SPARK_MASTER_WEBUI_PORT=18080

分发Spark文件目录

新建文件夹

mkdir -p /home/hadoop/softwares/spark

在hadoop-master分发到hadoop-slave1,hadoop-slave2。

scp -r /home/hadoop/softwares/spark/spark-2.4.7/ hadoop-slave1:/home/hadoop/softwares/spark/spark-2.4.7/
scp -r /home/hadoop/softwares/spark/spark-2.4.7/ hadoop-slave2:/home/hadoop/softwares/spark/spark-2.4.7/

hadoop-slave1,hadoop-slave2完成spark环境变量的配置。

在hadoop-master运行
启动master

./sbin/start-master.sh

启动worker

./sbin/start-slaves.sh

启动spark集群
spark web
针对集群运行交互式Spark Shell

./bin/spark-shell --master spark://192.168.110.40:7077
2.2.2 在Yarn上启动Spark

在独立模式的方式2上进行修改,三个节点都修改conf/spark-env.sh

export HADOOP_CONF_DIR=/home/hadoop/softwares/hadoop/hadoop-3.1.2/etc/Hadoop

启动后,使用client模式

./bin/spark-submit \
--master yarn \
--deploy-mode client \
--class org.apache.spark.examples.SparkPi ./examples/jars/spark-examples_2.11-2.4.7.jar 10

cluster模式

./bin/spark-submit \
--master yarn \
--deploy-mode cluster \
--class org.apache.spark.examples.SparkPi ./examples/jars/spark-examples_2.11-2.4.7.jar 10

client模式常用于本地测试,而cluster模式常用于生成环境。

3. 集成 Hive

安装 Hadoop安装 Hive

将 hive-site.xml 复制到 Spark 的 conf 目录,将 MySQL 的驱动添加到 Spark 的 jars 目录。

启动 spark-shell 测试
spark

参考:
Spark 官方文档
Spark安装和编程实践(Spark2.4.0)
Spark 2.0分布式集群环境搭建
Spark On YARN中client和cluster的区别

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值