本章主要是配置spark的yarn模式,利用hadoop的hdfs和yarn实现文件存储和资源调度
1 安装scala,版本 2.12.11
在官网上下载安装介质,复制到服务器/tmp下
确保module文件夹具有权限
sudo chmod 777 /opt/module
执行
tar -xvf scala-2.12.11.tgz -C /opt/module/
配置 /etc/profile.d/my_env.sh
vim /etc/profile.d/my_env.sh
#SCALA_HOME
export SCALA_HOME=/opt/module/scala-2.12.11
export PATH=$PATH:$SCALA_HOME/bin
执行
source /etc/profile
2 安装spark环境
确保module目录有权限
sudo chmod 777 /opt/module
2.1 yarn模式(重点),spark的资源调度运用hadoop的yarn,文件存储运用hdfs,所以前提需要有hadoop集群
下载spark3.0.0-bin-hadoop3.2.taz版本 并解压
tar -zxvf /tmp/spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module
cd /opt/module
mv spark-3.0.0-bin-hadoop3.2 spark-yarn
1) 修改 hadoop 配置文件/opt/module/hadoop/etc/hadoop/yarn-site.xml, 并分发
<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是 true -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是 true -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
2) 修改 conf/spark-env.sh,添加 JAVA_HOME 和 YARN_CONF_DIR 配置
mv spark-env.sh.template spark-env.sh
。。。
export JAVA_HOME=/opt/module/jdk1.8.0_121
YARN_CONF_DIR=/opt/module/hadoop-3.1.3/etc/hadoop
3)启动hadoop集群
myhadoop.sh start
4)提交计算任务
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10
查看 http://hadoop100:8088 页面,点击 History,查看历史页面
配置历史服务器
1) 修改 spark-defaults.conf.template 文件名为 spark-defaults.conf
mv spark-defaults.conf.template spark-defaults.conf
2) 修改 spark-default.conf 文件,配置日志存储路径
spark.eventLog.enabled true
spark.eventLog.dir hdfs://hadoop102:8020/directory
spark.yarn.historyServer.address=linux1:18080
spark.history.ui.port=18080
3)添加directory 目录
[root@linux1 hadoop]# sbin/start-dfs.sh
[root@linux1 hadoop]# hadoop fs -mkdir /directory
4)修改 spark-env.sh 文件, 添加日志配置
export JAVA_HOME=/opt/module/jdk1.8.0_121
YARN_CONF_DIR=/opt/module/hadoop-3.1.3/etc/hadoop
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080
-Dspark.history.fs.logDirectory=hdfs://hadoop102:8020/directory
-Dspark.history.retainedApplications=30"
5)启动hadoop集群
myhadoop.sh start
6) 启动历史服务
sbin/start-history-server.sh
7)提交计算任务
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10
8) Web 页面查看日志: http://hadoop102:8088
以下是另外两种spark运行模式
2.2 local模式,只需要配置一台服务器
1.解压
tar -zxvf /tmp/spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module
cd /opt/module
mv spark-3.0.0-bin-hadoop3.2 spark-local
2. 执行命令
bin/spark-shell
3 http://虚拟机地址:4040
2.3 Standalone 模式
需要配置三台服务器,资源调度用spark自身提供的调度,基于主从模式
解压
tar -zxvf /tmp/spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module
cd /opt/module
mv spark-3.0.0-bin-hadoop3.2 spark-standalone
1) 进入解压缩后路径的 conf 目录,修改 slaves.template 文件名为 slaves
mv slaves.template slaves
2) 修改 slaves 文件,添加 work 节点
hadoop102
hadoop103
hadoop104
3) 修改 spark-env.sh.template 文件名为 spark-env.sh
mv spark-env.sh.template spark-env.sh
4) 修改 spark-env.sh 文件,添加 JAVA_HOME 环境变量和集群对应的 master 节点
export JAVA_HOME=/opt/module/jdk1.8.0_121
SPARK_MASTER_HOST=hadoop102
SPARK_MASTER_PORT=7077
5) 分发 spark-standalone 目录
xsync spark-standalone
6)启动spark集群
sbin/start-all.sh