目录
一、Spark集群三种部署模式
1、 Local模式
2、Spark Standalone模式
3、Spark on YARN模式
二、准备工作
1、Hadoop环境安装
2、下载spark
三、安装spark
1、解压
2、配置环境变量
3、修改配置文件
4、测试安装是否成功
四、运行测试spark
1、读取本地文件
2、读取HDFS文件
五、常见问题
1、spark执行start-master.sh 报错java.lang.NoClassDefFoundError: org/apache/log4j/spi/Filter
一、Spark集群三种部署模式
1、 Local模式
运行在一台计算机上的,通常是用来做测试
2、Spark Standalone模式
Standalone模式是Spark自带的资源调动引擎,构建一个由Master + Slave构成的Spark集群,Spark运行在集群中。这个要和Hadoop中的Standalone区别开来。这里的Standalone是指只用Spark来搭建一个集群,不需要借助其他的框架。是相对于Yarn和Mesos来说的。
3、Spark on YARN模式
该模式下是使用hadoop带有资源调度yarn来运行spark程序
本文主要部署模式为:Spark 本地模式
二、准备工作
1、Hadoop环境安装
【大数据入门核心技术-Hadoop】(五)Hadoop3.2.1非高可用集群搭建
【大数据入门核心技术-Hadoop】(六)Hadoop3.2.1高可用集群搭建
2、下载spark
News | Apache Spark
本文安装包下载地址
https://archive.apache.org/dist/spark/spark-3.1.3/spark-3.1.3-bin-without-hadoop.tgz
三、安装spark
1、解压
tar zxvf spark-3.1.3-bin-without-hadoop.tgz -C /usr/local
cd /usr/local
mv spark-3.1.3-bin-without-hadoop spark-3.1.3
2、配置环境变量
vi /etc/profile
export SPARK_HOME=/data/hdp/spark-3.1.3
export PATH=:$PATH:${SPARK_HOME}
source /etc/profile
3、修改配置文件
cd $SPARK_HOME/conf/
cp spark-env.sh.template spark-env.sh
vi spark-env.sh
export SPARK_DIST_CLASSPATH=$(/data/hdp/hadoop-3.2.1/bin/hadoop classpath)
4、测试安装是否成功
cd $SPARK_HOME/
./spark-shell
UI访问:
http://hadoop101:4040/
四、运行测试spark
1、读取本地文件
1)准备数据
mkdir -p /root/test_spark/
vim /root/test_spark/words.txt
hello world
hello test
hello spark
hello
2)执行WordCount
./spark-shell
val textFile = sc.textFile("file:///root/test_spark/words.txt")
val counts = textFile.flatMap(_.split(" ")).map((_,1)).reduceByKey(_ + _)
counts.collect
2、读取HDFS文件
1)准备数据
创建目录
hadoop fs -mkdir -p /wordcount/
上传文件到hdfs
hadoop fs -put /root/test_spark/words.txt /wordcount/words.txt
2)执行WordCount
./spark-shell
val textFile = sc.textFile("hdfs://hadoop101:8020/wordcount/words.txt")
val counts = textFile.flatMap(_.split(" ")).map((_,1)).reduceByKey(_ + _)
counts.collect
counts.saveAsTextFile("hdfs://hadoop101:8020/wordcount/output")
查看文件内容
hadoop fs -text /wordcount/output/part*
3)结束后删除测试文件夹
hadoop fs -rm -R /wordcount
spark-ui上的任务信息
五、常见问题
1、spark执行start-master.sh 报错java.lang.NoClassDefFoundError: org/apache/log4j/spi/Filter
解决方法:
打开$(SPARK_HOME)/ect/spark-env.sh。在文档的合适位置(如开始几行)添加如下变量(其中hadoop换成自己的路径)
export SPARK_DIST_CLASSPATH=$(/data/hdp/hadoop-3.2.1/bin/hadoop classpath)
参考:
Using Spark's "Hadoop Free" Build - Spark 3.3.1 Documentation