一、Spark概述1、Spark简介Spark是专为大规模数据处理而设计的 , 基于内存快速通用,可扩展的集群计算引擎 , 实现了高效的DAG执行引擎,可以通过基于内存来高效处理数据流 , 运算速度相比于MapReduce得到了显著的提高 。
2、运行结构
文章插图
【实时计算框架:Spark集群搭建与入门案例】Driver
运行Spark的Applicaion中main()函数 , 会创建SparkContext , SparkContext负责和Cluster-Manager进行通信 , 并负责申请资源、任务分配和监控等 。
ClusterManager
负责申请和管理在WorkerNode上运行应用所需的资源 , 可以高效地在一个计算节点到数千个计算节点之间伸缩计算 , 目前包括Spark原生的ClusterManager、ApacheMesos和HadoopYARN 。
Executor
Application运行在WorkerNode上的一个进程 , 作为工作节点负责运行Task任务 , 并且负责将数据存在内存或者磁盘上 , 每个 Application都有各自独立的一批Executor , 任务间相互独立 。
二、环境部署1、Scala环境安装包管理
[root@hop01 opt]# tar -zxvf scala-2.12.2.tgz[root@hop01 opt]# mv scala-2.12.2 scala2.12
配置变量[root@hop01 opt]# vim /etc/profileexport SCALA_HOME=/opt/scala2.12export PATH=$PATH:$SCALA_HOME/bin[root@hop01 opt]# source /etc/profile
版本查看[root@hop01 opt]# scala -version
Scala环境需要部署在Spark运行的相关服务节点上 。2、Spark基础环境安装包管理
[root@hop01 opt]# tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz[root@hop01 opt]# mv spark-2.1.1-bin-hadoop2.7 spark2.1
配置变量[root@hop01 opt]# vim /etc/profileexport SPARK_HOME=/opt/spark2.1export PATH=$PATH:$SPARK_HOME/bin[root@hop01 opt]# source /etc/profile
版本查看[root@hop01 opt]# spark-shell
文章插图
3、Spark集群配置服务节点
[root@hop01 opt]# cd /opt/spark2.1/conf/[root@hop01 conf]# cp slaves.template slaves[root@hop01 conf]# vim slaveshop01hop02hop03
环境配置[root@hop01 conf]# cp spark-env.sh.template spark-env.sh[root@hop01 conf]# vim spark-env.shexport JAVA_HOME=/opt/jdk1.8export SCALA_HOME=/opt/scala2.12export SPARK_MASTER_IP=hop01export SPARK_LOCAL_IP=安装节点IPexport SPARK_WORKER_MEMORY=1gexport HADOOP_CONF_DIR=/opt/hadoop2.7/etc/hadoop
注意SPARK_LOCAL_IP的配置 。4、Spark启动依赖Hadoop相关环境 , 所以要先启动 。
启动:/opt/spark2.1/sbin/start-all.sh停止:/opt/spark2.1/sbin/stop-all.sh
这里在主节点会启动两个进程:Master和Worker , 其他节点只启动一个Worker进程 。5、访问Spark集群默认端口是:8080 。
http://hop01:8080/
文章插图
运行基础案例:
[root@hop01 spark2.1]# cd /opt/spark2.1/[root@hop01 spark2.1]# bin/spark-submit --class org.apache.spark.examples.SparkPi --master local examples/jars/spark-examples_2.11-2.1.1.jar运行结果:Pi is roughly 3.1455357276786384
三、开发案例1、核心依赖依赖Spark2.1.1版本:<dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.11</artifactId> <version>2.1.1</version></dependency>
引入Scala编译插件:<plugin> <groupId>net.alchim31.maven</groupId> <artifactId>scala-maven-plugin</artifactId> <version>3.2.2</version> <executions> <execution> <goals> <goal>compile</goal> <goal>testCompile</goal> </goals> </execution> </executions></plugin>
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 黑客要攻下一台计算机,一般怎么做?
- 云计算核心技术Docker教程:Docker集群.将节点添加到群
- 终于有人把Scrapy爬虫框架讲明白了
- 防止计算机病毒感染的小技巧
- 计算机木马病毒介绍
- 低成本可复用前端框架——Linke
- 真的够可以的,基于Netty实现了RPC框架
- 让 .NET 5 开发更简单,更通用,更流行 的 开发框架
- 微信正在用的深度学习框架开源!支持稀疏张量,基于C++开发
- 软件测试开发实战|接口自动化测试框架开发