环境配置
主机名 | master | slave1 | slave2 |
类型 | master | slave | slave |
角色 | master |
worker |
worker |
一、解压更名
1、解压Scala
tar -zxvf scala-2.11.8.tgz -C /usr/local/
2、重命名
mv scala-2.11.8 scala
3、解压Spark
tar -zxvf spark-2.0.0-bin-hadoop2.7.tgz -C /usr/local
4、重命名Spark
mv spark-2.0.0-bin-hadoop2.7 spark
二、配置环境变量
1、添加环境变量
vi /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_221 export PATH=$PATH:$JAVA_HOME/bin export SCALA_HOME=/usr/local/scala export PATH=$PATH:$SCALA_HOME/bin export SPARK_HOME=/usr/local/spark export PATH=$PATH:$SPARK_HOME/bin export HADOOP_HOME=/usr/local/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
2、使环境变量立即生效
source /etc/profile
三、配置Spark参数
1、配置slaves/workers
cd /usr/local/spark/conf
2、修改配置文件名称
mv slaves.template slaves
3、编辑slaves文件
vim slaves
slave1 slave2
4、修改配置文件名称
mv spark-env.sh.template spark-env.sh
5、编辑配置文件
vim spark-env.sh
## 设置JAVA安装目录 JAVA_HOME=/usr/local/jdk1.8.0_221 ## HADOOP软件配置文件目录,读取HDFS上文件和运行Spark在YARN集群时需要,先提前配上 HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop YARN_CONF_DIR=/usr/local/hadoop/etc/hadoop ## 指定spark老大Master的IP和提交任务的通信端口 SPARK_MASTER_HOST=master SPARK_MASTER_PORT=7077 SPARK_MASTER_WEBUI_PORT=8080 SPARK_WORKER_CORES=1 SPARK_WORKER_MEMORY=1g
6、集群分发
scp -r /usr/local/spark/ slave1:/usr/local/
scp -r /usr/local/spark/ slave2:/usr/local/
四、环境测试
1、启动Spark集群
sbin/start-all.sh
2、jps查看进程
注:前置Hadoop集群已经启动
3、查看WebUI
注:此时状态为活跃状态
五、提交任务
1、启动spark-shell
2、提交WordCount任务
A、创建wordcount.txt文件
vim wordcount.txt
B、上传文件到 hdfs 方便 worker 读取
hadoop fs -put /input/wordcount.txt /input/wordcount.txt
C、hdfs 查看
D、提交任务
val textFile = sc.textFile("hdfs://master:8020/input/wordcount.txt") val counts = textFile.flatMap(_.split(" ")).map((_,1)).reduceByKey(_ + _) counts.collect counts.saveAsTextFile("hdfs://master:8020/output/output1")
六、结果查看
master:50070
注:将运行结果保存在 hdfs
七、查看spark任务web-ui
master:4040
八、停止集群
sbin/stop-all.sh
☆☆☆standalone模式下的模块架构☆☆☆
Client 客户端进程,负责提交作业到Master
Client就是我们的客户端,例如我们在windows上通过 idea 编写Scala程序向Spark提交作业,那么我们的Client就是 idea
Master Standalone模式中主节点,负责接收Client提交的作业,管理Worker,并命令Worker启动Driver和Executor。
Master在这里就相当于一个公司的包工头,负责接收Client提交上来的作业,然后管理Worker。
Worker Standalone模式中的从节点,负责管理本节点的资源,定期向Master汇报心跳,接受Master的命令,启动Driver和Executor。