目录
一,数据处理的方式
1,单机数据处理
依赖单个计算机的资源,处理的数据量较少
- 在单机环境下,数据处理主要依赖于单个计算机的硬件资源。
- 常见的单机数据处理工具包括数据库管理系统、电子表格软件等。
- 单机处理适用于小规模数据量和简单的数据分析任务。
- 然而,随着数据规模的不断增长,单机处理的局限性逐渐显现,如处理速度慢、存储容量有限等。
2,集群数据储存
- 为了应对大规模数据的存储需求,集群数据存储应运而生。
- 它通过将数据分布存储在多个节点上,实现了高容量、高可靠性的数据存储。
- 采用分布式技术
- 分布式存储服务 HDFS
- 主:NameNode
- 从:DataNode
- 辅:SecondaryNameNode
1,HDFS的读写流程
- HDFS(Hadoop Distributed File System)是一种广泛应用的分布式文件系统。
- 在 HDFS 中,数据被分割成多个数据块,并存储在不同的节点上。
- 读操作时,客户端首先向 NameNode 请求数据块的位置信息,然后直接从相应的 DataNode 读取数据。
- 写操作时,客户端将数据分割成数据块,并向 NameNode 请求存储位置,然后将数据块写入多个 DataNode。
- HDFS 通过数据冗余机制保证了数据的可靠性,即使某个节点出现故障,数据仍然可以从其他节点恢复。
读
写
4,分布式资源调度 YRAN
-
主:ResourceManger
-
从:NodeMarnger
-
管家:ApplicatioMaster
- YARN(Yet Another Resource Negotiator)是 Hadoop 中的资源管理和调度框架。
- 它负责管理集群中的计算资源,包括 CPU、内存和磁盘等,并将这些资源分配给不同的应用程序。
- YARN 主要由 ResourceManager 和 NodeManager 组成。
- ResourceManager 负责全局资源管理和调度,
- 而 NodeManager 负责管理单个节点上的资源,并执行由 ResourceManager 分配的任务。
1,YRAN原理图
- YARN 的原理图展示了其主要组件和工作流程。
- ResourceManager 接收来自客户端的应用程序提交请求,
- 并将任务分配给各个 NodeManager。NodeManager 负责启动和管理容(Container),
- 容器中运行着具体的应用程序任务。
- YARN 通过这种方式实现了资源的高效管理和调度,提高了集群的利用率和性能。
大数据相关的技术基本都采用分布式
-
海豚调度器
-
presto
-
Zookeeper
二,分布式计算框架
1,MapReduce分布式计算
- MapReduce 是一种经典的分布式计算框架,它将大规模数据处理任务分解为 Map 和 Reduce 两个阶段。
- 在 Map 阶段,数据被分割成多个小块,并在不同的节点上进行并行处理。每个 Map 任务将输入数据转换为键值对的形式,并输出中间结果。
- 在 Reduce 阶段,相同键的值被聚合在一起,并进行进一步的处理和计算。
- MapReduce 具有良好的可扩展性和容错性,适用于大规模数据的批处理任务
MR原理图
-
mapreduce分为两个部分,map阶段和reduce阶段;
-
map的数量默认根据block块决定的,在map切片的时候默认会根据block的大小开始切片,当然也可以更改;
-
reduce默认是根据计算的数据量自动决定产生多少个reduce,在hive中计算的时候,也可以手动更改设置;
2,Spark分布式计算
- Spark 是一种快速、通用的分布式计算框架。
- 与 MapReduce 相比,Spark 具有更高的性能和更丰富的功能。
- Spark 支持内存计算,可以将数据缓存在内存中,从而大大提高数据处理的速度。
- 此外,Spark 还提供了丰富的 API,包括 Spark SQL、Spark Streaming、Spark MLlib 等,可以满足不同类型的数据分析和处理需求。
spark的部署方式
-
locat本地模式
在本地模式下,Spark 运行在单个节点上,通常用于开发和测试。所有的计算任务都在本地机器的单个 JVM 中执行。
优点:
- 易于设置和调试,不需要复杂的集群配置。
- 快速启动和运行,方便进行小规模数据的实验和验证。
-
Standaone spark自带的资源调度
独立模式下,Spark 构建自己的独立集群环境,不依赖于其他外部集群管理系统。
优点:
- 相对容易部署和管理,对于小型到中型规模的集群比较适用。
- 可以对资源进行一定程度的控制和管理。
-
Yran 使用hadoop的资源调度
YARN(Yet Another Resource Negotiator)是 Hadoop 中的资源管理系统。Spark 可以运行在 YARN 之上,充分利用 Hadoop 集群的资源管理功能。
优点:
- 可以与 Hadoop 生态系统中的其他组件(如 HDFS、MapReduce 等)集成,实现资源的统一管理和共享。
- 适用于大型企业级 Hadoop 集群环境,具有较好的可扩展性和稳定性。
- Mesos上部署
Mesos 是一个通用的集群资源管理系统,Spark 也可以运行在 Mesos 之上。
优点:
- Mesos 提供了灵活的资源分配策略,可以更好地适应不同类型的应用程序。
- 支持多种不同的框架在同一集群上运行,提高资源利用率。
1,spark资源调度yran模式
三,Spark的开发方式
1,交互式开发
- Spark 提供了交互式开发环境,
- 如 Spark Shell 和 Jupyter Notebook。
- 在交互式开发中,用户可以直接在命令行或 notebook 中输入 Spark 代码,并立即看到结果。
- 这种开发方式非常适合数据探索和快速原型开发。
- 用户可以通过交互式开发环境快速尝试不同的数据分析方法和算法,提高开发效率。
-
在linux中以命令行的方式 执行计算
-
通过不同的方式进入不同的语言进行交互式界面
-
Sparksql
-
Pyspark
-
sparkR
-
Java
-
scala
-
-
代码不能持久化保存,一般用作测试
2,脚本式开发
- 对于大规模的数据分析和处理任务,通常需要使用脚本式开发。
- 在脚本式开发中,用户使用编程语言(如 Scala、Python 或 Java)编写 Spark 应用程序,并将其打包成可执行的 JAR 文件或 Python 脚本。
- 然后,用户可以在集群上运行这些脚本,实现大规模数据的分布式处理。
- 脚本式开发具有更好的可维护性和可扩展性,可以满足复杂的数据分析和处理需求。
-
把编写的代码保存在文件,对代码文件进行运行并实现spark的计算
-
使用IDE工具进行代码文件的编写
-
公司中都是采用脚本式开发