Python工程师的Spark之路(2)CentOS7下Spark安装+集群部署

建议有Hadoop基础后再学Spark
本文续:https://yellow520.blog.csdn.net/article/details/110425351

1、概述

  • Apache SparkTM大数据分析引擎
  • Scala语言中实现
  • 依赖JDK
  • 更基于内存(相对于MapReduce),适用于实时计算
  • 官网:http://spark.apache.org/
  • 下载地址:https://downloads.apache.org/spark/
  • 官方教程:http://spark.apache.org/docs/latest/quick-start.html
用途
Spark SQL结构化数据处理
Spark Streaming实时数据流式计算
MLlib机器学习
GraphX图和图并行计算

2、软件安装

环境版本命令 or 路径备注
CentOScentos-release-7-5.1804.el7.centos.x86_64rpm -q centos-release开源的Linux操作系统
JDK1.8.0_212/optJava软件开发工具包
Spark2.4.7/opt大数据实时计算引擎

安装Spark前,要预先装好JDK(本文略过)

2.1、环境变量、解压到指定目录、修改用户组

1、环境变量

echo '# Spark' >> /etc/profile.d/custom.sh
echo 'export SPARK_HOME=/opt/spark' >> /etc/profile.d/custom.sh
echo 'export PATH=$PATH:$SPARK_HOME/bin' >> /etc/profile.d/custom.sh
source /etc/profile.d/custom.sh

2、解压、改名、修改用户组

tar -zxvf spark-2.4.7-bin-hadoop2.7.tgz -C /opt/
cd $SPARK_HOME/..
mv spark-2.4.7-bin-hadoop2.7 spark
chown -R root:root spark

2.2、目录介绍

ll $SPARK_HOME

目录用处e.g.
bin可执行命令spark-shellspark-submit
conf配置spark-env.sh.template
data一些可以拿来玩机器学习的样本graphxmllibstreaming
example官方提供了一些代码案例cat examples/src/main/python/wordcount.py
jars依赖的JAR文件
python、R对其它语言的支持pyspark
sbin启停命令start-all.shstop-all.sh

2.3、运行

2.3.1、spark-submit

提交官方案例

$SPARK_HOME/bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
$SPARK_HOME/examples/jars/spark-examples_2.11-2.4.7.jar \
10

2.3.2、spark-shell

import org.apache.spark.rdd.RDD
// 读数据(并行化)
val rdd0: RDD[String] = sc.parallelize(List("cat dog", "cat cow", "cow pig"))
// 分词并平坦化
val rdd1: RDD[String] = rdd0.flatMap(_.split(" "))
// 每个词
val rdd2: RDD[(String, Int)] = rdd1.map((_, 1))
// 对相同的key进行reduce操作
val rdd3: RDD[(String, Int)] = rdd2.reduceByKey(_ + _)
// 打印
println(rdd0.collect.toList)
println(rdd1.collect.toList)
println(rdd2.collect.toList)
println(rdd3.collect.toList)
打印结果
List(cat dog, cat cow, cow pig)
List(cat, dog, cat, cow, cow, pig)
List((cat,1), (dog,1), (cat,1), (cow,1), (cow,1), (pig,1))
List((cow,2), (dog,1), (pig,1), (cat,2))

2.3.3、pyspark

>>> sc
<SparkContext master=local[*] appName=PySparkShell>

>>> sc.parallelize(['a','b','c','c']). \
... map(lambda word:(word,1)).reduceByKey(lambda a,b:a+b).collect()
[('a', 1), ('c', 2), ('b', 1)]

3、Standalone集群部署

主机名Hadoop100Hadoop101Hadoop102
IP地址192.168.1.100192.168.1.101192.168.1.102
Spark:Master1
Spark:Worker11

3.1、配置文件

cd $SPARK_HOME/conf/

3.1.1、slaves

encn
slave奴隶;从动装置
slaves服务于另一连接计算机的系统
echo -e "hadoop101\nhadoop102" > slaves
cat slaves

3.1.2、spark-env.sh

设置Masterhadoop100:7070通信地址

cp spark-env.sh.template spark-env.sh
echo -e "SPARK_MASTER_HOST=hadoop100\nSPARK_MASTER_PORT=7077" >> spark-env.sh
cat spark-env.sh

3.1.3、log4j.properties(可选)

设置日志级别,改一行log4j.rootCategory

cp log4j.properties.template log4j.properties
vi log4j.properties
log4j.rootCategory=WARN, console

3.2、分发到各节点

rsync -a $SPARK_HOME/ hadoop101:$SPARK_HOME/
rsync -a $SPARK_HOME/ hadoop102:$SPARK_HOME/

3.3、启停命令

hadoop100执行,那么Master就会在hadoop100

$SPARK_HOME/sbin/start-all.sh
$SPARK_HOME/sbin/stop-all.sh

3.4、查看集群状态

命令行查看

jps | grep -v Jps
ssh hadoop101 "jps | grep -v Jps"
ssh hadoop102 "jps | grep -v Jps"

浏览器查看hadoop100:8080

3.5、运行官方案例

官方案例求 π \pi π

cd $SPARK_HOME/
./bin/spark-submit \
--master spark://hadoop100:7077 \
--class org.apache.spark.examples.SparkPi \
./examples/jars/spark-examples_2.11-2.4.7.jar \
10

4、YARN集群模式

4.1、解压

tar -zxvf spark-3.0.1-bin-hadoop2.7.tgz -C /opt/
cd /opt/
mv spark-3.0.1-bin-hadoop2.7 spark
chown -R root:root spark
ll

4.2、环境变量

修改环境变量配置、分发配置、source配置

echo '# Spark' >> /etc/profile.d/custom.sh
echo 'export SPARK_HOME=/opt/spark' >> /etc/profile.d/custom.sh
echo 'export PATH=$PATH:$SPARK_HOME/bin' >> /etc/profile.d/custom.sh
rsync -a /etc/profile.d/custom.sh hadoop101:/etc/profile.d/
rsync -a /etc/profile.d/custom.sh hadoop102:/etc/profile.d/
source /etc/profile.d/custom.sh
ssh hadoop101 'source /etc/profile.d/custom.sh'
ssh hadoop102 'source /etc/profile.d/custom.sh'

Spark的YARN集群模式配置

echo 'export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop' \
>> $SPARK_HOME/conf/spark-env.sh

4.3、文件分发

rsync -a $SPARK_HOME/ hadoop101:$SPARK_HOME/
rsync -a $SPARK_HOME/ hadoop102:$SPARK_HOME/

4.4、提交Spark任务(前提Hadoop在运行)

spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
$SPARK_HOME/examples/jars/spark-examples_2.12-3.0.1.jar \
10
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页
实付 99.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值