目录
一、Spark集群三种部署模式
1、Local模式
2、Spark Standalone模式
3、Spark on YARN模式
二、准备工作
1、Hadoop环境安装
2、下载spark
三、安装spark
1、解压
2、配置环境变量
3、修改配置文件
4、分发文件
5、启动spark
6、测试安装是否成功
四、运行测试spark
1、读取HDFS文件
五、常见问题
运行在一台计算机上的,通常是用来做测试
Standalone模式是Spark自带的资源调动引擎,构建一个由Master + Slave构成的Spark集群,Spark运行在集群中。这个要和Hadoop中的Standalone区别开来。这里的Standalone是指只用Spark来搭建一个集群,不需要借助其他的框架。是相对于Yarn和Mesos来说的。
该模式下是使用hadoop带有资源调度yarn来运行spark程序
本文主要部署模式为:Spark Standalone模式
【大数据入门核心技术-Zookeeper】(五)ZooKeeper集群搭建
【大数据入门核心技术-Hadoop】(五)Hadoop3.2.1非高可用集群搭建
【大数据入门核心技术-Hadoop】(六)Hadoop3.2.1高可用集群搭建
News | Apache Spark
本文安装包下载地址
https://archive.apache.org/dist/spark/spark-3.1.3/spark-3.1.3-bin-without-hadoop.tgz
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
vi /etc/profile
export SPARK_HOME=/usr/local/spark-3.1.3
export PATH=:$PATH:${SPARK_HOME}
source /etc/profile
cd $SPARK_HOME/conf/
cp spark-env.sh.template spark-env.sh
vi spark-env.sh
## 设置JAVA安装目录
JAVA_HOME=/usr/local/jdk1.8.0_351
## HADOOP软件配置文件目录,读取HDFS上文件和运行YARN集群
HADOOP_CONF_DIR=/usr/local/hadoop-3.2.1/etc/hadoop
YARN_CONF_DIR=/usr/local/hadoop-3.2.1/etc/hadoop
## 指定spark老大Master的IP和提交任务的通信端口
export SPARK_MASTER_HOST=hadoop101
export SPARK_MASTER_PORT=7077
SPARK_MASTER_WEBUI_PORT=8080
SPARK_WORKER_CORES=1
SPARK_WORKER_MEMORY=1g
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop-3.2.1/bin/hadoop classpath)
cp workers.template workers
vi works
hadoop102
hadoop103
scp -r spark-3.1.3 hadoop102:$PWD
scp -r spark-3.1.3 hadoop103:$PWD
scp /etc/profile hadoop102:/etc
scp /etc/profile hadoop103:/etc
分别source另外两台的/etc/profile
在hadoop101上执行命令
cd $SPARK_HOME
sbin/start-all.sh
同时也可以用每步启动和停止命令操作
sbin/start-master.sh
sbin/start-workers.sh
sbin/stop-master.sh
sbin/stop-workers.sh
jps:
hadoop101
其他节点
cd $SPARK_HOME/
bin/spark-shell
或 bin/spark-shell --master spark://hadoop101:7077
UI访问:
http://hadoop101:8081/
http://hadoop101:4040/jobs/
1)准备数据
创建目录
hadoop fs -mkdir -p /wordcount/
上传文件到hdfs
hadoop fs -put /root/test_spark/words.txt /wordcount/words.txt
2)执行WordCount
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
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