1 版本信息:
spark1.4.1 官网选择了spark1.4.1版本后,会看到默认的 pre-built for hadoop2.6
scala 2.10.4
jdk 1.7
2 几个图:
spark是计算框架,没有存储框架,存储这块需要用到hdfs 计算这块能搞定 实时查询+流式计算+批量计算
分组和分区的区别:
分到一个班等于分到一个组,我们要共同学习一个知识点所以分到同一个组中。分组中同组内的key是相同的 是解决key的分配问题
分区: 你要打到哪个reduce上去 分区里一个区中可能有不同的key 是解决数据的分配存储问题
为啥spark在机器计算时优势 :
数据共享对比: 在使用mr计算时,除了要有shuffle这种多次落地hdfs文件数据开销外,每份文件都有3个备份也是一种读写开销,
并且在机器学习中,很多场景是这次计算结果是下次迭代的开始,很频繁,用mr在机器学习上也会慢。
1 spark 在window下启动和执行:
0 window环境下已经按照了 jdk,可以安装scala可以不安装下载解压的spark就自带scala
1 spark下载后解压在window的目录不要有 中文和单词之间不要有空格
2 在D:\spark-1.4.1-bin-hadoop2.6\bin下 执行: spark-shell.cmd
3 启动后cmd界面如下: 启动后自动进入scala的命令行
展示 sparkUI 端口
启动成功后样子:
4 按照上面提示,输入链接: http://localhost:4040/
5 准备单词技术的文本:
D:\spark-wodcount\1.txt 其内容为
6 在scala 命令行内输入命令:
sc.textFile("d://spark-wodcount//*").flatMap(_.split("\t")).map((_,1)).reduceByKey(_ + _).collect
单词统计结果如下:
idea中导入spark包执行 单词计数 :
spark执行单词计数命令解释:
scala>sc.textFile("d://test/1.txt").collect ---> 加载数据 spark是懒执行机制, 其中加载的数据d://test/1.txt会变成一个rdd,调用collect进行计算
上述命令展示结果:
res2: Array[String] = Array(a b,c) spark像hdfs读取数据,每次进来都是一行数据,每一行作为一个元素,1.txt内容 a b 一行 c为第二行,而这两行构建了scala的两个元素
scala>sc.textFile("d://test/*").collect 加载多个文件
单词计数实例
sc.textFile("d://test//*").flatMap(_.split("\t")).map((_,1)).reduceByKey(_ + _).collect
单词计数完整版
sc.textFile("d://test//*").flatMap((line:String) => line.split("\t")).map((x:String)=>(x,1)).reduceByKey((x:Int,y:Int)=>(x+y)).collect
使用内存大小:
impala > spark
linux上启动 spark :
在linux上按照 spark, 官网上下载好了 spark后,解压,将 conf下的/ spark-env.sh.template mv 成 spark-env.sh
<!--5f39ae17-8c62-4a45-bc43-b32064c9388a:W3siYmxvY2tUeXBlIjoicGFyYWdyYXBoIiwic3R5bGVzIjp7ImFsaWduIjoibGVmdCIsImluZGVudCI6MCwidGV4dC1pbmRlbnQiOjAsImxpbmUtaGVpZ2h0IjoxLjc1fSwiYmxvY2tJZCI6IjgzMjMtMTUwNTc0NTYyMDIxMyIsInJpY2hUZXh0Ijp7ImlzUmljaFRleHQiOnRydWUsImtlZXBMaW5lQnJlYWsiOnRydWUsImRhdGEiOlt7ImNoYXIiOiLlsIYifSx7ImNoYXIiOiIgIn0seyJjaGFyIjoiYyJ9LHsiY2hhciI6Im8ifSx7ImNoYXIiOiJuIn0seyJjaGFyIjoiZiJ9LHsiY2hhciI6IuS4iyJ9LHsiY2hhciI6IueahCJ9LHsiY2hhciI6Ii8ifSx7ImNoYXIiOiIgIn0seyJjaGFyIjoicyJ9LHsiY2hhciI6InAifSx7ImNoYXIiOiJhIn0seyJjaGFyIjoiciJ9LHsiY2hhciI6ImsifSx7ImNoYXIiOiItIn0seyJjaGFyIjoiZSJ9LHsiY2hhciI6Im4ifSx7ImNoYXIiOiJ2In0seyJjaGFyIjoiLiJ9LHsiY2hhciI6InMifSx7ImNoYXIiOiJoIn0seyJjaGFyIjoiLiJ9LHsiY2hhciI6InQifSx7ImNoYXIiOiJlIn0seyJjaGFyIjoibSJ9LHsiY2hhciI6InAifSx7ImNoYXIiOiJsIn0seyJjaGFyIjoiYSJ9LHsiY2hhciI6InQifSx7ImNoYXIiOiJlIn0seyJjaGFyIjoiICJ9LHsiY2hhciI6Im0ifSx7ImNoYXIiOiJ2In0seyJjaGFyIjoiICJ9LHsiY2hhciI6IuaIkCJ9LHsiY2hhciI6IiAifSx7ImNoYXIiOiJzIn0seyJjaGFyIjoicCJ9LHsiY2hhciI6ImEifSx7ImNoYXIiOiJyIn0seyJjaGFyIjoiayJ9LHsiY2hhciI6Ii0ifSx7ImNoYXIiOiJlIn0seyJjaGFyIjoibiJ9LHsiY2hhciI6InYifSx7ImNoYXIiOiIuIn0seyJjaGFyIjoicyJ9LHsiY2hhciI6ImgifV19fV0=-->
spark-shell.sh 在linux上启动 spark
spark在Linux上运行分为如下几种方式:
1 local方式:
#./spark-shell ----> local ----使用一个工作线程来运行计算任务,不会重新计算失败的任务
#MASTER=local[2] ./spark-shell ----> local ----使用指定的线程运行计算任务,不会重新计算失败的任务。
#MASTER=local-cluster[2,2,1024] ./spark-shell ----> 在一台机器上模拟伪分布模式, [节点个数,每个节点核数,每个节点内存MB] webui端口: 44394
standalone架构
Master:负责任务分发;负责分配资源;
Worker:运行应用代码的节点,接收Master请求,启动任务;向Master汇报信息,资源信息和健康状况。
Executor:worker node的一个进程,接收worker的任务执行请求,执行任务;向worker汇报任务执行情况。
Driver:提交任务;监控任务;
读取本地linux数据
sc.textFile("/root/wctext.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_ + _).collect(需要每台机器都有该数据)
读取远程hdfs数据并保存到远程hdfs
sc.textFile("hdfs://192.168.1.88:9000/wctext").flatMap(_.split(" ")).map((_,1)).reduceByKey(_ + _).saveAsTextFile("hdfs://192.168.1.88:9000/0828out")
sc.textFile("hdfs://192.168.1.88:9000/wctext").flatMap(_.split(" ")).map((_,1)).reduceByKey(_ + _).repartition(1).saveAsTextFile("hdfs://192.168.1.88:9000/0828out")
// 设置输出只有一个输出分区
sc.textFile("hdfs://192.168.1.88:9000/wctext",1).flatMap(_.split(" ")).map((_,1)).reduceByKey(_ + _).saveAsTextFile("hdfs://192.168.1.88:9000/0828out")
sc.textFile("hdfs://192.168.1.88:9000/wctext").flatMap(_.split(" ")).map((_,1)).reduceByKey(_ + _).repartition(1).saveAsTextFile("hdfs://192.168.1.88:9000/0828out")
当然可以使用这种方式: 表示输出只有一个分区,输出到hdfs的 wc2.txt 文件夹下
scala> sc.textFile("/test/wc.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).repartition(1).saveAsTextFile("/test/wc2.txt")
打包后上传到服务器后,执行命令:
./bin/spark-submit --class xxx --master spark://ip:7077 xxx.jar 参数
相关推荐
"Spark笔记"可能涵盖了以下几个关键知识点: 1. Spark架构:Spark采用Master-Worker模式,Master节点管理任务调度,Worker节点运行任务。Spark的核心组件包括Driver、Executor和Cluster Manager。Driver负责解析并...
本篇笔记将深入探讨Spark的核心概念、架构设计以及实际应用,旨在帮助读者全面理解并掌握Spark。 1. Spark概述: Spark最初由加州大学伯克利分校AMPLab开发,其设计理念是提供一个快速、通用且可扩展的大数据处理...
Spark是大数据处理领域的一款高效、通用的计算框架,它提供了并行数据处理的能力,尤其适合大规模数据的实时处理。在Spark 2.1.0版本中,它支持Java 7及更高版本,尤其是利用Java 8的lambda表达式简化函数编写。 ...
spark项目:数组也是一种复杂数据类型,表示一组有序的值的列表,可以通过数值索引来访问其中的值。数组的值也可以是任意类型——简单值、对象或数组 JSON数组也没有变量和分号,把数组和对象结合起来,可以构成...
Spark笔记1.docx Spark 是什么? Spark 是一个基于内存的统一分析引擎,用于大规模数据处理,包括离线计算、实时计算和快速查询(交互式查询)。它具有快、易用和通用等特点,可以进行离线计算、交互式查询、实时...
根据“Spark笔记1”的描述,要在Hadoop集群上运行Spark任务,首先需要确保Spark能够正确识别到Hadoop集群。这通常涉及到一些环境变量的设置,例如: - `YARN_HOME`: 指定Hadoop的安装路径。 - `YARN_CONF_DIR`: 指定...
个人学习笔记。勿喷。持续更新中
本笔记整理主要涵盖了2022年3月16日的学习内容,旨在深入理解和掌握Spark的核心概念和功能。 Spark的核心理念是内存计算,它通过将数据存储在内存中,从而减少了磁盘I/O,提高了数据处理速度。这一特性使得Spark比...
本笔记主要关注Spark的基础知识,同时也涉及了Scala语言的学习,因为Spark主要是用Scala编写的。 首先,Scala是一种静态类型的多范式编程语言,它结合了面向对象和函数式编程的特点。在第一章中,我们学习了Scala的...
### Spark 2 笔记详解 #### 一、Spark 概念 Spark 是一款用于大规模数据处理的统一计算框架,其核心设计目的是实现高效的数据处理能力。Spark 的关键特性包括高性能计算、易于使用的API以及丰富的生态系统。在较高...
Spark-SourceCode分析 Apache Spark笔记本作者:祁传宏军 Spark简介 Spark起源自科研院所,加州大学伯克利分校UC Berkeley的AMP实验室。该校在edx上开设了系列课程:)“使用Spark XSeries进行数据科学与工程”。 08...
Spark学习笔记 Spark学习笔记 Spark学习笔记 Spark学习笔记
标题中的“databricks-notebooks”是一个开源项目,包含了丰富的示例Databricks Spark笔记本,主要针对Azure Databricks平台。这些笔记本展示了如何在Databricks环境中使用Spark进行数据处理和分析,尤其强调了在...
尚硅谷最新spark视频,Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。从入门到精通!
Spark 源码解析 Spark 是一种基于内存的分布式计算框架,主要用于大数据处理。它的源码中包含了许多复杂的组件和算法,本文将对 Spark 源码中的关键组件和算法进行解析。 环境准备(Yarn 集群) 在 Spark 中,...
Spark 学习笔记 Spark 是一个基于内存的分布式计算框架,它提供了高效、灵活、可扩展的数据处理解决方案。Spark 的核心组件是 Resilient Distributed Dataset (RDD),它是一个弹性的分布式数据集合,提供了高效的...
Spark Streaming思维导图,xmind