实时计算框架:Spark集群搭建与入门案例
一、Spark概述
1、Spark简介
Spark是专为大规模数据处理而设计的,基于内存快速通用,可扩展的集群计算引擎,实现了高效的DAG执行引擎,可以通过基于内存来高效处理数据流,运算速度相比于MapReduce得到了显著的提高。
2、运行结构
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.12
export 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.1
export 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 slaveshop01
hop02
hop03
环境配置
[root@hop01 conf]# cp spark-env.sh.template spark-env.sh
[root@hop01 conf]# vim spark-env.shexport JAVA_HOME=/opt/jdk1.8
export SCALA_HOME=/opt/scala2.12
export SPARK_MASTER_IP=hop01
export SPARK_LOCAL_IP=安装节点IP
export SPARK_WORKER_MEMORY=1g
export 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>
2、案例代码开发
读取指定位置的文件,并输出文件内容单词统计结果。
@RestController
public class WordWeb implements Serializable {@GetMapping("/word/web")public String getWeb (){// 1、创建Spark的配置对象SparkConf sparkConf = new SparkConf().setAppName("LocalCount").setMaster("local[*]");// 2、创建SparkContext对象JavaSparkContext sc = new JavaSparkContext(sparkConf);sc.setLogLevel("WARN");// 3、读取测试文件JavaRDD lineRdd = sc.textFile("/var/spark/test/word.txt");// 4、行内容进行切分JavaRDD wordsRdd = lineRdd.flatMap(new FlatMapFunction() {@Overridepublic Iterator call(Object obj) throws Exception {String value = String.valueOf(obj);String[] words = value.split(",");return Arrays.asList(words).iterator();}});// 5、切分的单词进行标注JavaPairRDD wordAndOneRdd = wordsRdd.mapToPair(new PairFunction() {@Overridepublic Tuple2 call(Object obj) throws Exception {//将单词进行标记:return new Tuple2(String.valueOf(obj), 1);}});// 6、统计单词出现次数JavaPairRDD wordAndCountRdd = wordAndOneRdd.reduceByKey(new Function2() {@Overridepublic Object call(Object obj1, Object obj2) throws Exception {return Integer.parseInt(obj1.toString()) + Integer.parseInt(obj2.toString());}});// 7、排序JavaPairRDD sortedRdd = wordAndCountRdd.sortByKey();List<Tuple2> finalResult = sortedRdd.collect();// 8、结果打印for (Tuple2 tuple2 : finalResult) {System.out.println(tuple2._1 + " ===> " + tuple2._2);}// 9、保存统计结果sortedRdd.saveAsTextFile("/var/spark/output");sc.stop();return "success" ;}
}
打包执行结果:
查看文件输出:
[root@hop01 output]# vim /var/spark/output/part-00000
四、源代码地址
GitHub·地址
https://github.com/cicadasmile/big-data-parent
GitEE·地址
https://gitee.com/cicadasmile/big-data-parent
阅读标签
【Java基础】【设计模式】【结构与算法】【Linux系统】【数据库】
【分布式架构】【微服务】【大数据组件】【SpringBoot进阶】【Spring&Boot基础】
【数据分析】【技术导图】【 职场】
技术系列
OLAP引擎:Druid组件进行数据统计分析
OLAP引擎:Presto组件跨数据源分析
OLAP引擎:ClickHouse高性能列式查询
实时计算框架:Spark集群搭建与入门案例相关推荐
- Spark-----Spark 与 Hadoop 对比,Spark 集群搭建与示例运行,RDD算子简单入门
目录 一.Spark 概述 1.1. Spark是什么 1.2. Spark的特点(优点) 1.3. Spark组件 1.4. Spark和Hadoop的异同 二.Spark 集群搭建 2.1. Sp ...
- Hadoop集群+Spark集群搭建基于VMware虚拟机教程+安装运行Docker
Hadoop集群+Spark集群搭建+安装运行Docker 目录 一.准备工作 二.在虚拟机上安装CentOS 7 三.hdfs的环境准备 四.hdfs配置文件的修改 五.克隆(复制虚拟机) 六.制作 ...
- Spark集群搭建中的问题
参照<Spark实战高手之路>学习的,书籍电子版在51CTO网站 资料链接 Hadoop下载[链接](http://archive.apache.org/dist/hadoop/core/ ...
- spark集群搭建整理之解决亿级人群标签问题
spark集群搭建整理之解决亿级人群标签问题 参考文章: (1)spark集群搭建整理之解决亿级人群标签问题 (2)https://www.cnblogs.com/huangxincheng/p/91 ...
- 基于Hadoop集群的Spark集群搭建
基于Hadoop集群的Spark集群搭建 注:Spark需要依赖scala,因此需要先安装scala 一. 简单叙述一下scala的安装 (1)下载scala软件安装包,上传到集群 (2)建立一个用于 ...
- Hadoop/Spark集群搭建图文全攻略
Hadoop/Spark集群搭建图文全攻略 一.安装VMware 二.创建Linux虚拟机 三.CentOS-7安装 四.Linux系统环境配置 五.其他配置 六.虚拟机克隆 七.jdk安装 八.Zo ...
- CDH大数据平台搭建之SPARK集群搭建
CDH大数据平台搭建之SPARK集群搭建 一.安装规划 二.下载 三.安装及配置 1.解压 2.修改配置文件 四.启动 五.JPS检查节点 一.安装规划 参考CHD大数据平台搭建之集群规划 二.下载 ...
- Windows家庭版下基于Docker的hadoop、Spark集群搭建
Windows家庭版下基于Docker的hadoop.Spark集群搭建 目录 Windows家庭版下基于Docker的hadoop.Spark集群搭建 1.实验目的 2.实验平台 3.实验内容和要求 ...
- spark 广播变量大数据_大数据处理 | Spark集群搭建及基本使用
点击蓝字关注我 前面用了一篇文章详细的介绍了集群HDFS文件系统的搭建,HDFS文件系统只是一个用于存储数据的系统,它主要是用来服务于大数据计算框架,例如MapReduce.Spark,本文就接着上一 ...
最新文章
- ios ---常用的图片处理技术
- 合肥python培训-合肥Python测试开发全栈核心课程
- memset与malloc性能测试(转)
- java 委托_动态代理:Java开发必学
- Python核心编程-细节
- xilinx set up debug
- 制造行业主数据治理项目实施心得
- 使用 wpa_supplicant 连接 WiFi
- 解决Web部署 svg/woff/woff2字体 404错误(转)
- Java实现人脸识别登录、注册等功能
- 使用链表实现LIFO栈
- 工业机器人应用编程考核设备
- 【报错】paddle相关报错和处理方法
- 图形商标近似检索-知擎者的 Milvus 实践
- OpenCV显示MNIST中的手写图片
- 计算机pe启动蓝屏怎么办,U盘重装系统进入PE蓝屏怎么办
- Jmeter——Jmeter之命令行测试
- 大数据学习路线图(转载)
- 且行且走(8月22日,23日)
- GetMessage()函数使用时的注意