Spark大数据处理讲课笔记2.2 搭建Spark开发环境 |
您所在的位置:网站首页 › spark应用程序框架是哪个实现的过程 › Spark大数据处理讲课笔记2.2 搭建Spark开发环境 |
目录 零、本节学习目标 一、Spark开发环境准备工作 二、了解Spark的部署模式 (一)Standalone模式 (二)Mesos模式 (三)Yarn模式 三、搭建Spark单机版环境 (一)前提是安装配置好了JDK (二)下载、安装与配置Spark 1、下载Spark安装包 2、将Spark安装包上传到虚拟机 3、将Spark安装包解压到指定目录 4、配置Spark环境变量 (三)使用Spark单机版环境 1、使用SparkPi来计算Pi的值 2、使用Scala版本Spark-Shell 3、使用Python版本Spark-Shell 4、初识弹性分布式数据集RDD 四、搭建Spark Standalone集群 (一)Spark Standalone架构 1、client提交方式 2、cluster提交方式 (二)Spark集群拓扑 1、集群拓扑 2、集群角色分配 (三)前提条件:安装配置了分布式Hadoop环境 (四)在master虚拟机上安装配置Spark 1、将spark安装包上传到master虚拟机 2、将spark安装包解压到指定目录 3、配置spark环境变量 4、编辑spark环境配置文件 5、创建slaves文件,添加从节点 (五)在slave1虚拟机上安装配置Spark 1、把master虚拟机上安装的spark分发给slave1虚拟机 2、将master虚拟机上环境变量配置文件分发到slave1虚拟机 3、在slave1虚拟机上让spark环境配置文件生效 (六)在slave2虚拟机上安装配置Spark 1、把master虚拟机上安装的spark分发给slave2虚拟机 2、将master虚拟机上环境变量配置文件分发到slave2虚拟机 3、在slave2虚拟机上让spark环境配置文件生效 (七)启动Spark Standalone集群 1、启动hadoop的dfs服务 2、启动Spark集群 (八)访问Spark的WebUI (九)启动Scala版Spark Shell (十)提交Spark应用程序 1、提交语法格式 2、spark-submit常用参数 3、案例演示 - 提交Spark自带的圆周率计算程序 (十一)停止Spark集群服务 五、搭建Spark On Yarn集群 六、搭建Spark HA集群 零、本节学习目标 Spark开发环境准备工作了解Spark的三种部署方式搭建Spark单机版环境搭建Spark Standalone集群体验第一个Spark程序在Spark Shell里基本操作初识弹性分布式数据集RDD 一、Spark开发环境准备工作由于Spark仅仅是一种计算框架,不负责数据的存储和管理,因此,通常都会将Spark和Hadoop进行统一部署,由Hadoop中的HDFS、HBase等组件负责数据的存储管理,Spark负责数据计算。 安装Spark集群前,需要安装Hadoop环境 软件版本Linux系统CentOS7.9版本Hadoop3.3.4版本JDK1.8版本 (jdk8u231)Spark3.3.2版本 二、了解Spark的部署模式 (一)Standalone模式 Standalone模式被称为集群单机模式。该模式下,Spark集群架构为主从模式,即一台Master节点与多台Slave节点,Slave节点启动的进程名称为Worker,存在单点故障的问题。 (二)Mesos模式 Mesos模式被称为Spark on Mesos模式。Mesos是一款资源调度管理系统,为Spark提供服务,由于Spark与Mesos存在密切的关系,因此在设计Spark框架时充分考虑到对Mesos的集成。 (三)Yarn模式 Yarn模式被称为Spark on Yarn模式,即把Spark作为一个客户端,将作业提交给Yarn服务。由于在生产环境中,很多时候都要与Hadoop使用同一个集群,因此采用Yarn来管理资源调度,可以提高资源利用率。 三、搭建Spark单机版环境 (一)前提是安装配置好了JDK 查看JDK版本![]() ![]() ![]() ![]() 执行命令:tar -zxvf spark-3.3.2-bin-hadoop3.tgz -C /usr/local 查看解压之后的spark目录 ![]() ![]() ![]() 执行spark-shell命令,相当于执行spark-shell --master local[*]命令,启动Scala版的Spark-Shell 访问Spark的Web UI界面 - http://master:4040 注意:Spark 3.3.2使用的Scala版本其实是2.12.15 利用print函数输出了一条信息 计算1 + 2 + 3 + …… + 100 输出字符直角三角形 打印九九表 执行:quit命令,退出Spark Shell交互式环 3、使用Python版本Spark-Shell 执行pyspark命令启动Python版的Spark-Shell![]() ![]() ![]() ![]() ![]() 例1、创建一个RDD 在pyspark命令行,执行命令:lines = sc.textFile('/home/test.txt') 创建出来后,RDD 支持两种类型的操作: 转化操作(transformation) 和行动操作(action)。转化操作会由一个RDD 生成一个新的RDD。另一方面,行动操作会对RDD 计算出一个结果,并把结果返回到驱动器程序中,或把结果存储到外部存储系统(如HDFS)中。 例2、调用转化操作filter() 执行命令:sparkLines = lines.filter(lambda line: 'spark' in line)![]() 例3、调用行动操作first() 执行命令:sparkLines.first()![]() ![]() ![]() ![]() ![]() ![]() 当提交方式为client时,运行架构如下图所示 集群的主节点称为Master节点,在集群启动时会在主节点启动一个名为Master的守护进程,类似YARN集群的ResourceManager;从节点称为Worker节点,在集群启动时会在各个从节点上启动一个名为Worker的守护进程,类似YARN集群的NodeManager。 Spark在执行应用程序的过程中会启动Driver和Executor两种JVM进程。 Driver为主控进程,负责执行应用程序的main()方法,创建SparkContext对象(负责与Spark集群进行交互),提交Spark作业,并将作业转化为Task(一个作业由多个Task任务组成),然后在各个Executor进程间对Task进行调度和监控。通常用SparkContext代表Driver。在上图的架构中,Spark会在客户端启动一个名为SparkSubmit的进程,Driver程序则运行于该进程。 Executor为应用程序运行在Worker节点上的一个进程,由Worker进程启动,负责执行具体的Task,并存储数据在内存或磁盘上。每个应用程序都有各自独立的一个或多个Executor进程。在Spark Standalone模式和Spark on YARN模式中,Executor进程的名称为CoarseGrainedExecutorBackend,类似运行MapReduce程序所产生的YarnChild进程,并且同时与Worker、Driver都有通信。 2、cluster提交方式 当提交方式为cluster时,运行架构如下图所示![]() ![]() ![]() ![]() ![]() ![]() ![]() 存盘退出后,执行命令:source /etc/profile,让配置生效 查看spark安装目录(bin、sbin和conf三个目录很重要) ![]() ![]() ![]() ![]() ![]() 在master虚拟机上,执行命令:scp /etc/profile root@slave1:/etc/profile 在slave1虚拟机上,执行命令:source /etc/profile,让环境配置生效 ![]() ![]() 在master虚拟机上,执行命令:scp /etc/profile root@slave2:/etc/profile 在slave2虚拟机上,执行命令:source /etc/profile,让环境配置生效 ![]() ![]() 执行命令:start-all.sh 查看start-all.sh的源码启动Master与Worker的命令 # Start Master "${SPARK_HOME}/sbin"/start-master.sh # Start Worker s"${SPARK_HOME}/sbin"/start-slaves.sh可以看到,当执行start-all.sh命令时,会分别执行start-master.sh命令启动Master,执行start-slaves.sh命令启动Worker。 注意,若spark-evn.sh中配置了SPARK_MASTER_HOST属性,则必须在该属性指定的主机上启动Spark集群,否则会启动不成功;若没有配置SPARK_MASTER_HOST属性,则可以在任意节点上启动Spark集群,当前执行启动命令的节点即为Master节点。 启动完毕后,分别在各节点执行jps命令,查看启动的进程。若在master节点存在Master进程,slave1节点存在Worker进程,slave2节点存在Worker进程,则说明集群启动成功。 查看master节点进程 查看slave1节点进程 查看slave2节点进程 在浏览器里访问http://master:8080 在浏览器访问http://slave1:8081 在浏览器访问http://slave2:8081 如果要用IP地址来访问,得用浮动IP地址,不能用私有IP地址 注意如使用 VMware 本地搭建则可以通过下方IP访问 VMware 本地 私有云用私有IP地址访问是不行的 - http://192.168.1.101:8080/ 用浮动IP地址来访问才可以 - 192.168.218.181 查看私有云上虚拟机的配置 执行命令:spark-shell --master spark://master:7077 (注意--master,两个-不能少) 在/opt目录里执行命令:vim test.txt 在HDFS上创建park目录,将test.txt上传到HDFS的/park目录 读取HDFS上的文件,创建RDD,执行命令:val rdd = sc.textFile("hdfs://master:9000/park/test.txt")(说明:val rdd = sc.textFile("/park/test.txt")读取的依然是HDFS上的文件,绝对不是本地文件) 收集rdd的数据,执行命令:rdd.collect 进行词频统计,按单词个数降序排列,执行命令:val wordcount = rdd.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _).sortBy(_._2, false)与`wordcount.collect.foreach(println) ![]() ![]() ![]() (1)Standalone模式,采用client提交方式 执行下述命令,将Spark自带的求圆周率的程序提交到集群![]() 提交Spark作业后,观察Spark集群管理界面,其中“Running Applications”列表表示当前Spark集群正在计算的作业,执行几秒后,刷新界面,在Completed Applications表单下,可以看到当前应用执行完毕,返回控制台查看输出信息,出现了“Pi is roughly 3.1424157120785603”,说明Pi值已经被计算完毕。 上述命令中的–master参数指定了Master节点的连接地址。该参数根据不同的Spark集群模式,其取值也有所不同,常用取值如下表所示。 取值描述spark://host:portStandalone模式下的Master节点的连接地址,默认端口为7077yarn连接到YARN集群。若YARN中没有指定ResourceManager的启动地址,则需要在ResourceManager所在的节点上进行应用程序的提交,否则将因找不到ResourceManager而提交失败local运行本地模式,使用1个CPU核心local [N]运行本地模式,使用N个CPU核心。例如,local[2]表示使用两个CPU核心运行程序local[*]运行本地模式,尽可能使用最多的CPU核心 若不添加–master参数,则默认使用本地模式local[*]运行。(2)Standalone模式,采用cluster提交方式 在Standalone模式下,将Spark自带的圆周率计算程序提交到集群,并且设置Driver进程使用内存为512MB,每个Executor进程使用内存为1GB,每个Executor进程所使用的CPU核心数为2,提交方式为cluster(Driver进程运行在集群的工作节点中),执行命令如下:![]() 运行成功信息:Successfully created connection to master/192.168.1.101:7077 after 35 ms (0 ms spent in bootstraps) 在Spark WebUI界面上查看运行结果,访问http://master:8080 单击圈红的Worker超链接 单击stdout超链接 ![]() |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |