【无标题】

4 篇文章 0 订阅
2 篇文章 0 订阅
本文详细介绍了Spark大数据运算的实训内容,包括Linux虚拟机的安装与配置,Spark的基本概念、工作原理、生态组件,以及如何在Spark中进行数据处理、流处理和机器学习。讲解了Spark与Hadoop的集成以及安装和配置步骤。
摘要由CSDN通过智能技术生成

1、往期实训 

​​​​​​​Spark大数据快速运算实训三:虚拟机进行hadoop安装及配置+工作原理流程解释-CSDN博客

Spark大数据快速运算实训二:linux系统的配置基础操作-CSDN博客

Spark大数据快速运算实训一:linux虚拟机安装及JAVA安装-CSDN博客

2、目录 

3、什么是spark?

Apache Spark 是一种开源的集群计算框架,用于快速处理大数据。它是由加州大学伯克利分校AMPLab 开发的,并于 2013 年开源。Spark 提供了一种高效、可扩展和易于使用的编程模型,支持多种编程语言,如 Scala、Java、Python 和 R。

Spark 的核心是 Resilient Distributed Dataset(RDD),它是一个可以并行处理的分布式内存数据结构。RDD 可以通过多个操作进行转换和操作,从而实现对数据的高效处理和分析。这些操作包括过滤、映射、聚合、排序等。RDD 具有高度的容错性,即使出现故障也能快速地恢复。

Spark 不仅支持批处理,还支持流处理和机器学习等高级分析应用程序。Spark 的流处理库“Spark Streaming”支持实时处理,并可与Kafka、Flume、Twitter等数据源一起使用。Spark 的机器学习库“MLlib”提供了多种算法,比如聚类、分类、回归等,并支持模型导入和导出。

在大数据分析中,Spark 可以帮助用户快速处理海量数据并进行分析,比如基于历史数据进行预测,识别潜在的异常和趋势等。另外,Spark 可以轻松地与 Hadoop、Hive、Cassandra 和其他大数据技术进行集成,从而提供更广泛的大数据分析功能。


4、spark的生态系统

Spark的生态系统是由许多与Spark相关的开源工具和库组成的,这些工具和库可以与Spark一起使用,以增强Spark的功能和效率。以下是一些常见的Spark生态系统组件:

  1. Hadoop:Spark可以与Hadoop分布式文件系统(HDFS)和YARN资源管理器集成,以在分布式环境中运行。

  2. Spark SQL:Spark SQL是一个强大的工具,用于在Spark上执行结构化数据处理。它支持SQL查询、DataFrame和DataSet API。

  3. Spark Streaming:Spark Streaming是一个用于实时数据处理的库。它允许开发人员使用与批量数据处理相同的API来处理实时数据流。

  4. MLlib:MLlib是Spark的机器学习库,它提供了许多算法和工具,用于分类、回归、聚类、协同过滤等任务。

  5. GraphX:GraphX是Spark的图形处理库,它允许处理大型图形数据集。

  6. SparkR:SparkR是一个R语言包,它允许在Spark上运行R代码。

  7. Tungsten:Tungsten是Spark的新一代执行引擎,它提高了Spark的性能和内存管理。

  8. Zeppelin:Zeppelin是一个交互式笔记本,用于数据科学家和分析师在Spark上探索数据。

  9. Kafka:Kafka是一个流处理平台,用于处理大规模实时数据流。


5、spark的工作原理

Spark是基于内存的分布式计算框架,相比于传统的基于磁盘的计算框架(如Hadoop MapReduce),Spark具有更快的速度和更好的扩展性。

Spark的工作原理可以简单概括为以下步骤:

  1. 将输入数据集划分为多个小的数据块,称之为RDD(Resilient Distributed Datasets)。

  2. 将RDD分散到集群中的不同节点上。

  3. Spark的计算引擎会将用户编写的任务(称之为transformations)转换成有向无环图(DAG)。

  4. Spark将DAG划分为多个小的任务(称之为tasks),并将这些tasks分配到集群中的不同节点上。

  5. 每个节点上的任务会对其分配的RDD执行操作(称之为actions),将结果返回给Spark。

  6. Spark将结果合并,形成最终的输出数据集。

Spark的优势在于它将整个计算过程都放在内存中完成,同时支持各种数据源和数据处理方式,例如SQL查询、流处理、机器学习等,因此能够满足不同场景下的需求。


6、spark的工作流程

  1. 创建SparkContext:SparkContext是Spark的入口点,它连接了Spark与集群管理器(如YARN、Mesos或Standalone)以及存储系统(如HDFS)。

  2. 加载数据:使用SparkContext对象读取数据源,可以从文件系统、数据库、Hadoop HDFS、Apache Cassandra等读取数据。

  3. 转换数据:使用RDD(弹性分布式数据集)进行数据转换,例如map、filter、groupBy等操作,可将数据进行筛选、过滤、分组等操作。

  4. 缓存数据:在计算过程中,Spark可以对RDD进行缓存,避免重复计算,提高性能。

  5. 执行任务:Spark将RDD转换为DAG(有向无环图)进行分析,将计算划分为多个任务,分布式执行任务。

  6. 输出结果:Spark支持多种输出方式,包括文件系统、数据库、消息队列、HTTP服务等。

  7. 关闭SparkContext:SparkContext使用完毕后必须关闭,释放资源。

以上是一般的流程,对于特定的应用场景,也可以根据具体需要对流程进行优化或者增加其他的步骤。

​​​​​​​


7、spark的安装及配置 

7.1. 传输压缩包及解压

tar -zxvf spark-2.4.2-bin.hadoop2.7.tgz


7.2. 配置etc/profile

 


7.3. 对文件进行改名

在上面目录的基础上,进入到spark/conf目录下,对文件进行改名,(后续输入文件名更方便)

cp spark-env.sh.template spark-env.sh


7.4. 对文件进行配置

配置spark-env.sh文件

vim spark-env.sh

vim slaves


7.5. 查看进程

进程出现八个即为成功


8、spark的运行实例

8.1配置准备

mkdir code

cd code

mkdir ch3

cd ch3

vim WordCount.py  #输入python语句

WordCount.py文件内容

sudo vim /etc/profile

source /etc/profile

profile文件配置内容

python3 WordCount.py

8.2运行程序(命令行方法)

以下有三种:

python3 WordCount.py

spark-submit WordCount.py

spark-submit --master spark://s0766:7077 WordCount.py

这条命令是在Spark集群模式下提交一个名为WordCount.py的Python脚本作业。其中,--master参数指定了Spark应用程序的主节点地址,这里是s0766:7077;WordCount.py是所要提交的脚本文件。该脚本将执行一个单词计数任务,用Spark计算出输入文本中每个单词出现的次数,并输出结果。

8.3运行程序(pyspark 方法)

pyspark

sc.textFile("file:///opt/apps/spark/READMe.md",2).filter(lambda x:'a' in x).count()

sc.textFile("file:///opt/apps/spark/READMe.md",2).filter(lambda x:'b' in x).count()

  • sc.textFile("file:///opt/apps/spark/READMe.md",2):使用SparkContext对象sc读取位于本地文件系统路径file:///opt/apps/spark/READMe.md下的文件,并将其转化成RDD,其中参数2表示使用2个分区来对文件进行并行处理。
  • .filter(lambda x:'a' in x):对RDD进行过滤操作,筛选出RDD中文本行(字符串类型)中包含字符a的行。
  • .count():对过滤后的RDD计数,返回RDD中包含字符a的文本行数。

8.4运行程序(jupyter 方法) 

①先安装jupyter

sudo pip3 install jupyter

sudo python3 -m pip install --upgrade setuptools

sudo python3 -m pip install --upgrade pip

 ②打开虚拟机,切换到code目录(上面文件存放的目录)

③source文件profile,再打开jupyter

source /etc/profile

jupyter notebook

 ④运行代码

#导入了"SparkConf"和"SparkContext"这两个类,这两个类是用于配置和创建Spark应用程序的核心组件。

from pyspark import SparkConf, SparkContext

#创建了一个"SparkConf"对象,并使用setAppName()方法给应用程序命名为"MyAPP"。
conf = SparkConf().setAppName("MywAPP")

#创建了一个"SparkContext"对象,并传入了"SparkConf"对象作为参数,用于初始化Spark。
sc = SparkContext(conf=conf)

#使用Apache Spark读取了一个文本文件"README.md"

logFile = "file:///opt/apps/spark/README.md"

将其划分为两个分区(2)
logData = sc.textFile(logFile, 2).cache()

使用filter函数过滤包含字符'a'或字符'b'的行,并使用count函数统计过滤后的行数。
numAs = logData.filter(lambda line:'a' in line).count()
numBs = logData.filter(lambda line:'b' in line).count()

最后它输出了两个计数的结果,其中第一个是包含字符'a'的行数,第二个是包含字符'b'的行数。
print("包含a的行一共:{}, 包含b的行一共: {}".format(numAs, numBs))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值