Spark学习笔记——1

一、Spark简介
1、Spark:完全基于Hadoop的一种计算框架
在这里插入图片描述
2、计算框架——》适用场景:
Spark RDD——》离线批处理
Spark Core——》流式计算
Spark SQL——》交互式查询(基于Hive)
Spark Streaming——》实时流式计算
Spark MLlib——》机器学习
Spark GraphX——》用于图计算
3、Spark用于计算,Hadoop生态系统用于存储(HBase,HDFS,Hive)、资源调度(Yarn)
4、Spark基于内存来计算,是MapReduce的数倍,即使是从磁盘读取计算,Spark计算速度也优于后者
在这里插入图片描述
对于数据量巨大的数据源,Spark处理会出现一些OOM内存泄漏等问题,但是MapReduce基于磁盘处理的就不会出现这种情况。
5、Spark整体架构
在这里插入图片描述
注:对弹性分布式数据集(resilient distributed dataset,简
称 RDD),RDD 表示分布在多个计算节点上可以并行操作的元素集合,是
Spark 主要的编程抽象

6、Spark SQL与Hive的区别
在这里插入图片描述
1)Spark SQL支持多种数据源,速度比Hive快(Hive将HQL翻译成MapReduce,还是基于MapReuce处理查询的)
2)部分Hive支持的高级特性,Spark SQL不支持。
spark sql不支持的hive功能(去官网看了下最新的2.3.2版本,不过2.4就快更新了,到时候再去看看)

Below is a list of Hive features that we don’t support yet. Most of these features are rarely used in Hive deployments.

以下是我们尚不支持的Hive功能列表。 大多数这些功能很少用于Hive部署。

Major Hive Features Hive的主要功能

Tables with buckets: bucket is the hash partitioning within a Hive table partition. Spark SQL doesn’t support buckets yet.
带buckets(桶)的表:bucket是Hive表分区中的散列分区。 Spark SQL尚不支持存储buckets。

Esoteric Hive Features 神秘的Hive功能

UNION type
Unique join
Column statistics collecting: Spark SQL does not piggyback scans to collect column statistics at the moment and only supports populating the sizeInBytes field of the hive metastore.
UNION类型
独特的加入
列统计信息收集:Spark SQL目前不会通过捎带扫描来收集列统计信息,只支持填充hive Metastore的sizeInBytes字段。
metastore

Hive Input/Output Formats Hive输入输出格式

File format for CLI: For results showing back to the CLI, Spark SQL only supports TextOutputFormat.
Hadoop archive
CLI的文件格式:对于返回到CLI的结果,SCALL SQL只支持ToTutuPuttFrand。
Hadoop存档

Hive Optimizations Hive优化

A handful of Hive optimizations are not yet included in Spark. Some of these (such as indexes) are less important due to Spark SQL’s in-memory computational model. Others are slotted for future releases of Spark SQL.

Block level bitmap indexes and virtual columns (used to build indexes)
Automatically determine the number of reducers for joins and groupbys: Currently in Spark SQL, you need to control the degree of parallelism post-shuffle using “SET spark.sql.shuffle.partitions=[num_tasks];”.
Meta-data only query: For queries that can be answered by using only meta data, Spark SQL still launches tasks to compute the result.
Skew data flag: Spark SQL does not follow the skew data flags in Hive.
STREAMTABLE hint in join: Spark SQL does not follow the STREAMTABLE hint.
Merge multiple small files for query results: if the result output contains multiple small files, Hive can optionally merge the small files into fewer large files to avoid overflowing the HDFS metadata. Spark SQL does not support that.
Spark中还没有包含一些Hive优化。由于Spark SQL的内存计算模型,其中一些(如索引)不太重要。其他版本用于未来的Spark SQL版本。

块级位图索引和虚拟列(用于构建索引)
自动确定连接和groupbys的reducer数量:目前在Spark SQL中,需要使用“SET spark.sql.shuffle.partitions = [num_tasks];”来控制后洗牌的并行度。
仅元数据查询:对于只能使用元数据来回答的查询,Spark SQL仍会启动计算结果的任务。
偏斜数据标志:Spark SQL不遵循Hive中的偏斜数据标志。
连接中的STREAMTABLE提示:Spark SQL不遵循STREAMTABLE提示。
合并多个小文件以查找结果:如果结果输出包含多个小文件,Hive可以选择将小文件合并为较少的大文件,以避免溢出HDFS元数据。 Spark SQL不支持这一点。
7、Spark Streaming与Storm
1)关于Storm
在这里插入图片描述
2)Spark Streaming不支持Storm的一种特性:分布式流式计算程序(Topology)在运行过程中,可以动态地调整并行度,动态提高并行能力。而且Spark Streaming属于准实时处理,如果对实时性要求比较高还是要用到Storm(其实现在阿里再用Flink,它是基于流式处理的,双十一的大屏幕就是用它做的,每秒可以处理4亿条数据)
3)Spark Streaming吞吐量比Storm高,因为是基于batch(批)的,而Storm对于每一条来的数据都要分配资源,导致Storm的吞吐量比较低。
4)Spark Streaming可以与Spark的其他框架相结合,可以对流式处理完的中间数据继续交给Spark其他框架来继续处理。
二、总结
至于MLlib和GraphX就在之后的学习的时候去查一下它们大致的一种情况吧。至于Spark的版本,将要迎来2.4.0版本,也新增了些功能,优于我初学Spark,先学习了Spark的基础之后,再去跟进最新的东西吧。

### 回答1: Spark是一个开源的大数据处理框架,它提供了高效的数据处理能力和易用的API,支持多种数据处理模式,包括批处理、流处理和机器学习等。Spark的核心是分布式计算引擎,它可以在集群中运行,利用多台计算机的计算能力来处理大规模数据。Spark的优势在于其高效的内存计算和强大的数据处理能力,可以在处理大规模数据时提供更快的计算速度和更高的性能。Spark的生态系统也非常丰富,包括Spark SQL、Spark Streaming、MLlib和GraphX等组件,可以满足不同的数据处理需求。 ### 回答2: Spark是一种大规模数据处理引擎,可以较快地处理大数据。Spark并不是单独的一种工具,而是一系列的工具和库的整合。它具备高效的内存计算功能,能够在数秒或数分钟内完成数据处理任务。 Spark的核心是分布式计算引擎,通过将数据分成多个部分进行处理,缩短了计算时间。Spark基于RDD(弹性分布式数据集)进行数据处理,RDD是一种可缓存、可重用和容错的数据结构。RDD抽象了数据分布和分区,提供了简单的API。 Spark的架构包括四个组件:Driver、Cluster manager、Worker、和 Executor。其中Driver是Spark应用程序的主程序,Cluster manager通过Master节点来管理各个Worker节点,Worker节点包含了整个Spark集群的计算资源,Executor执行计算任务。 Spark支持多种编程语言,包括Scala、Java、Python和R。其中Scala是Spark的主要语言,因为它能够将Spark的API最大程度地利用。 除了分布式计算引擎外,Spark还提供了多种库和工具,包括Spark SQL、Spark Streaming、MLlib和GraphX。Spark SQL是一种用于结构化数据处理的库,能够使用SQL语句进行数据查询;Spark Streaming可以实时处理数据流,包括文本和图像等;MLlib是实现了多种机器学习算法的库,包括分类、回归、聚类和协同过滤;GraphX可以用于图计算和图分析领域。 总之,Spark是一种强大的大数据处理引擎,能够通过分布式计算架构实现快速的数据处理。它提供了多种语言支持和众多的库和工具,方便用户处理各类数据。 ### 回答3: Spark是一款开源的、分布式的大数据处理框架,它的出现将大数据处理的速度提升到了一个全新的水平。Spark的特点在于它的内存计算引擎,这使得Spark的运行速度比传统的MapReduce处理速度要快很多,同时也比传统的Hadoop更加灵活。 Spark可以用于处理各种大数据应用场景,包括批处理、交互式查询、实时流处理等等。同时,Spark的生态系统非常丰富,有众多的开源库和工具可以使用,例如:Spark SQL、Spark Streaming、GraphX、MLlib等等。 Spark的运行环境需要一个集群,因为Spark是分布式的,它可以通过在集群中多个节点上并行执行任务来提升处理速度,而且Spark支持多种集群管理和资源调度工具,例如:Apache Mesos、Hadoop YARN、Spark自带的资源调度程序等等。 Spark的编程接口非常灵活,可以使用Scala、Java、Python等多种编程语言来编写Spark程序。无论是使用哪种编程语言,Spark都提供了相应的API和工具,例如:Spark SQL、Spark Streaming等。 总之,Spark是一个非常强大的大数据处理框架,它的出现是对传统的Hadoop框架的一种补充和升级,不仅可以处理海量的数据,而且可以提供更快速的数据处理速度和更强大的数据处理能力。因此,Spark已经成为现代大数据处理和机器学习领域中非常重要的工具之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值