大数据主要组件HDFS Iceberg Hadoop spark介绍

  • HDFS
  • Iceberg
  • hadoop
  • spark

HDFS

面向PB级数据存储的分布式文件系统,可以存储任意类型与格式的数据文件,包括结构化的数据以及非结构化的数据。HDFS将导入的大数据文件切割成小数据块,均匀分布到服务器集群中的各个节点,并且每个数据块多副本冗余存储,保证了数据的可靠性。HDFS还提供专有的接口API,用以存储与获取文件内容。
HDFS的基本架构如图:
在这里插入图片描述
HDFS基础架构主要包含组件:NameNode、Standby NameNode、DataNode等。NameNode是HDFS核心组成部分,DataNode用于数据存储节点。
NameNode:NameNode 是 HDFS 的主节点,负责管理文件系统的元数据,包括文件和目录的结构、文件到数据块(Block)的映射、数据块到数据节点(DataNode)的映射等。在 Hadoop 3.x 版本中,NameNode 的内存效率得到了提高,因为它引入了更紧凑的数据结构和编码方案。
Secondary NameNode:在 Hadoop 3.x 版本中,Secondary NameNode 已经被替换为 Standby NameNode,作为备用的 NameNode。当活动的 NameNode 失效时,Standby NameNode 可以接管其工作,从而提高了系统的可用性。

DataNode:DataNode 是 HDFS 的工作节点,它负责存储和检索数据块。在 Hadoop 3.x 版本中,引入了 Erasure Coding(纠删码)技术,可以在保证数据可靠性的同时,减少存储空间的需求。
Client:Client 是使用 HDFS 的用户或应用程序。Client 通过 NameNode 获取文件的元数据和数据块的位置,然后直接从 DataNode 读取或写入数据块。
Quorum Journal Manager (QJM):在 Hadoop 3.x 版本中,为了提高 NameNode 的可用性和数据的一致性,引入了 Quorum Journal Manager。QJM 是一个协调多个 NameNode 的服务,它记录 NameNode 的操作日志,并在 NameNode 切换时保证数据的一致性。
HDFS Federation:HDFS Federation 允许有多个 NameNode,每个 NameNode 管理文件系统的一部分命名空间(Namespace),从而提高了系统的可扩展性。
通过这种架构,HDFS 在 Hadoop 3.x 版本中提供了更高的可用性、更高的存储效率和更好的可扩展性,更适应大数据处理的需求。

Iceberg

Apache Iceberg 是一种新型的用于大规模数据分析的开源表格式。它被设计用于存储移动缓慢的大型表格数据。它旨在改善 Hive、Trino(PrestoSQL)和 Spark 中内置的事实上的标准表布局。Iceberg 可以屏蔽底层数据存储格式上的差异,向上提供统一的操作 API,使得不同的引擎可以通过其提供的 API 接入。

Apache Iceberg 具备以下能力:
 模式演化(Schema evolution):支持 Add(添加)、Drop(删除)、Update(更新)、Rename(重命名)和 Reorder(重排)表格式定义。
 分区布局演变(Partition layout evolution):可以随着数据量或查询模式的变化而更新表的布局。
 隐式分区(Hidden partitioning):查询不再取决于表的物理布局。通过物理和逻辑之间的分隔,Iceberg 表可以随着数据量的变化和时间的推移发展分区方案。错误配置的表可以得到修复,无需进行昂贵的迁移。
 时光穿梭(Time travel):支持用户使用完全相同的快照进行重复查询,或者使用户轻松检查更改。
 版本回滚(Version rollback):使用户可以通过将表重置为良好状态来快速纠正问题。
在可靠性与性能方面,Iceberg 可在生产中应用到数十 PB 的数据表,即使没有分布式 SQL 引擎,也可以读取这些巨大规模的表:
 扫描速度快,无需使用分布式 SQL 引擎即可读取表或查找文件。
 高级过滤,基于表元数据,使用分区和列级统计信息对数据文件进行裁剪。

Iceberg 被设计用来解决最终一致的云对象存储中的正确性问题:
 可与任何云存储一起使用,并且通过避免调用 list 和 rename 来减少 HDFS 的 NameNode 拥塞。
 可序列化的隔离,表更改是原子性的,用户永远不会看到部分更改或未提交的更改。
 多个并发写入使用乐观锁机制进行并发控制,即使写入冲突,也会重试以确保兼容更新成功。
Iceberg 设计为以快照(Snapshot)的形式来管理表的各个历史版本数据。快照代表一张表在某个时刻的状态。每个快照中会列出表在某个时刻的所有数据文件列表。Data 文件存储在不同的 Manifest 文件中,Manifest 文件存储在一个 Manifest List 文件中,Manifest 文件可以在不同的 Manifest List 文件间共享,一个 Manifest List 文件代表一个快照。
 Manifest list 文件是元数据文件,其中存储的是 Manifest 文件的列表,每个 Manifest 文件占据一行。
 Manifest 文件是元数据文件,其中列出了组成某个快照的数据文件列表。每行都是每个数据文件的详细描述,包括数据文件的状态、文件路径、分区信息、列级别的统计信息(例如每列的最大最小值、空值数等)、文件的大小以及文件中数据的行数等信息。
 Data 文件是 Iceberg 表真实存储数据的文件,一般是在表的数据存储目录的 data 目录下。

hadoop

Apache™ Hadoop® 项目开发用于可靠、可扩展、分布式计算的开源软件。
Apache Hadoop 软件库是一个框架,允许使用简单的编程模型跨计算机集群分布式处理大型数据集。 它旨在从单个服务器扩展到数千台机器,每台机器都提供本地计算和存储。 该库本身不是依靠硬件来提供高可用性,而是旨在检测和处理应用程序层的故障,以便在计算机集群之上提供高可用性服务,而每台计算机都可能容易出现故障。
Hadoop 分布式文件系统 (HDFS) 是一种分布式文件系统,设计用于在商用硬件上运行。 它与现有的分布式文件系统有许多相似之处。 然而,与其他分布式文件系统的区别是显着的。 HDFS 具有高度容错性,旨在部署在低成本硬件上。 HDFS 提供对应用程序数据的高吞吐量访问,适合具有大型数据集的应用程序。 HDFS 放宽了一些 POSIX 要求,以支持对文件系统数据的流式访问。 HDFS 最初是作为 Apache Nutch Web 搜索引擎项目的基础设施而构建的。 HDFS 是 Apache Hadoop Core 项目的一部分。
YARN 的基本思想是将资源管理和作业调度/监控的功能拆分为单独的守护进程。 这个想法是拥有一个全局的 ResourceManager (RM) 和每个应用程序的 ApplicationMaster (AM)。 应用程序可以是单个作业,也可以是作业的 DAG。ResourceManager 和 NodeManager 构成了数据计算框架。 ResourceManager是系统中所有应用程序之间资源仲裁的最终权威。 NodeManager 是每台机器的框架代理,负责容器、监视其资源使用情况(CPU、内存、磁盘、网络)并将其报告给 ResourceManager/Scheduler。每个应用程序的 ApplicationMaster 实际上是一个特定于框架的库,其任务是与 ResourceManager 协商资源并与 NodeManager 一起执行和监视任务。

spark

Apache Spark 是用于大规模数据处理的统一分析引擎。 它提供 Java、Scala、Python 和 R 中的高级 API,以及支持通用执行图的优化引擎。 它还支持一组丰富的高级工具,包括用于 SQL 和结构化数据处理的 Spark SQL、用于 pandas 工作负载的 pandas API on Spark、用于机器学习的 MLlib、用于图形处理的 GraphX 以及用于增量计算和流处理的 Structured Streaming
在这里插入图片描述
以上Spark架构说明如下:

  1. 每个应用程序都有自己的执行程序进程,这些进程在整个应用程序的持续时间内保持运行并在多个线程中运行任务。 这样做的好处是可以在调度端(每个驱动程序调度自己的任务)和执行器端(来自不同应用程序的任务在不同的 JVM 中运行)将应用程序彼此隔离。 但是,这也意味着如果不将数据写入外部存储系统,则无法在不同的 Spark 应用程序(SparkContext 实例)之间共享数据。
  2. Spark 对于底层集群管理器是不可知的。 只要它能够获取执行程序进程,并且这些进程相互通信,即使在也支持其他应用程序(例如 Mesos/YARN/Kubernetes)的集群管理器上运行它也相对容易。
  3. 驱动程序必须在其整个生命周期中侦听并接受来自其执行程序的传入连接(例如spark.driver.port)。 因此,驱动程序必须可从工作节点进行网络寻址。由于Driver在集群上调度任务,因此它应该靠近工作节点运行,最好在同一局域网上。 如果您想远程向集群发送请求,最好向驱动程序打开 RPC 并让它从附近提交操作,而不是在远离工作节点的地方运行驱动程序。
  4. 容器自动伸缩
    TBDS云原生集群支持Spark运行在容器之上,通过使用Spark的Dynamic Resource Allocation功能实现资源的弹性伸缩,以达到资源的充分利用。Spark的Dynamic Resource Allocation可以根据工作负载动态调整应用程序占用的资源。 这意味着,如果不再使用资源,您的应用程序可能会将资源返还给集群,并在以后有需求时再次请求它们。 如果多个应用程序共享 Spark 集群中的资源,则此功能特别有用。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RuoYi 自定义字典列表页面编码翻译

“字典数据”单独维护,而不是使用系统自带的字典表,应该如何使用这样的字典信息呢? 系统字典的使用,请参考: 《RuoYi列表页面字典翻译的实现》 https://blog.csdn.net/lxyoucan/article/details/136877238 需求说明…

Day42:WEB攻防-PHP应用MYSQL架构SQL注入跨库查询文件读写权限操作

目录 PHP-MYSQL-Web组成架构 PHP-MYSQL-SQL常规查询 手工注入 PHP-MYSQL-SQL跨库查询 跨库注入 PHP-MYSQL-SQL文件读写 知识点: 1、PHP-MYSQL-SQL注入-常规查询 2、PHP-MYSQL-SQL注入-跨库查询 3、PHP-MYSQL-SQL注入-文件读写 MYSQL注入:&#xff…

Java 基础学习(二十)Maven、XML与WebServer

1 Maven 1.1 什么是Maven 1.1.1 Maven概述 Maven是一种流行的构建工具,用于管理Java项目的构建,依赖管理和项目信息管理。它使用XML文件来定义项目结构和构建步骤,并使用插件来执行各种构建任务。Maven可以自动下载项目依赖项并管理它们的…

VMware 虚拟机安装 CentOS Stream 9【图文详细教程】

系统需要开启虚拟化 VMware Pro 17 安装:https://www.yuque.com/u27599042/ccv8wh/ztmn0vkg3iimqyed CentOS Stream 9 镜像下载 https://www.centos.org/centos-stream/根据你电脑的操作系统类型,选择点击下载 创建虚拟机 在 VMware 中,…

专为智能设备安全打造 | 基于ACM32 MCU的智能断路器方案

随着我国电网建设的快速发展,数字化变电站成为建设和研究的热点,数字化变电站的核心在于一次设备的智能化与二次设备的网络化,对于断路器这种极其重要的电力一次设备而言,其智能化的实现有十分重要的意义,断路器智能化…

Jupyter服务器端为R语言安装readr包

1.登录debian服务器 方式1.Windows10中可利用putty登录linux服务器 方式2.自从搭建了Jupyter服务器后,还可以从juypyter的终端来登录linux服务器 2.进入R语言命令行 3.安装readr包 >install.packages(‘readr’) …

2.6、媒体查询(mediaquery)

概述 媒体查询作为响应式设计的核心,在移动设备上应用十分广泛。媒体查询可根据不同设备类型或同设备不同状态修改应用的样式。媒体查询常用于下面两种场景: 针对设备和应用的属性信息(比如显示区域、深浅色、分辨率),设计出相匹配的布局。当屏幕发生动态改变时(比如分屏…

Kubernetes自动化配置部署

在新建工程中,使用k8s的devops服务,自动化部署项目 1、在搭建好k8s的集群中,确认已开启devops服务; 2、新建Maven项目之后,创建dockerfile、deploy和Jenkins文件 例如: Dockerfile FROM bairong.k8s.m…

virtualBox虚拟机的Ubuntu系统下vscode 的标题栏无法显示,打开文件对话框显示不正常。

遇到问题:vscode 的标题栏无法显示,打开文件对话框显示不正常。打开文件对话框显示闪烁无法打开文件。如下图所示 解决办法: (1)Ctrl Shift P 输入 Preferences: Configure Runtime Arguments 搜“"disable-h…

Linux:权限的概念与理解

目录 1. Linux权限的概念 2. Linux权限管理 01.文件访问者的分类 02.文件类型和访问权限 03.文件权限值的表示方法 04. 文件访问权限的相关设置方法 3. 使用 sudo分配权限 4. 目录的权限 ---------- 权限 用户角色(具体的人) 文件权限属性 ---------- 1. Linux权限的…

QT tableWidget横向纵向设置

横向控件 要设置QTabWidget选项卡的字体方向,可以使用QTabWidget的setTabPosition()方法。通过传递Qt枚举值QTabWidget.east或QTabWidget.west作为参数,可以设置选项卡的字体方向为从左到右或从右到左。 myTabWidget QTabWidget() myTabWidget.setTabP…

么样才能用最便捷的方式为Mac提速呢?

Mac是现代人日常工作时必不可少的工具,尤其是在居家办公已经屡见不鲜的当下。视频会议、文档传送、视频剪辑等等。它在工作中扮演的角色越来越重要,所以也导致了它的流畅程度可以在很大程度上影响人们一整天的工作效率和心情。 但是影响Mac的运行和响应速…

Gitlab的流水线任务【实现每小时自动测试 dev分支的更新】

背景 在现代软件开发实践中,持续集成(Continuous Integration, CI)是确保代码质量和快速响应软件缺陷的关键策略。GitLab 提供了强大的 CI/CD 功能,允许开发者自动化测试和部署流程。本文将介绍如何设置 GitLab 流水线计划任务&a…

如何使用Android平板公网访问本地Linux code-server

文章目录 1.ubuntu本地安装code-server2. 安装cpolar内网穿透3. 创建隧道映射本地端口4. 安卓平板测试访问5.固定域名公网地址6.结语 1.ubuntu本地安装code-server 准备一台虚拟机,Ubuntu或者centos都可以,这里以VMwhere ubuntu系统为例 下载code server服务,浏览器…

网络: 数据链路层

数据链路层: 数据帧的封装与传输 以太网数据帧 源地址和目的地址是指网卡的硬件地址(也叫MAC地址), 长度是48位,是在网卡出厂时固化的;帧协议类型字段有三种值,分别对应IP、ARP、RARP;帧末尾是CRC校验码 以太网 "以太网" 不是一种具体的网络, 而是一种技术标准; 既…

[项目前置]如何用webbench进行压力测试

测试软件 采用webbench进行服务器性能测试。 Webbench是知名的网站压力测试工具,它是由Lionbridge公司开发。 webbench的标准测试可以向我们展示服务器的两项内容: 每秒钟相应请求数 和 每秒钟传输数据量 webbench测试原理是,创建指定数…

Prompt进阶系列5:LangGPT(提示链Prompt Chain)--提升模型鲁棒性

Prompt进阶系列5:LangGPT(提示链Prompt Chain)–提升模型鲁棒性 随着对大模型的应用实践的深入,许多大模型的使用者, Prompt 创作者对大模型的应用越来越得心应手。和 Prompt 有关的各种学习资料,各种优质内容也不断涌现。关于 Prompt 的实践…

微服务day05(上) - Elasticsearch

1.1.了解ES 1.1.1.elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容 例如: 在GitHub搜索代码 在电商网站搜索商品 在百度搜索答案 在打车软件搜索附近的…

哈希、散列表和Rabin-Karp算法

字典 现有一个抽象数据类型(ADT)如下: 包括了一组元素,每个元素都有一个键key。假设没有元素拥有相同的key,如果有相同的key,则覆盖掉原有key的元素。 -insert(item) -delete(item) -search(key):根据给定的key,返…

Python:熟悉简单的skfuzzy构建接近生活事件的模糊控制器”(附带详细注释说明)+ 测试结果

参考资料:https: // blog.csdn.net / shelgi / article / details / 126908418 ————通过下面这个例子,终于能理解一点模糊理论的应用了,感谢原作。 熟悉简单的skfuzzy构建接近生活事件的模糊控制器 假设下面这样的场景, 我们希望构建一套…