- 集群角色介绍
Spark是基于内存计算的大数据并行计算框架,实际中运行计算任务肯定是使用集群模式,那么我们先来学习Spark自带的standalone集群模式了解一下它的架构及运行机制。Standalone集群使用了分布式计算中的master-slave模型
master:集群中含有master进程的节点
slave:集群中的worker节点含有Executor进程
- Spark架构图
http://spark.apache.org/docs/latest/cluster-overview.html
- 集群规划
node01:master
node02:slave/worker
node03:slave/worker
- 下载Spark安装包
下载地址:http://spark.apache.org/downloads.html
- 上传安装包
cd /export/soft/
rz
- 解压
tar -zxvf ./spark-2.2.0-bin-2.6.0-cdh5.14.0.tgz -C ../servers/
- 解压目录说明
bin:可执行脚本
conf:配置文件
data:示例程序使用数据
examples:示例程序
jars:依赖 jar 包
python:pythonAPI
R:R 语言 API
sbin:集群管理命令
yarn:整合yarn需要的东西
- 修改配置
spark-env
cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/conf/
cp spark-env.sh.template spark-env.sh
vim spark-env.sh
配置:
#配置java环境变量
export JAVA_HOME=${JAVA_HOME}
#指定spark Master的IP
export SPARK_MASTER_HOST=node01
#指定spark Master的端口
export SPARK_MASTER_PORT=7077
slaves
cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/conf/
cp slaves.template slaves
vim slaves
配置:
node02
node03
- 分发
cd /export/servers/
scp -r /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/ node02:$PWD
scp -r /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/ node03:$PWD
- 启动和停止
在主从节点上启动spark集群
cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/sbin/
./start-all.sh
在主从节点上停止spark集群
cd /export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/sbin/
./stop-all.sh
- 查看web界面
- 测试
使用集群模式运行Spark程序读取HDFS上的文件并执行WordCount
集群模式启动spark-shell
/export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/bin/spark-shell --master spark://node01:7077
准备数据
vim /root/words.txt
上传数据到hdfs
hadoop fs -put /root/words.txt /words.txt
计算数据
val textFile = sc.textFile("hdfs://node01:8020/words.txt")
val counts = textFile.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _)
counts.saveAsTextFile("hdfs://node01:8020/wordcount/output1")
查看结果数据
hadoop fs -cat /wordcount/output1/part-00000
hadoop fs -cat /wordcount/output1/part-00001
- SparkContext web UI