网站的三大因素/百度seo关键词优化方案

网站的三大因素,百度seo关键词优化方案,中山网站建设外包,wordpress yusiHadoop 基础原理 基本介绍Hadoop 的必要性Hadoop 核心组件Hadoop 生态系统中的附加组件 HDFSHDFS 集群架构HDFS 读写流程HDFS 写流程HDFS 读流程 NameNode 持久化机制 MapReduce底层原理示例 Hadoop 是一个由 Apache 基金会开发的分布式系统基础架构,主要解决海量数…

Hadoop 基础原理

  • 基本介绍
    • Hadoop 的必要性
    • Hadoop 核心组件
    • Hadoop 生态系统中的附加组件
  • HDFS
    • HDFS 集群架构
    • HDFS 读写流程
      • HDFS 写流程
      • HDFS 读流程
    • NameNode 持久化机制
  • MapReduce
    • 底层原理
    • 示例

Hadoop 是一个由 Apache 基金会开发的分布式系统基础架构,主要解决海量数据的存储和计算问题,广义上 Hadoop 指的是 Hadoop 生态圈,包含 HDFS、Hive、MapReduce 多种组件

基本介绍

Hadoop 的必要性

Hadoop 主要解决了海量数据的存储问题

  • 高可用性:底层会维护多个数据副本,所以即使 Hadoop 某个计算元素或存储出现故障,也不会导致数据的丢失。
  • 高扩展性: 在集群间分配任务数据,可方便的扩展数以千计的节点。
  • 高效性: 在 MapReduce 的思想下,Hadoop 是并行工作的,以加快任务处理速度。
  • 高容错性: 能够自动将失败的任务重新分配。

一个 block 块在 NameNode 中占150byte(固定),过多小文件会占用 NameNode 内存
小文件的寻址时间大于读取时间
不支持并发写和随机写
一个文件只能有一个写,不允许多线程同时写

Hadoop 核心组件

Hadoop 核心组件包含以下两种

  • HDFS:高可靠、高吞吐的分布式文件系统
  • MapReduce:分布式离线并行计算框架

Hadoop 生态系统中的附加组件

我们后端开发接触的比较多的是Hadoop 生态系统中的附加组件,Sqoop 以及 Hive,分别用来同步数据和查询数据

  • Sqoop:Hadoop(Hive)与传统数据库(Mysql)之间传输数据的工具,支持批量导入和导出数据
    Flume 高可用、高可靠分布式的海量日志采集、聚合和传输系统
  • Spark:是一个通用的分布式计算框架,支持内存计算,可以显著提高数据处理速度。它支持多种计算模式,包括批处理、流处理、机器学习等
  • HBase:HBase 是一个分布式的、面向列的 NoSQL 数据库,建立在 HDFS 之上。它提供了实时读写访问,适合处理大规模数据集
  • Hive:是基于 Hadoop 的数据仓库工具,它提供了一种 SQL-like 的查询语言(HiveQL),使用户可以方便地进行数据查询和分析。它可以将 HiveQL 转换为 MapReduce 任务执行

HDFS

HDFS 是 Hadoop 的分布式文件系统,解决了海量数据的存储问题

HDFS 集群架构

HDFS 使用 Master/Slave 架构,架构逻辑比较类似 Kafka、ES 等 Apache 的其他项目

一般一个集群有一个 NameNode 和一定数目 DataNode 组成,Namenode 是 HDFS 集群主节点,Datanode 是 HDFS 集群从节点,两种角色各司其职,共同协调完成分布式的文件存储服务

HDFS 中文件在物理上是分块存储,通过 dfs.blocksize 配置,2.x之后的版本默认128M

HDFS 中文件在逻辑上是连续的,提供一个文件目录树

HDFS 读写流程

HDFS 写流程

1,客户端向 NameNode 发送写数据请求(包含待上传文件名和将要上传的路径)
2,NameNode 检查路径是否存在,文件是否重名等(假设满足上传条件)
3,NameNode 向客户端响应数据,可以上传文件
4,客户端根据文件大小进行切分成一个个 block 块,并向 NameNode 发送提交即将上传 block1 的请求
5,NameNode 查询 DataNode 信息,规划 block1 的存储位置
6,NameNode 向客户端返回 block1 可以存储的数据节点 ip 列表
7,客户端直接请求数据节点1上传 block1,数据节点1存储 block1 完毕并根据 ip 列表将 block1 发送给数据节点8,数据节点2存储完毕 block1 并根据 ip 列表将 block1 发送给数据节点3,数据节点3存储完成响应数据给数据节点2,数据节点2将响应数据给数据节点1,数据节点1将存储结果返回给 NameNode 和客户端
9,重复第四步上传下一个block
在这里插入图片描述
我知道你们想问什么,为什么 HDFS 的写流程必须一个个的上传块,不能并发上传吗?这是设计者对于 HDFS 写少读多场景的这种考量。该场景如此设计的好处:

1,每个数据块的写入是原子操作,即要么成功写入,要么完全不写入。这确保了数据的一致性。如果并发写入需要考量并发安全性问题
2,集群默认全同步,数据高可靠

HDFS 读流程

1,客户端向 NameNode 请求下载文件
2,NameNode 返回目标文件的元数据
3,客户端根据元数据请求 DataNode 读取数据 block
4,DataNode 向客户端传输数据
5,重复第三步,直到所有的块传输完成
6,客户端根据元数据组装 block 块完成读取数据
在这里插入图片描述

NameNode 持久化机制

NameNode 元数据的存储位置是在内存中,但是内存一旦断电元数据将丢失,因此必须将内存中的元数据存储在磁盘中用于备份,这里引入额外一个概念叫 Fsimagem

Fsimagem 为内存元数据的备份。若内存的元数据发生改变,如果同时更新 Fsimage 会降低效率,如果不更新会发生数据不一致问题

针对上述问题,最终逻辑是不更新 Fsimage 文件,为解决数据不一致问题,引入 edits 文件,该文件只记录操作并且采用追加写的形式,即每当内存的元数据发生改变的同时记录本次操作记录追加到磁盘中的 edits,这样内存元数据等于磁盘的 Fsimage + edits

当 NameNode 启动时先滚动 edits 并生成一个空的 edits.inprogress,会将 Fsimage 和 edits 文件加载到内存中进行合并,之后的操作(增删)将追加到 edits.inprogress 中

其行为类似 redis 的 RDB 和 AOF 机制

MapReduce

MapReduce 是一种编程模型和分布式计算框架,是开发基于 Hadoop 的数据分析应用的核心框架。MapReduce 的主要用途包括:

  • 大数据处理:处理和分析 PB 级别的数据,如日志分析、数据挖掘、统计分析等
  • 数据转换:将原始数据转换为所需的格式,如 ETL(Extract, Transform, Load)任务
  • 数据索引:构建大规模数据的索引,如搜索引擎的网页索引
  • 机器学习:处理大规模的训练数据,进行模型训练和预测

总之,只要是统计或者计算 Hadoop 中的数据,都会用到 MapReduce。Hive(基于 Hadoop 的数据仓库工具,它提供了一种 SQL-like 的查询语言,使得用户可以方便地进行数据查询和分析)底层对接 MapReduce 来执行查询和数据处理任务。Hive 的查询最终会被转换成一个或多个 MapReduce 作业来执行

底层原理

MapReduce 实现分布式计算分成2个阶段,Map(映射)和 Reduce(归约)

第一个阶段 MapTask 并发实例,完全并行运行,互不干扰。首先会将输入数据分割成多个小块,每个小块称为一个切片(split)。每个切片的大小通常与 HDFS 的块大小(默认 128MB)一致。这么做使数据能够并行处理,提高处理速度。

随后我们对输入数据进行处理,生成中间键值对(key-value pairs)。每个 Map 任务从输入切片中读取数据,对每条记录调用用户定义的 Map 函数,生成中间键值对

第二个阶段 ReduceTask 完全并行运行,数据依赖上一个阶段所有 MapTask 并发实例输出。将 Map 任务生成的中间键值对进行分区、排序和合并

  • 分区(Partitioning):根据键的哈希值将中间键值对分配到不同的 Reduce 任务中
  • 排序(Sorting):对每个分区内的键值对按键进行排序
  • 合并(Merging):将来自不同 Map 任务的相同键的键值对合并在一起

MapReduce 编程模型只能包含一个 Map 阶段一个 Reduce 阶段,但可以实现多个 MapReduce 串行运行

示例

上面的描述可能有些抽象,让大家有很多问题,比如为啥 ReduceTask 也可以并行执行?如果 MapTask 的产物是键值对的话,那么存放在 HDFS 的关系型表会怎么转换成键值对然后暴露给我们?接下来举个例子让大家更加深入的了解问题:

假设我们有一个关系型表 users,其结构如下:

user_idnameagecity
1Alice25New York
2Bob30London
3Carol22New York
4Dave28Tokyo

假设我们要计算每个城市的用户数量:

SELECT city, COUNT(*) AS user_count
FROM users
GROUP BY city;

在这个例子中,Map 阶段会将每行数据转换为键值对,其中键是城市名称,值是用户 ID。例如:

  • 输入行:1, Alice, 25, New York。输出键值对:(New York, 1)
  • 输入行:2, Bob, 30, London。输出键值对:(London, 2)
  • 输入行:3, Carol, 22, Paris。输出键值对:(New York, 3)
  • 输入行:4, Dave, 28, Tokyo。输出键值对:(Tokyo, 4)

Map 阶段结束我们就得到很多键值对,在 Reduce 阶段,Hive 会将 Map 任务生成的中间结果按键进行分组,相同城市的键值对会被分到一个 ReduceTask 中:

  • (New York, [1,3]) -> (New York, 2)
  • (London, [2]) -> (London, 1)
  • (Tokyo, [4]) -> (Tokyo, 1)

ReduceTask 输出最后的处理结果。所以一个 sql 在 Hive 中的执行流程和普通 db 中是完全不一样的。通过上面的 case 我们可以看出,先 map 后 reduce 事实上就是想利用并发的能力处理大量数据,Hadoop 的创作者们将我们所有的查询操作都抽象成了这完全可以并行执行的两步

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

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

相关文章

Linux编辑器

1.三种模式 2.图例 3.wq 4.光标的使用

TMDS视频编解码算法

因为使用的是DDR进行传输,即双倍频率采样,故时钟只用是并行数据数据的5倍,而不是10倍。 TMDS算法流程: 视频编码TMDS算法流程实现: timescale 1 ps / 1ps //DVI编码通常用于视频传输,将并行数据转换为适合…

计算机网络————(一)HTTP讲解

基础内容分类 从TCP/IP协议栈为依托,由上至下、从应用层到基础设施介绍协议。 1.应用层: HTTP/1.1 Websocket HTTP/2.0 2.应用层的安全基础设施 LTS/SSL 3.传输层 TCP 4.网络层及数据链路层 IP层和以太网 HTTP协议 网络页面形成基本 流程&#xff1a…

【网络编程】广播和组播

数据包发送方式只有一个接受方,称为单播。如果同时发给局域网中的所有主机,称为广播。只有用户数据报(使用UDP协议)套接字才能广播: 广播地址以192.168.1.0 (255.255.255.0) 网段为例,最大的主机地址192.168.1.255代表该网段的广…

小程序如何实现跨页面通信

前言 最近有很多同学问,小程序里面如何进行跨页面通信。看了下之前的老代码,基本都是基于onShow或者localStorage。虽然可以实现,但是并不怎么优雅。 今天就来聊一聊,小程序的跨页面通信的几种实现方案。或许会有你想要的方案&a…

【工具】win-画图 保留图片信息并仅改变图片比例的工具

Windows 系统自带的“画图”工具 Windows 系统自带的“画图”(Paint)工具可以进行简单的图片编辑,包括调整图片大小和比例。 使用方法: 打开“画图”工具(可以通过在开始菜单中搜索“画图”或“Paint”)。…

实验3 知识表示与推理

实验3 知识表示与推理 一、实验目的 (1)掌握知识和知识表示的基本概念,理解其在AI中的深刻含义与意义; (2)熟悉AI中常用的知识表示方法的优缺点及其应用场景; (3)掌握产…

在 M1 Mac 上解锁 TensorFlow GPU 加速:从环境搭建到实战验证

在 M1 Mac 上解锁 TensorFlow GPU 加速:从环境搭建到实战验证 前言:苹果芯片的深度学习新纪元 随着 Apple Silicon 芯片的普及,M1/M2/M3 系列 Mac 已成为移动端深度学习开发的新选择。本文将以 TensorFlow 2.x 为例,手把手教你如…

Python 数据分析概述 ①

一文读懂Python数据分析:从基础到实践全攻略 在当今数字化浪潮中,数据分析已然成为解锁海量数据价值的关键钥匙,而Python凭借其独特优势,在数据分析领域大放异彩。今天,咱们就结合教学PPT内容,深入探索Pyt…

【Gin-Web】Bluebell社区项目梳理6:限流策略-漏桶与令牌桶

本文目录 一、限流二、漏桶三、令牌桶算法四、Gin框架中实现令牌桶限流 一、限流 限流又称为流量控制,也就是流控,通常是指限制到达系统的并发请求数。 限流虽然会影响部分用户的使用体验,但是能一定程度上保证系统的稳定性,不至…

Linux高并发服务器开发 第十九天(线程 进程)

目录 1.进程组和会话 2.守护进程 2.1守护进程daemon概念 2.2创建守护进程 3.线程 3.1线程的概念 3.2线程内核三级映射 3.3线程共享 3.4线程优缺点 4.线程控制原语 4.1获取线程id 4.2创建线程 4.3循环创建N个子线 4.4子线程传参地址,错误示例 4.5线程…

软件工程和系统分析与设计

软件工程 1、软件危机 2、软件过程模型 2.1 瀑布模型 2.2原型模型 2.3螺旋模型 2.4敏捷模型 2.5软件统一过程 3、软件能力成熟度模型 CMM 4、软件能力成熟度模型集成 CMMI 系统分析与设计 1、结构化方法SASD 1.1结构化分析 DFD 1.2结构化设计 SD-是一种面向数据流的设计…

Qt/C++面试【速通笔记一】

Qt 信号与槽机制 什么是信号(Signal)和槽(Slot)? 在Qt中,信号(Signal)和槽(Slot)是实现对象之间通信的一种机制。信号是对象在某些事件发生时发出的通知&…

LangChain大模型应用开发:构建Agent智能体

介绍 大家好,博主又来给大家分享知识了。今天要给大家分享的内容是使用LangChain进行大模型应用开发中的构建Agent智能体。 在LangChain中,Agent智能体是一种能够根据输入的任务或问题,动态地决定使用哪些工具(如搜索引擎、数据库查询等)来…

微服务架构概述及创建父子项目

目录 一,什么是单体架构 二,什么是集群和分布式架构 三,什么是微服务架构 四,解决微服务难题的方案Spring-cloud Spring Cloud Alibaba是阿里巴实现的方案,基于SpringCloud的规范。如果说Spring Cloud Netflix 是…

C/C++跳动的爱心

系列文章 序号直达链接1C/C李峋同款跳动的爱心2C/C跳动的爱心3C/C经典爱心4C/C满屏飘字5C/C大雪纷飞6C/C炫酷烟花7C/C黑客帝国同款字母雨8C/C樱花树9C/C奥特曼10C/C精美圣诞树11C/C俄罗斯方块小游戏12C/C贪吃蛇小游戏13C/C孤单又灿烂的神14C/C闪烁的爱心15C/C哆啦A梦16C/C简单…

量子计算的威胁,以及企业可以采取的措施

当谷歌、IBM、Honeywell和微软等科技巨头纷纷投身量子计算领域时,一场技术军备竞赛已然拉开帷幕。 量子计算虽能为全球数字经济带来巨大价值,但也有可能对相互关联的系统、设备和数据造成损害。这一潜在影响在全球网络安全领域引起了强烈关注。也正因如…

Unity制作游戏——前期准备:Unity2023和VS2022下载和安装配置——附安装包

1.Unity2023的下载和安装配置 (1)Unity官网下载地址(国际如果进不去,进国内的官网,下面以国内官网流程为例子) unity中国官网:Unity中国官网 - 实时内容开发平台 | 3D、2D、VR & AR可视化 …

Android 串口通信

引言 在iot项目中,Android 端总会有和硬件通信。 通信这里:串口通信,蓝牙通信或者局域网通信。 这里讲一下串口通信。 什么是串口? “串口”(Serial Port)通常是指一种用于与外部设备进行串行通信的接口。…

从人机环境系统智能角度看传统IP的全球化二次创作法则

从人机环境系统智能的视角看,传统IP的全球化二次创作法则需结合技术、文化、伦理与环境的复杂协同。这一过程不仅是内容的本土化改编,更是人、机器与环境在动态交互中实现价值共创的体现。 一、人机环境系统智能的底层逻辑与IP二次创作的融合 1、感知层&…