Step 1. Hadoop 安装(略)
Step 2. Spark安装
Spark部署模式:
- Local模式(单机模式)
- Standalone模式(使用Spark自带的简单集群管理器)
- YARN模式(使用YARN作为集群管理器)
- Mesos模式(使用Mesos作为集群管理器)
单机配置
-
解压:
- sudo tar -zxf ~/Downloads/spark-3.0.1-bin-hadoop3.2.tgz -C /usr/local/
-
重命名:
- cd /usr/local
- sudo mv spark-3.0.1-bin-hadoop3.2 spark
- sudo chown -R hadoop:hadoop spark
-
配置环境变量
- vim ~/.bashrc
export SPARK_HOME=/usr/local/spark export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
- vim ~/.bashrc
-
修改配置文件
- cd /usr/local/spark/conf
- cp spark-env.sh.template spark-env.sh
- vim spark-env.sh
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)
有了上面的配置信息以后,Spark就可以把数据存储到Hadoop分布式文件系统HDFS中,也可以从HDFS中读取数据。如果没有配置上面信息,Spark就只能读写本地数据,无法读写HDFS数据。配置完成后就可以直接使用,不需要像Hadoop运行启动命令。
-
验证Spark是否安装成功
- run-example SparkPi 2>&1 | grep “Pi is” (注:>为重定向,&表示重定向的目标不是一个文件,而是一个文件描述符,1表示标准输出,|为管道,grep为过滤);
- run-example SparkPi 2>&1 | grep “Pi is” (注:>为重定向,&表示重定向的目标不是一个文件,而是一个文件描述符,1表示标准输出,|为管道,grep为过滤);
-
Spark Shell
如果Spark不使用HDFS和YARN,那么就不用启动Hadoop也可以正常使用Spark。如果在使用Spark的过程中需要用到 HDFS,就要首先启动 Hadoop
- 启动:spark-shell --master
- Spark的运行模式取决于传递给SparkContext的Master URL的值
- Master URL可以是以下任一种形式:
- local 使用一个Worker线程本地化运行SPARK(完全不并行)
- local[*] 使用逻辑CPU个数数量的线程来本地化运行Spark
- local[K] 使用K个Worker线程本地化运行Spark(理想情况下,K应该根据运行机器的CPU核数设定)
- spark://HOST:PORT 连接到指定的Spark standalone master(默认端口是7077)
- yarn-client 以客户端模式连接YARN集群
- yarn-cluster 以集群模式连接YARN集群
- mesos://HOST:PORT 连接到指定的Mesos集群(默认端口是5050)
- Spark Shell的命令还常包括–jars参数(这个参数用于把相关的JAR包添加到CLASSPATH中;如果有多个jar包,可以使用逗号分隔符连接它们)
- 采用本地模式下运行
- spark-shell(默认使用所有CPU核心,相当于spark-shell local[*])
- spark-shell --master local[4]
- 启动:spark-shell --master
Spark伪分布式&集群配置(由于电脑硬盘空间不足,本人为伪集群,集群尚未实践)
- 续单机配置
- cd /usr/local/spark/conf
- vim spark-env.sh
export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath) export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop export SPARK_MASTER_IP=master ##(或者配置主机IP)
- cp slaves.template slaves
- vim slaves
- 配置好后,将Master主机上的/usr/local/spark文件夹复制到各个节点上
cd /usr/local/
tar -zcf ~/spark.master.tar.gz ./spark
cd ~
scp ./spark.master.tar.gz slaveA:/home/hadoop
scp ./spark.master.tar.gz slaveB:/home/hadoop
- 在每个worker(slava)节点执行操作
sudo rm -rf /usr/local/spark/
sudo tar -zxf ~/spark.master.tar.gz -C /usr/local
sudo chown -R hadoop /usr/local/spark
- 启动集群
- 启动hadoop集群
- 启动spark集群
- start-master.sh
- start-slaves.sh
- 访问http://master:8080
- 关闭spark集群
- stop-master.sh
- stop-slaves.sh
若执行了以下修改,可以不stop-master.sh、stop-slaves.sh,直接spark-stop-all.sh,开启如是
cd /usr/local/spark/sbin
mv start-all.sh spark-start-all.sh
mv stop-all.sh spark-stop-all.sh