Spark学习笔记[3]-Spark安装部署
Spark学习笔记[3]-Spark安装部署
1、下载对应版本的spark
官网我始终都下不下来,推荐一个国内的镜像: https://mirrors.tuna.tsinghua.edu.cn/apache/spark
2、概述
2-1 安装模式
虽然Spark是一个分布式计算框架,但是其不属于Hadoop Project,它有自己的资源层管理和文件系统,可以不依赖Hadoop的HDFS和Yarn,所以安装部署的时候可以只安装spark,对应的就是standalone集群, 但是一般都会使用HDFS作为数据存储层,使用Yarn进行资源管理(spark on yarn模式),这样就可以进行资源的复用,除了Yarn,还支持k8s等资源管理模块
StandAlone模式和Yarn模式资源层对应的角色如下:
StandAlone | Yarn | |
---|---|---|
主节点(管理集群计算资源) | Master | resourceManager |
工作节点(具体负责计算的节点) | Worker | nodeManager |
2-2 作业执行大致流程
从官网down了一张图:
排除资源层的角色,剩下的就是计算层角色,主要是Driver和Executor,除了这两个角色,其实还有一个角色Client,只是Client的功能比较少,下结合这个图,介绍一下作业的执行流程:
- 1)、启动client,client的主要功能就是负责启动Driver,Driver可以是一个单独的jvm进程,也可以运行在Client进程中,分别对应我们使用Spark-submit提交程序时指定的客户端模式(client)和集群模式(cluster),无论哪种模式,driver启动后,后续的工作都主要由Driver负责,两个模式的主要区别是:
- 在客户端模式,driver运行在client内部,和client率属于同一个jvm进程
- 在集群模式,Client会先向资源管理主节点申请资源,主节点根据Driver启动所需的资源情况,从所有工作节点中选取一个工作节点,并在该工作节点启动一个新的JVM进程运行Driver程序,在Yarn模式下,Driver会运行在AppMater上</font
- 2)、Driver启动成功后会向资源层申请计算资源,资源层根据申请的资源情况,挑选一批工作节点启动执行进程(Executor),等待执行计算任务,和MR不同的是,MR的map任务和reduce任务都是以进程的形式调度执行,Spark是先启动执行进程Executor,Executor内部有一个线程池,后续计算任务都由该线程池执行(由于spark是先申请资源再调度任务,所以spark在申请资源时会倾向于抢占资源,也就是尽量把集群资源抢光)
3、StandAlone模式安装(数据存储层使用HDFS,所以要先启动HDFS)
3-1 资源层角色规划
主机名称 | Master | Worker |
---|---|---|
hdp001 | * | |
hdp002 | *(HA模式需要) | * |
hdp003 | * | |
hdp004 | * |
3-2 配置文件修改
3-2-1 配置worker节点($SPARK_HONE/conf/slaves)
hdp002
hdp003
hdp004
3-2-2 配置spark的环境变量spar-env.sh
export JAVA_HOME=/opt/hadoop/jdk1.8.0_121 #远程登录主机执行需要该变量export HADOOP_CONF_DIR=/opt/hadoop/hadoop-2.9.2/etc/hadoop #hadoop配置文件地址,根据它找到hdfs和**yarn**export SPARK_MASTER_HOST=hdp001 #主节点,写主节点对应的主机,如果hdp002也是主,则hdp002的配置文件要写hdp002主机export SPARK_MASTER_PORT=7077 #主节点端口export SPARK_WORKER_CORES=2 #worker虚拟核数export SPARK_WORKER_MEMORY=1g #woker内存export SPARK_MASTER_WEBUI_PORT=9090 #web界面端口
3-2-3 配置spark-default.conf(HA模式等配置需要)
spark.deploy.recoveryMode ZOOKEEPER #也可以选择本地文件系统,一般都是zkspark.deploy.zookeeper.url hdp001:2181,hdp002:2181,hdp003:2181,hdp004:2181spark.deploy.zookeeper.dir /cmbspark #zk上的节点
3-2-4 在zk上创建一个新的目录节点(HA模式)
3-2-5 拷贝安装包和/etc/profile到其余节点
scp 源路径 hdp002:`pwd`
3-2-6 由于hdp002是备用主,需要将hdp002下的spark-env.sh的主节点主机改成hdp002
3-2-7 运行 sbin/start-all.sh启动集群
3-3 测试程序
准备一个测试文件上传到hdfs
3-3-1 使用spark-shell
命令格式:
spark-shell --master spark://hdp001:7077,hdp002:7077
进入界面后执行如下代码即可看到对应的输出:
sc.textFile("hdfs://mycluster/user/hdp01/data_in/word.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect().foreach(println)
3-3-2 使用spark-submit
spark-submit命令格式:
spark-submit \--class <main-class> \--master <url> \--deploy-mode <client/cluster>-- conf <key>=<value>.... #other option<application-jar>[app-args<JVM参数或者其他>]
准备一个sh脚本运行即可,使用的代码是spark自带的例子程序:
claz=org.apache.spark.examples.SparkPijar=$SPARK_HOME/examples/jars/spark-examples_2.11-2.4.7.jar$SPARK_HOME/bin/spark-submit \--master spark://hdp001:7077,hdp002:7077 \--class $claz\--deploy-mode client \$jar100
3-4 历史记录服务
默认情况下,spark进程退出后【包括yarn】,历史执行的任务信息也会丢失,需要配置历史记录服务存储历史任务的执行情况,不管是MR还是Spark,历史记录是由计算层负责写入对应存储层存储(比如HDFS),开启日志服务流程如下:
- 1)、配置spark-default.conf
spark.eventLog.enabled true #开启日志记录
spark.eventLog.dir hdfs://mycluster/spark-logs #日志存储位置
spark.history.fs.logDirectory hdfs://mycluster/spark-logs #其他服务获取日志的路径,一般和上面一个是一样的
- 2)、手动启动 sbin下的start-history-server.sh
- 3)、访问启动historysever的主机的主机名,默认端口号是18080
4、Spark On Yarn模式
Spark On Yarn模式使用的资源层是Yarn,所以可以关闭StandAlone集群,但是需要启动Yarn集群,然后进行如下操作:
- 1)、修改spark-env.sh,保留以下两个
export JAVA_HOME=/opt/hadoop/jdk1.8.0_121 #远程登录主机执行需要该变量export HADOOP_CONF_DIR=/opt/hadoop/hadoop-2.9.2/etc/hadoop #hadoop配置文件地址
- 2)、修改spark-default.conf,删除HA相关配置(也就是Zk相关的配置)
- 3)、修改yarn的配置文件yarn-site.xml,新增如下配置
<property><!--工作节点内存--><name>yarn.nodemanager.resource.memory-mb</name><value>1024</value>
</property>
<property><!--工作节点虚拟核心--><name>yarn.nodemanager.cpu-cores</name><value>2</value>
</property>
<property><!--虚拟机检查--><name>yarn.nodemanager.vem-check-enable</name><value>false</value>
</property>
- 4)、上传依赖包到hdfs,以后就不需要每次从本地上传
1、在hdfs创建目录 /work/spark_lib/jars2、上传spark安装目录的jars目录下的jar包到以上目录3、配置spark-default.confspark.yarn.jars hdfs://mycluster/work/spark_lib/jars/*
- 5)、测试程序,同样使用saprk-shell,命令为:
spark-shell --master yarn --executor-memory 512M --driver-memory 512M #有内存不能配置太小,有可能起不来
Spark学习笔记[3]-Spark安装部署相关推荐
- Spark学习笔记(8)---Spark Streaming学习笔记
Spark Streaming学习笔记 同Spark SQL一样,Spark Streaming学习也是放在了github https://github.com/yangtong123/RoadOfS ...
- Spark学习笔记(7)---Spark SQL学习笔记
Spark SQL学习笔记 Spark SQL学习笔记设计到很多代码操作,所以就放在github, https://github.com/yangtong123/RoadOfStudySpark/bl ...
- Spark学习笔记[1]-scala环境安装与基本语法
Spark学习笔记[1]-scala环境安装与基本语法 正所谓工欲善其事必先利其器,Spark的开发语言不是java而是scala,虽然都是运行于JVM,但是两门语言的基本特性还是有些不一样,这里 ...
- spark 学习笔记
spark 学习笔记 spark介绍 Spark是是一种快速通用的集群计算系统,它的主要特点是能够在内存中进行计算.它包含了 spark 核心组件 spark-core,用于 SQL 和结构化处理数据 ...
- Spark集群完全分布式安装部署
Spark集群完全分布式安装部署 下载安装 配置Spark 1spark-envsh配置 2slaves配置 3profile配置 复制到其他节点 测试 总结 Spark集群完全分布式安装部署 本文中 ...
- Spark学习笔记1——第一个Spark程序:单词数统计
Spark学习笔记1--第一个Spark程序:单词数统计 笔记摘抄自 [美] Holden Karau 等著的<Spark快速大数据分析> 添加依赖 通过 Maven 添加 Spark-c ...
- 大数据之spark学习记录二: Spark的安装与上手
大数据之spark学习记录二: Spark的安装与上手 文章目录 大数据之spark学习记录二: Spark的安装与上手 Spark安装 本地模式 Standalone 模式 基本配置 步骤1: 复制 ...
- Flink 笔记01:安装部署与快速入门
stypora-copy-images-to: img typora-root-url: ./ Flink 笔记01:安装部署与快速入门 一.课程回安排与内容提纲 大数据技术框架转折点:2017年,天 ...
- flink1.12.0学习笔记第1篇-部署与入门
flink1.12.0学习笔记第 1 篇-部署与入门 flink1.12.0学习笔记第1篇-部署与入门 flink1.12.0学习笔记第2篇-流批一体API flink1.12.0学习笔记第3篇-高级 ...
- Tomcat学习笔记02【Tomcat部署项目】
Java后端 学习路线 笔记汇总表[黑马程序员] Tomcat学习笔记01[Web相关概念.Tomcat基本操作][day01] Tomcat学习笔记02[Tomcat部署项目][day01] 目录 ...
最新文章
- 【ZooKeeper Notes 28】ZooKeeper典型应用场景一览
- 开启大数据时代谷歌三篇论文-BigTable
- 云起智慧中心连接华为_云起LifeSmart全系接入HUAWEI HiLink生态系统
- 【性能优化】EKPO/EKBE和LIPS做JOIN的问题
- 【转载】Instagram架构分析笔记
- 338. Counting Bits(动态规划)
- php 垃圾回收机制----写时复制和引用计数
- 1 加到 100 的 时间复杂度 C#.
- css扩展语言_如何决定是否应该链接或扩展CSS类
- 程序设计竞赛资源索引
- 计算机专业需要学好的数学知识,学好数学对计算机专业重要吗?
- C#LeetCode刷题之#191-位1的个数(Number of 1 Bits)
- MySQL DDL--ghost执行模板和参数
- redhat8安装mysql教程
- 自定义View:Android 仿 PS 选色板
- mac 下安装iwork+ps+nx2
- 汇编Masm更改颜色
- php设置Apache虚拟主机vhost
- 结巴分词有前空格_jieba英文空格分词问题
- C语言————exec函数族