一、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集群搭建与入门案例相关推荐

  1. Spark-----Spark 与 Hadoop 对比,Spark 集群搭建与示例运行,RDD算子简单入门

    目录 一.Spark 概述 1.1. Spark是什么 1.2. Spark的特点(优点) 1.3. Spark组件 1.4. Spark和Hadoop的异同 二.Spark 集群搭建 2.1. Sp ...

  2. Hadoop集群+Spark集群搭建基于VMware虚拟机教程+安装运行Docker

    Hadoop集群+Spark集群搭建+安装运行Docker 目录 一.准备工作 二.在虚拟机上安装CentOS 7 三.hdfs的环境准备 四.hdfs配置文件的修改 五.克隆(复制虚拟机) 六.制作 ...

  3. Spark集群搭建中的问题

    参照<Spark实战高手之路>学习的,书籍电子版在51CTO网站 资料链接 Hadoop下载[链接](http://archive.apache.org/dist/hadoop/core/ ...

  4. spark集群搭建整理之解决亿级人群标签问题

    spark集群搭建整理之解决亿级人群标签问题 参考文章: (1)spark集群搭建整理之解决亿级人群标签问题 (2)https://www.cnblogs.com/huangxincheng/p/91 ...

  5. 基于Hadoop集群的Spark集群搭建

    基于Hadoop集群的Spark集群搭建 注:Spark需要依赖scala,因此需要先安装scala 一. 简单叙述一下scala的安装 (1)下载scala软件安装包,上传到集群 (2)建立一个用于 ...

  6. Hadoop/Spark集群搭建图文全攻略

    Hadoop/Spark集群搭建图文全攻略 一.安装VMware 二.创建Linux虚拟机 三.CentOS-7安装 四.Linux系统环境配置 五.其他配置 六.虚拟机克隆 七.jdk安装 八.Zo ...

  7. CDH大数据平台搭建之SPARK集群搭建

    CDH大数据平台搭建之SPARK集群搭建 一.安装规划 二.下载 三.安装及配置 1.解压 2.修改配置文件 四.启动 五.JPS检查节点 一.安装规划 参考CHD大数据平台搭建之集群规划 二.下载 ...

  8. Windows家庭版下基于Docker的hadoop、Spark集群搭建

    Windows家庭版下基于Docker的hadoop.Spark集群搭建 目录 Windows家庭版下基于Docker的hadoop.Spark集群搭建 1.实验目的 2.实验平台 3.实验内容和要求 ...

  9. spark 广播变量大数据_大数据处理 | Spark集群搭建及基本使用

    点击蓝字关注我 前面用了一篇文章详细的介绍了集群HDFS文件系统的搭建,HDFS文件系统只是一个用于存储数据的系统,它主要是用来服务于大数据计算框架,例如MapReduce.Spark,本文就接着上一 ...

最新文章

  1. ios ---常用的图片处理技术
  2. 合肥python培训-合肥Python测试开发全栈核心课程
  3. memset与malloc性能测试(转)
  4. java 委托_动态代理:Java开发必学
  5. Python核心编程-细节
  6. xilinx set up debug
  7. 制造行业主数据治理项目实施心得
  8. 使用 wpa_supplicant 连接 WiFi
  9. 解决Web部署 svg/woff/woff2字体 404错误(转)
  10. Java实现人脸识别登录、注册等功能
  11. 使用链表实现LIFO栈
  12. 工业机器人应用编程考核设备
  13. 【报错】paddle相关报错和处理方法
  14. 图形商标近似检索-知擎者的 Milvus 实践
  15. OpenCV显示MNIST中的手写图片
  16. 计算机pe启动蓝屏怎么办,U盘重装系统进入PE蓝屏怎么办
  17. Jmeter——Jmeter之命令行测试
  18. 大数据学习路线图(转载)
  19. 且行且走(8月22日,23日)
  20. GetMessage()函数使用时的注意

热门文章

  1. hooks组件封装 react_名符其实的react下一代状态管理器hox
  2. getting joins
  3. LoadRunner常遇见的问题
  4. 链地址处理哈希冲突方法
  5. (数据库系统概论|王珊)第十一章并发控制-第五、六、七节:并发调度的可串行性、两段锁协议和封锁的粒度
  6. 3-3:常见任务和主要工具之网络
  7. 100万并发连接服务器笔记之测试端就绪
  8. ZooKeeper系列(二)
  9. Shell 计算两个数的加减乘除取余(+、-、*、\、/)
  10. Python_爬虫_案例汇总: