spark概述和安装部署
Posted yangwenhan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spark概述和安装部署相关的知识,希望对你有一定的参考价值。
-
1、什么是spark
-
基于内存的计算引擎,它的计算速度非常快。但是spark仅仅只涉及到数据的计算,没有涉及到数据的存储。
-
-
2、为什么学习spark
-
比mapreduce计算速度快很多。
-
-
3、spark特点
-
1、速度快
-
比mapreduce在内存中快100x,在磁盘中快10x
-
1、由于mapreduce每次job的中间结果数据都会落地到磁盘中,而spark每次中间结果数据可以不落地(可以保存在内存中)
-
2、mapreduce任务对应都会产生一些map任务和reduce任务,这些任务都会以进程的方式运行在集群中,针对于spark任务,它是以线程的方式运行在spark集群中。
-
-
-
2、易用性
-
可以快速写一个spark应用程序采用4中语言(java/scala/Python/R)
-
-
3、通用性
-
可以使用sparkSql /sparkStreaming/Mlib/Graphx
-
-
4、兼容性
-
可以把spark程序提交到不同的平台中运行(standalone/yarn/mesos)
-
-
2、spark集群安装部署
-
1、下载spark安装包
-
2、规划安装目录
-
3、解压安装包到指定安装目录
-
4、重明名安装目录
-
5、修改配置文件
-
1、vi spark-env.sh (mv spark-env.sh.template spark-env.sh)
-
配置java环境变量
-
export JAVA_HOME=/export/servers/jdk
-
-
配置master的地址
-
export SPARK_MASTER_HOST=node1
-
-
配置master的端口
-
export SPARK_MASTER_PORT=7077
-
-
-
2、vi slaves (mv slaves.template slaves)
-
添加worker节点
-
node2
-
node3
-
-
-
-
6、添加spark环境变量
-
vi /etc/profile
export SPARK_HOME=/export/servers/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
-
-
7、分发spark安装目录到其他节点
-
scp -r spark [email protected]:/export/servers
-
scp -r spark [email protected]:/export/servers
-
scp /etc/profile [email protected]:/etc
-
scp /etc/profile [email protected]:/etc
-
-
8、让所有spark环境变量生效
-
在所有节点执行
-
source /etc/profile
-
?
-
3、spark集群启动和停止
-
启动spark集群
-
在主节点上执行脚本
-
$SPARK_HOME/sbin/start-all.sh
-
-
-
停止spark集群
-
在主节点上执行脚本
-
$SPARK_HOME/sbin/stop-all.sh
-
-
4、spark集群web管理界面
-
spark web管理界面
-
访问地址:http://master的地址:8080
-
5、基于zookeeper的sparkHA高可用部署
-
1、修改配置文件 vi spark-env.sh
-
1、注释掉手动指定的master地址
-
export SPARK_MASTER_HOST=node1
-
-
2、添加配置参数 SPARK_DAEMON_JAVA_OPTS
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=hdp-node-01:2181,hdp-node-02:2181,hdp-node-03:2181 -Dspark.deploy.zookeeper.dir=/spark"
-
-
2、启动zk集群
-
3、启动sparkHA
-
可以在任意一台机器上启动脚本(它会在当前机器中产生一个Master进程) 前提条件:配置所有机器两两之间对应的ssh免登录
-
start-all.sh
-
-
可以在其他机器上单独启动master进程
-
start-master.sh
-
-
6、spark角色介绍
-
1、Driver
-
就是运行客户端main方法,构建SparkContext对象
-
-
2、Application
-
包含driver代码,还有当前这个任务计算所有需要的资源
-
-
3、Master
-
它是集群中老大,负责资源的分配和任务的调度
-
-
4、ClusterManager
-
spark应用程序可以获取的外部资源
-
Standalone
-
spark自带的集群模式,资源的分配和任务调度由Master
-
-
Yarn
-
资源的分配和任务调度由ResourceManager
-
-
Mesos
-
是apache开源的一个资源调度框架。
-
-
-
-
5、Worker Node
-
集群中的小弟,负责任务计算的节点
-
Standalone: 通过slaves文件指定的节点
-
spark on yarn: yarn中的NodeManager节点
-
-
6、executor
-
它是一个进程,它会在worker节点上启动
-
-
7、task
-
是以线程的方式运行在executor进程中
-
7、初识spark程序
-
1、普通模式提交任务(已经知道活着的master地址)
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://node1:7077 \
--executor-memory 1G \
--total-executor-cores 2 \
examples/jars/spark-examples_2.11-2.0.2.jar \
10 -
2、高可用模式提交任务(并不知道哪一个master是活着的master)
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://node1:7077,node2:7077,node3:7077 \
--executor-memory 1G \
--total-executor-cores 2 \
examples/jars/spark-examples_2.11-2.0.2.jar \
10
8、spark-shell使用
-
1、spark-shell --master local[N] 读取本地数据文件,实现单词计数
-
--master local[N]
-
指定master的地址为本地单机版模式 ,N是一个正整数,(local[2])表示本地采用2个线程来运行任务
-
-
它会产生一个SparkSubmit进程
sc.textFile("file:///root/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
?
sc.textFile("file:///root/words.txt").flatMap(x=>x.split(" ")).map(x=>(x,1)).reduceByKey((x,y)=>x+y).collect
-
-
2、spark-shell --master local[N] 读取HDFS上数据文件,实现单词计数
-
spark整合HDFS
-
vi spark-env.sh
export HADOOP_CONF_DIR=/export/servers/hadoop/etc/hadoop
sc.textFile("/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect -
-
-
3、spark-shell --master 指定master为spark集群中活着的master,读取HDFS上数据文件,实现单词计数
-
spark-shell --master spark://node1:7077 --executor-memory 1g --total-executor-cores 2
-
以上是关于spark概述和安装部署的主要内容,如果未能解决你的问题,请参考以下文章