Java核心知识点整理大全25-笔记

news2025/1/11 6:07:01

目录

25. Hadoop

25.1.1. 概念

25.1.2. HDFS

25.1.2.1. Client

25.1.2.2. NameNode

25.1.2.3. Secondary NameNode

25.1.2.4. DataNode

25.1.3. MapReduce

25.1.3.1. Client

25.1.3.2. JobTracker

25.1.3.3. TaskTracker

25.1.3.4. Task

25.1.3.5. Reduce Task 执行过程

25.1.4. Hadoop MapReduce 作业的生命周期

1.作业提交与初始化

2.任务调度与监控。

3.任务运行环境准备

4.任务执行

5.作业完成。

26. Spark

26.1.1. 概念

26.1.2. 核心架构

Spark Core

Spark SQL

Spark Streaming

Mllib

GraphX

26.1.3. 核心组件

Cluster Manager-制整个集群,监控 worker

Worker 节点-负责控制计算节点

Driver: 运行 Application 的 main()函数

26.1.4. SPARK 编程模型

26.1.5. SPARK 计算模型

26.1.6. SPARK 运行流程

26.1.7. SPARK RDD 流程

1. 创建 RDD 对象

26.1.8. SPARK RDD


25. Hadoop

25.1.1. 概念

就是一个大数据解决方案。它提供了一套分布式系统基础架构。 核心内容包含 hdfs 和 mapreduce。hadoop2.0 以后引入 yarn. hdfs 是提供数据存储的,mapreduce 是方便数据计算的。

1. hdfs 又对应 namenode 和 datanode. namenode 负责保存元数据的基本信息, datanode 直接存放数据本身;

2. mapreduce 对应 jobtracker 和 tasktracker. jobtracker 负责分发任务,tasktracker 负 责执行具体任务;

3. 对应到 master/slave 架构,namenode 和 jobtracker 就应该对应到 master, datanode 和 tasktracker 就应该对应到 slave.

25.1.2. HDFS

25.1.2.1. Client

Client(代表用 户) 通过与 NameNode 和 DataNode 交互访问 HDFS 中 的文件。 Client 提供 了一个类似 POSIX 的文件系统接口供用户调用。

25.1.2.2. NameNode

整个 Hadoop 集群中只有一个 NameNode。 它是整个系统的“ 总管”, 负责管理 HDFS 的目 录树和相关的文件元数据信息。 这些信息是以“ fsimage”( HDFS 元数据镜像文件)和 “ editlog”(HDFS 文件改动日志)两个文件形式存放在本地磁盘,当 HDFS 重启时重新构造出 来的。此外, NameNode 还负责监控各个 DataNode 的健康状态, 一旦发现某个 DataNode 宕 掉,则将该 DataNode 移出 HDFS 并重新备份其上面的数据。

25.1.2.3. Secondary NameNode

Secondary NameNode 最重要的任务并不是为 NameNode 元数据进行热备份, 而是定期合并 fsimage 和 edits 日志, 并传输给 NameNode。 这里需要注意的是,为了减小 NameNode 压 力, NameNode 自己并不会合并 fsimage 和 edits, 并将文件存储到磁盘上, 而是交由 Secondary NameNode 完成。

25.1.2.4. DataNode

一般而言, 每个 Slave 节点上安装一个 DataNode, 它负责实际的数据存储, 并将数据信息定期 汇报给 NameNode。 DataNode 以固定大小的 block 为基本单位组织文件内容, 默认情况下 block 大小为 64MB。 当用户上传一个大的文件到 HDFS 上时, 该文件会被切分成若干个 block, 分别存储到不同的 DataNode ; 同时,为了保证数据可靠, 会将同一个 block 以流水线方式写到若干个(默认是 3,该参数可配置)不同的 DataNode 上。 这种文件切割后存储的过程是对用户 透明的。

25.1.3. MapReduce

同 HDFS 一样,Hadoop MapReduce 也采用了 Master/Slave(M/S)架构,具体如图所示。它 主要由以下几个组件组成:Client、JobTracker、TaskTracker 和 Task。 下面分别对这几个组件 进行介绍

25.1.3.1. Client

用户编写的 MapReduce 程序通过 Client 提交到 JobTracker 端; 同时, 用户可通过 Client 提 供的一些接口查看作业运行状态。 在 Hadoop 内部用“作业”(Job) 表示 MapReduce 程序。 一个 MapReduce 程序可对应若干个作业,而每个作业会被分解成若干个 Map/Reduce 任务 (Task)。

25.1.3.2. JobTracker

JobTracker 主要负责资源监控和作业调度。JobTracker 监控所有 TaskTracker 与作业的健康状况, 一旦发现失败情况后,其会将相应的任务转移到其他节点;同时 JobTracker 会跟踪任务的执行进 度、资源使用量等信息,并将这些信息告诉任务调度器,而调度器会在资源出现空闲时,选择合 适的任务使用这些资源。在 Hadoop 中,任务调度器是一个可插拔的模块,用户可以根据自己的 需要设计相应的调度器。

25.1.3.3. TaskTracker

TaskTracker 会周期性地通过 Heartbeat 将本节点上资源的使用情况和任务的运行进度汇报给 JobTracker, 同时接收 JobTracker 发送过来的命令并执行相应的操作(如启动新任务、 杀死任 务等)。TaskTracker 使用“slot” 等量划分本节点上的资源量。“slot” 代表计算资源(CPU、 内存等)。一个 Task 获取到一个 slot 后才有机会运行,而 Hadoop 调度器的作用就是将各个 TaskTracker 上的空闲 slot 分配给 Task 使用。 slot 分为 Map slot 和 Reduce slot 两种,分别供 MapTask 和 Reduce Task 使用。 TaskTracker 通过 slot 数目(可配置参数)限定 Task 的并发 度.

25.1.3.4. Task

Task 分为 Map Task 和 Reduce Task 两种, 均由 TaskTracker 启动。 HDFS 以固定大小的 block 为基本单位存储数据, 而对于 MapReduce 而言, 其处理单位是 split。split 与 block 的对应关 系如图所示。 split 是一个逻辑概念, 它只包含一些元数据信息, 比如数据起始位置、数据长度、 数据所在节点等。它的划分方法完全由用户自己决定。 但需要注意的是,split 的多少决定了 Map Task 的数目 ,因为每个 split 会交由一个 Map Task 处理。

Map Task 执行过程如图所示。 由该图可知,Map Task 先将对应的 split 迭代解析成一个个 key/value 对,依次调用用户自定义的 map() 函数进行处理,最终将临时结果存放到本地磁盘上, 其中临时数据被分成若干个 partition,每个 partition 将被一个 Reduce Task 处理。

25.1.3.5. Reduce Task 执行过程

该过程分为三个阶段

1. 从远程节点上读取 MapTask 中间结果(称为“Shuffle 阶段”);

2. 按照 key 对 key/value 对进行排序(称为“ Sort 阶段”);

3. 依次读取,调用用户自定义的 reduce() 函数处理,并将最终结果存到 HDFS

25.1.4. Hadoop MapReduce 作业的生命周期

1.作业提交与初始化

1. 用户提交作业后, 首先由 JobClient 实例将作业相关信息, 比如将程序 jar 包、作业配置文 件、 分片元信息文件等上传到分布式文件系统( 一般为 HDFS)上,其中,分片元信息文件 记录了每个输入分片的逻辑位置信息。 然后 JobClient 通过 RPC 通知 JobTracker。 JobTracker 收到新作业提交请求后, 由 作业调度模块对作业进行初始化:为作业创建一个 JobInProgress 对象以跟踪作业运行状况, 而 JobInProgress 则会为每个 Task 创建一个 TaskInProgress 对象以跟踪每个任务的运行状态, TaskInProgress 可能需要管理多个 “ Task 运行尝试”( 称为“ Task Attempt”)。

2.任务调度与监控。

2. 前面提到,任务调度和监控的功能均由 JobTracker 完成。TaskTracker 周期性地通过 Heartbeat 向 JobTracker 汇报本节点的资源使用 情况, 一旦出 现空闲资源, JobTracker 会按照一定的策略选择一个合适的任务使用该空闲资源, 这由任务调度器完成。 任务调度器 是一个可插拔的独立模块, 且为双层架构, 即首先选择作业, 然后从该作业中选择任务, 其 中,选择任务时需要重点考虑数据本地性。 此外,JobTracker 跟踪作业的整个运行过程,并 为作业的成功运行提供全方位的保障。 首先, 当 TaskTracker 或者 Task 失败时, 转移计算 任务 ; 其次, 当某个 Task 执行进度远落后于同一作业的其他 Task 时,为之启动一个相同 Task, 并选取计算快的 Task 结果作为最终结果。

3.任务运行环境准备

3. 运行环境准备包括 JVM 启动和资源隔 离, 均由 TaskTracker 实现。 TaskTracker 为每个 Task 启动一个独立的 JVM 以避免不同 Task 在运行过程中相互影响 ; 同时,TaskTracker 使 用了操作系统进程实现资源隔离以防止 Task 滥用资源。

4.任务执行

4. TaskTracker 为 Task 准备好运行环境后, 便会启动 Task。 在运行过程中, 每个 Task 的最 新进度首先由 Task 通过 RPC 汇报给 TaskTracker, 再由 TaskTracker 汇报给 JobTracker。

5.作业完成。

5. 待所有 Task 执行完毕后, 整个作业执行成功。


26. Spark

26.1.1. 概念

Spark 提供了一个全面、统一的框架用于管理各种有着不同性质(文本数据、图表数据等)的数据 集和数据源(批量数据或实时的流数据)的大数据处理的需求。

26.1.2. 核心架构

Spark Core

包含 Spark 的基本功能;尤其是定义 RDD 的 API、操作以及这两者上的动作。其他 Spark 的库都 是构建在 RDD 和 Spark Core 之上的

Spark SQL

提供通过 Apache Hive 的 SQL 变体 Hive 查询语言(HiveQL)与 Spark 进行交互的 API。每个 数据库表被当做一个 RDD,Spark SQL 查询被转换为 Spark 操作。

Spark Streaming

对实时数据流进行处理和控制。Spark Streaming 允许程序能够像普通 RDD 一样处理实时数据

Mllib

一个常用机器学习算法库,算法被实现为对 RDD 的 Spark 操作。这个库包含可扩展的学习算法, 比如分类、回归等需要对大量数据集进行迭代的操作。

GraphX

控制图、并行图操作和计算的一组算法和工具的集合。GraphX 扩展了 RDD API,包含控制图、 创建子图、访问路径上所有顶点的操作

26.1.3. 核心组件

Cluster Manager-制整个集群,监控 worker

在 standalone 模式中即为 Master 主节点,控制整个集群,监控 worker。在 YARN 模式中为资 源管理器

Worker 节点-负责控制计算节点

从节点,负责控制计算节点,启动 Executor 或者 Driver。

Driver: 运行 Application 的 main()函数

Executor:执行器,是为某个 Application 运行在 worker node 上的一个进程

26.1.4. SPARK 编程模型

Spark 应用程序从编写到提交、执行、输出的整个过程如图所示,图中描述的步骤如下:

1. 用户使用 SparkContext 提供的 API(常用的有 textFile、sequenceFile、runJob、stop 等) 编写 Driver application 程序。此外 SQLContext、HiveContext 及 StreamingContext 对 SparkContext 进行封装,并提供了 SQL、Hive 及流式计算相关的 API。

2. 使用SparkContext提交的用户应用程序,首先会使用BlockManager和BroadcastManager 将任务的 Hadoop 配置进行广播。然后由 DAGScheduler 将任务转换为 RDD 并组织成 DAG, DAG 还将被划分为不同的 Stage。最后由 TaskScheduler 借助 ActorSystem 将任务提交给 集群管理器(Cluster Manager)。

3. 集群管理器(ClusterManager)给任务分配资源,即将具体任务分配到Worker上,Worker 创建 Executor 来处理任务的运行。Standalone、YARN、Mesos、EC2 等都可以作为 Spark 的集群管理器。

26.1.5. SPARK 计算模型

RDD 可以看做是对各种数据计算模型的统一抽象,Spark 的计算过程主要是 RDD 的迭代计算过 程。RDD 的迭代计算过程非常类似于管道。分区数量取决于 partition 数量的设定,每个分区的数 据只会在一个 Task 中计算。所有分区可以在多个机器节点的 Executor 上并行执行。

26.1.6. SPARK 运行流程

1. 构建 Spark Application 的运行环境,启动 SparkContext

2. SparkContext 向资源管理器(可以是 Standalone,Mesos,Yarn)申请运行 Executor 资源, 并启动 StandaloneExecutorbackend,

3. Executor 向 SparkContext 申请 Task

4. SparkContext 将应用程序分发给 Executor

5. SparkContext 构建成 DAG 图,将 DAG 图分解成 Stage、将 Taskset 发送给 Task Scheduler, 最后由 Task Scheduler 将 Task 发送给 Executor 运行

6. Task 在 Executor 上运行,运行完释放所有资源

26.1.7. SPARK RDD 流程

1. 创建 RDD 对象

2. DAGScheduler 模块介入运算,计算 RDD 之间的依赖关系,RDD 之间的依赖关系就形成了 DAG

3. 每一个 Job 被分为多个 Stage。划分 Stage 的一个主要依据是当前计算因子的输入是否是确 定的,如果是则将其分在同一个 Stage,避免多个 Stage 之间的消息传递开销

26.1.8. SPARK RDD

(1)RDD 的创建方式

1)从 Hadoop 文件系统(或与Hadoop兼容的其他持久化存储系统,如Hive、Cassandra、 HBase)输入(例如 HDFS)创建。

2)从父 RDD 转换得到新 RDD。

3)通过 parallelize 或 makeRDD 将单机数据创建为分布式 RDD。

(2)RDD 的两种操作算子(转换(Transformation)与行动(Action))

对于 RDD 可以有两种操作算子:转换(Transformation)与行动(Action)。

1)转换(Transformation):Transformation操作是延迟计算的,也就是说从一个RDD转 换生成另一个 RDD 的转换操作不是马上执行,需要等到有 Action 操作的时候才会真正触 发运算。

2)行动(Action):Action 算子会触发 Spark 提交作业(Job),并将数据输出 Spark 系统。


Java核心知识点整理大全24-笔记-CSDN博客

往期快速传送门👆(在文章最后):

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1275013.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【代码】两阶段鲁棒优化/微电网经济调度入门到编程

内容包括 matlab-yalmipcplex微电网两阶段鲁棒经济调度(刘) matlab-yalmipcplex两阶段鲁棒微电网容量经济优化调度 两阶段鲁棒优化CCG列于约束生成和Benders代码,可扩展改编,复现自原外文论文 【赠送】虚拟储能单元电动汽车建…

FL Studio(水果软件)2024最新中文版云盘下载

如今,越来越多的音乐人选择使用音乐制作软件来进行音乐的创作,一台电脑、一款软件以及一个外接MIDI就是一个小型的音乐工作站。FL Studio成了音乐界萌新的首选,目前最新的版本为FL Studio2024版本。 你可以不知道如何做音乐,但是…

《opencv实用探索·七》一文看懂图像卷积运算

1、图像卷积使用场景 图像卷积是图像处理中的一种常用的算法,它是一种基本的滤波技术,通过卷积核(也称为滤波器)对图像进行操作,使用场景如下: 模糊(Blur): 使用加权平…

你好!插值查找【JAVA】

1.初次相识 插值查找(interpolation search)是一种根据待查找关键字在有序数组中的大致位置决定查找范围的查找算法。插值查找与二分查找类似,区别在于插值查找对于待查找关键字在数组中的位置进行估计,从而更精准地定位到待查找关…

信息化系列——企业信息化建设

​在信息化浪潮的汹涌推进下,众多企业纷纷开启信息化建设之旅,并取得了引人注目的成果。然而,从整体上观览,我国企业的信息化水平虽已在逐步提升,但多数企业在信息化建设方面仍旧存在显著的不足。显然,信息…

单元测试与白盒测试的区别

测试技术: 1. 白盒测试和单元测试的区别: l 单元测试和白盒测试是不同的,虽然单元测试和白盒测试都是关注功能虽然他们都需要代码支持,但是级别不同,白盒测试关注的是类中一个方法的功能是更小的单位,但是完成一个单元测试可能需要N多类,所以说作单元测试需要什么写驱动和稳定…

C++作业3

设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员:成绩、Per类对象p1&#xff0c;设计这两个类的构造函数、析构函数和拷贝构造函数。 代码&#xff1a; #include <iostream>using n…

Git常用命令#切换分支

要在 Git 中切换分支&#xff0c;你可以使用 git checkout 命令。 a.创建新分支并切换到该分支 如果你想要创建一个新分支并立即切换到该分支&#xff0c;可以使用以下命令&#xff1a; git checkout -b 新分支名这会创建一个名为 新分支名 的新分支&#xff0c;并将你的工作目…

通过PS导出样条线到3DMax挤出模型

1、PS制作样条线 PS用钢笔做出路径&#xff0c;导出 把.ai文件拖入3dmax中 2、挤出模型 调整模型在中心点位置&#xff0c;导出

【算法每日一练]-图论(保姆级教程 篇6(图上dp))#最大食物链 #游走

目录 题目&#xff1a;最大食物链 解法一&#xff1a; 解法二&#xff1a; 记忆化 题目&#xff1a;游走 思路&#xff1a; 题目&#xff1a;最大食物链 解法一&#xff1a; 我们标记f[i]是被f[x]捕食的点对应的类食物链数 不难得出&#xff1a; f[x]∑(f[i]) 首先从生…

ECU Bootloader程序开发

文章目录 前言前言 本篇主要介绍ECU BootLoader的“一般”开发逻辑,对正在、或想要做这方面工作的小伙伴一个参考。 BootLoader的稳定性至关重要,前期设计要规避可能存在的所有使ECU变“砖”的风险点,尽可能地设计多重防范机制,并做充分的正常、异常测试,才能保证量产的质…

由于找不到xapofx1_5.dll,无法继续执行代码的修复方法

在使用特定应用程序或游戏时&#xff0c;Windows 用户可能会遇到一个错误消息“由于找不到xapofx1_5.dll,无法继续执行代码”&#xff0c;这可能导致程序无法启动。本文将介绍解决此问题的多种方法&#xff0c;并对比各自的优点和缺点。 一.什么是xapofx1_5.dll xapofx1_5.dll…

WhatsApp群发消息脚本功能介绍及代码分享!

随着社交媒体的普及&#xff0c;通讯应用成为了人们日常沟通的主要工具之一&#xff0c;其中&#xff0c;WhatsApp凭借其简洁、易用的特点&#xff0c;成为了全球广受欢迎的通讯应用之一&#xff0c;除了基础的聊天功能&#xff0c;WhatsApp还提供了一系列辅助工具功能&#xf…

二十年前就在用的DDOS攻击,为什么一直不过时?

文章目录 一、DOS二、DDOS三、如何防范DDOS1.可以过滤IP地址2.增加设备3.在骨干节点配置防火墙4.开启过滤5.配置DNS抗攻击6.白帽团队 四、白帽子 为什么二十年前中国红客们就在用的DDOS攻击直到现在还依然是黑客们最爱的攻击方法&#xff1f;二十年前的攻击技术为什么还不过时&…

JavaScript类型判断:解密变量真实身份的神奇技巧

文章目录 1. typeof运算符2. instanceof运算符3. Object.prototype.toString4. Array.isArray5. 使用constructor属性6. 使用Symbol.toStringTag7. 使用is类型判断库8. 谨慎使用隐式类型转换结语 &#x1f389;JavaScript类型判断&#xff1a;解密变量真实身份的神奇技巧 ☆* o…

文献速递:(第三部分)— (超声非破坏性评估中合成和增强训练数据生成与评估的最新研究进展)

文献速递&#xff1a;&#xff08;第三部分&#xff09;— &#xff08;超声非破坏性评估中合成和增强训练数据生成与评估的最新研究进展&#xff09; Title 题目 A review of synthetic and augmented training data for machine learning in ultrasonic non-destructive e…

手持收银机|移动收银机|POS终端安卓主板定制方案

智能手持收银机是一种集成了显示触摸控制、IC卡刷卡、磁条卡刷卡、二维码扫码、票据打印等多种功能的设备。它支持支付宝、微信、银行卡、云闪付、Apple Pay、会员储值等多种支付方式&#xff0c;为商家和用户提供了更便捷的支付体验。 该手持收银机采用了联发科MTK6761平台开发…

已知数组A[1..n]中元素类型为非负整数,设计算法将其调整为左右两部分,左边所有为奇数,右边所有为偶数,并要求算法的时间复杂度为O(n)

//左边奇数右边偶数 void Swap(int* a, int* b) {int tmp *b;*b *a;*a tmp; } void LeftRight(int arr[],int n) {int i 0;int j n - 1;while(i<j){if (arr[i] % 2 0 && arr[j] % 2 1) {Swap(&arr[i], &arr[j]);i;j--;}else if (arr[i] % 2 1 &…

小众实用的Python 爬虫库RoboBrowser推荐

文章目录 前言安装及用法实战一下1 打开目标网站2 自动化表单提交3 数据爬取 最后关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六…

JSP格式化标签 formatDate日期格式转换

我们继续来讲格式化标签 formatDate 这个标签 作用是 将一个date时间类型的值转成指定格式的字符串 语法格式如下 value 是需要格式化的数据 type 是确定你要转什么类型的数据 这里有 日期型 时间型 日期时间型 dateStyle 专门用来设置日期格式 timestyle 的话 是专门用来设…