当前位置: 首页 > news >正文

Datawhale组队学习:大数据 D2——分布式文件系统(HDFS)

妙趣横生大数据 Day2

    • 三、Hadoop 分布式文件系统(HDFS)
      • 1. 分布式文件系统
      • 2. HDFS 简介
      • 3. HDFS 体系结构
      • 4. HDFS存储原理
        • 数据冗余存储
        • 数据存储策略
        • 数据错误与恢复
      • 5. HDFS数据读写过程
        • 读写过程
        • HDFS故障类型和其检测方法
      • HDFS编程实验
        • 1. 本地和集群文件间操作
        • 2. 基本文件操作
        • 3. Hadoop 系统操作

Datawhale在这里插入图片描述
大数据技术相关内容的导论课程:妙趣横生大数据 Juicy Big Data


三、Hadoop 分布式文件系统(HDFS)

1. 分布式文件系统

分布式文件系统:管理网络中跨多台计算机存储的文件系统;解决海量数据的高效存储。

文件采取“块”的方式存储,块是数据读取的基本单元。HDFS默认一个块大小为64MB(普通文件系统磁盘块为512字节),设计比较大的块的目的是为了最小化寻址开销;同时也要避免块过大影响MapReduce并行速度。

设计:“客户机/服务器”(Client/Server)

img

物理结构:

  • 主节点(Master Node),名称节点(NameNode)
    • 文件和目录的创建、删除和重命名
    • 管理数据节点和文件快的映射关系
  • 从节点(Worker Node),数据节点(DataNode)
    • 数据的存储和读取
img
  1. 分布式文件系统采用多副本存储,以保证数据完整性
  2. 分布式文件系统为大规模数据存储设计(TB级文件)

2. HDFS 简介

HDFS(Hadoop Distribute File System)

  • 是大数据领域中以分布式方式存储超大数据量文件的存储系统
  • HDFS是Hadoop和其他组件的数据存储层

优点:

  • 兼容廉价的硬件设备:实现在硬件故障的情况下也能保障数据的完整性
  • 流数据读写:不支持随机读写的操作
  • 大数据集:数据量一般在GB、TB以上的级别
  • 简单的文件模型:一次写入、多次读取
  • 强大的跨平台兼容性:采用Java语言实现

局限性:

  • 不适合低延迟数据访问:流式数据读取,较高延迟
  • 无法高效存储大量小文件:影响元数据减少效率、增加Mpa任务线程管理开销、数据节点间跳跃频繁影响性能
  • 不支持多用户写入及任意修改文件:一个文件只有一个写入者,只允许对文件追加操作

3. HDFS 体系结构

主从(Master/Slave)结构模型

一个HDFS集群包括:

  • 一个名称节点(NameNode)
  • 若干个数据节点(DataNode)
    • 周期性发送“心跳”信息,报告状态
img

【说明】用户使用 HDFS,

客户端存储时:

  1. 一个文件分为若干个数据块存储
  2. 每个数据块分布存储到若干个 DataNode 上

客户端读取时:

  1. 根据文件名从 NameNode 获取 数据块数据块位置(DataNode)
  2. 访问 DataNode 获取数据

【优点】提高了数据访问速度,读取一个文件时从不同 DataNode 上并发访问

4. HDFS存储原理

数据冗余存储

多副本方式,一个数据块的多个副本被分布到不同的数据节点上

  • 加快数据传输速度
  • 容易检出数据错误
  • 保证数据的可靠性
img

数据存储策略

  1. 数据存储

    • HDFS采用了以 **机架(Rack)**为基础的数据存放策略,一个HDFS集群通常包含多个机架

      • 不同机架之间的数据通信需要经过交换机或路由器
      • 同一机架的不同机器之间数据通信不需要交换机或路由器(通信带宽比不同机架间通信带宽大)
    • HDFS 默认每个数据节点都是在不同机架上

      • 缺点:写入数据的时候不能充分利用同一机架内部机器之间的带宽

      • 优点:1. 很高的数据可靠性

        ​ 2. 多机架并行读取数据,提高数据读取速度

        ​ 3. 更容易实现系统内部负载均衡和错误纠正

    • HDFS默认的冗余复制因子是 3

      • 每一个文件会被同时保存到 3 个地方
        • 两份副本放在同一个机架的不同机器上面
        • 第三个副本放在不同机架的机器上面
  2. 数据读取

    • HDFS提供了一个确定DataNode所属机架 ID 的 API,读取时就近读取
  3. 数据复制

    • 流水线复制(第一个DataNode写入数据后,会根据列表中DataNode将数据和列表传给第二个DataNode,以此类推)

数据错误与恢复

  1. NameNode 出错

    • NameNode 元数据信息同步存储到其他文件系统
    • 第二名称节点
  2. DataNode 出错

    • NameNode 没收到 DataNode 的‘心跳’信息,便定义为‘宕机’,数据标记为不可读,取消 I/O 请求
    • 名称节点检查发现某个数据的副本数量小于冗余因子时,启动数据冗余复制生成新的副本
  3. 数据出错

    • 网络传输磁盘错误
    • md5sha1校验、信息文件校验

5. HDFS数据读写过程

读写过程

翻译经典 HDFS 原理讲解漫画 之一----系统构成和写数据过程_笑寒x的博客-CSDN博客

img img

HDFS故障类型和其检测方法

  • 读写故障的处理
    • 读:从其他备份的节点读取(NameNode会返回数据块存在的所有DataNode)
    • 写:没有收到DataNode接受数据块的应答信号,调整通道跳过这个节点

翻译经典 HDFS 原理讲解漫画 之二----读数据和容错_笑寒x的博客-CSDN博客

  • DataNode故障处理

    • NameNode 表

      • 数据块列表:数据块N —— 存储在 DN1, DN2, DN3
      • DataNode列表:DATANODE 1 —— 存储数据块1,…,数据块N
    • 持续更新这两个表

    • 数据未充分备份会启动DataNode备份(前提是HDFS至少存在一个备份)

  • 副本布局策略

    • 第一个:就近
    • 后续:不同机架(每个机架最多存储两份副本)

翻译经典 HDFS 原理讲解漫画 之三—容错和副本布局策略_笑寒x的博客-CSDN博客

HDFS编程实验

1. 本地和集群文件间操作

# 拷贝目录到集群
hadoop fs -put <local dir> <hdfs dir>
# 拷贝文件
hadoop fs -put <local file> <hdfs dir># 拷贝到本地
hadoop fs -get < hdfs file or dir > < local file or dir># 拷贝并移除
hadoop fs -moveFromLocal <local src> <hdfs dst>

在这里插入图片描述

请添加图片描述

2. 基本文件操作

# 查看
hadoop fs -ls /    # -R: 包含子目录下文件# 删除
hadoop fs -rm -r <hdfs dir> ...
hadoop fs -rm <hdfs file> ...# 创建
hadoop fs -mkdir <hdfs path># 复制
hadoop fs -cp <hdfs file or dir>... <hdfs dir># 移动
hadoop fs -mv <hdfs file or dir>... <hdfs dir>
# 统计路径下的目录个数,文件个数,文件总计大小
hadoop fs -count <hdfs path>#显示文件夹和文件的大小
hadoop fs -du <hdsf path># 查看文件
hadoop fs -cat /demo.txt
hadoop fs -tail -f /demo.txt# 更改权限
hadoop fs -chown user:group /datawhale
hadoop fs -chmod 777 /datawhale

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ObVAZO1S-1676724750207)(HDFS/image-20230218171901366.png)]

# 本地文件内容追加到hdfs文件系统中的文本文件
hadoop fs -appendToFile <local file> <hdfs file>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H9cJuM6m-1676724750207)(HDFS/image-20230218202538200.png)]

这里遇到一个错误:Failed to APPEND_FILE /p1 for DFSClient_NONMAPREDUCE_985284284_1 on 192.168.137.101 because lease recovery is in progress. Try again later.

解决:hdfs dfs -appendToFile error 问题解决_故事の尾音的博客-CSDN博客_hdfs appendtofile

# 修改 hdfs-stie.xml 文件
<!-- appendToFile追加 -->
<property><name>dfs.support.append</name><value>true</value>
</property><property><name>dfs.client.block.write.replace-datanode-on-failure.policy</name><value>NEVER</value>
</property>
<property><name>dfs.client.block.write.replace-datanode-on-failure.enable</name><value>true</value>
</property>

3. Hadoop 系统操作

# 改变文件在hdfs文件系统中的副本个数
hadoop fs -setrep -R 3 <hdfs path># 查看对应路径的状态信息
hdoop fs -stat [format] < hdfs path ># %b:文件大小
# %o:Block大小
# %n:文件名
# %r:副本个数
# %y:最后一次修改日期和时间# 手动启动内部的均衡过程(DataNode 数据保存不均衡)
hadoop balancer    # 或 hdfs balancer# 管理员通过 dfsadmin 管理HDFS
hdfs dfsadmin -help
hdfs dfsadmin -report
hdfs dfsadmin -safemode <enter | leave | get | wait>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WPScNjvH-1676724750207)(HDFS/image-20230218204809616.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IjuanMXa-1676724750208)(HDFS/image-20230218205017836.png)]


Datawhale在这里插入图片描述
大数据技术相关内容的导论课程:妙趣横生大数据 Juicy Big Data

相关文章:

Datawhale组队学习:大数据 D2——分布式文件系统(HDFS)

妙趣横生大数据 Day2三、Hadoop 分布式文件系统(HDFS)1. 分布式文件系统2. HDFS 简介3. HDFS 体系结构4. HDFS存储原理数据冗余存储数据存储策略数据错误与恢复5. HDFS数据读写过程读写过程HDFS故障类型和其检测方法HDFS编程实验1. 本地和集群文件间操作2. 基本文件操作3. Hado…...

CCIE重认证-300-401-拖图题全

拖图 拖图题 编程 snippet&#xff1b;192.168.5.0&#xff0c;mask 255.255.255.0&#xff1b;number是192.168.5.0&#xff1b;mask是255.255.255.0 snippets&#xff1b;edit-config对config&#xff0c;loopback对name 100&#xff0c;address对primary&#xff0c;mask…...

如何动态的创建类?type的其他用法?什么是元类,如何自定义元类?

1、python中一切都是对象&#xff0c;类也不例外&#xff0c;type是object的子类&#xff0c;是创建类的类。 如何动态的创建一个类&#xff1f; 用脚丫子创建 用脑子创建 不会 不知道什么事动态类 大家可能会有一堆的疑惑&#xff0c;是的我也是有很多疑惑那让我们一起来探个…...

XCP实战系列介绍15-XCP故障排查指导

本文框架 1.概述2. 通过调试器排查2.1 打开Det功能2.2 如何确定Det ErrorCode3. 通过XCP应答报文排查3.1 FE报文组成及故障码对应关系3.2 举个例子1.概述 前面几篇文章我们介绍了基于Davinci开发工具的XCP配置指导,配好了,代码也生成了,但是程序一定能正常跑起来吗?就算软…...

吉林大学软件需求分析与规范(Software Requirements Analysis Specification)

chapter0课程简介&#xff1a;◼ 软件工程专业核心课程之一◼ 软件工程课程体系最前端课程◼ 主要内容&#xff1a;需求的基本概念&#xff0c;需求的分类&#xff0c;需求工程的基本过程&#xff0c;需求获取的方法、步骤、技巧&#xff0c;需求分析和建模技术&#xff0c;需求…...

PyTorch - Conv2d 和 MaxPool2d

文章目录Conv2d计算Conv2d 函数解析代码示例MaxPool2d计算函数说明卷积过程动画Transposed convolution animationsTransposed convolution animations参考视频&#xff1a;土堆说 卷积计算 https://www.bilibili.com/video/BV1hE411t7RN 关于 torch.nn 和 torch.nn.function t…...

leetcode Day2(昨天实习有点bug,心态要崩了)

int carry 0;for(int i a.size() - 1, j b.size() - 1; i > 0 || j > 0 || carry; --i, --j) {int x i < 0 ? 0 : a[i] - 0;int y j < 0 ? 0 : b[j] - 0;int sum (x y carry) % 2;carry (x y carry) / 2;str.insert(0, 1, sum 0);}return str;加一&a…...

另一种思考:为什么不选JPA、MyBatis,而选择JDBCTemplate

以下内容转载自&#xff1a;https://segmentfault.com/a/1190000018472572 作者&#xff1a;scherman 因为项目需要选择数据持久化框架&#xff0c;看了一下主要几个流行的和不流行的框架&#xff0c;对于复杂业务系统&#xff0c;最终的结论是&#xff0c;JOOQ是总体上最好的…...

LeetCode 338. 比特位计数

给你一个整数 n &#xff0c;对于 0 < i < n 中的每个 i &#xff0c;计算其二进制表示中 1 的个数 &#xff0c;返回一个长度为 n 1 的数组 ans 作为答案。 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;[0,1,1] 解释&#xff1a; 0 --> 0 1 --> …...

排序评估指标——NDCG和MAP

在搜索和推荐任务中&#xff0c;系统常返回一个item列表。如何衡量这个返回的列表是否优秀呢&#xff1f; 例如&#xff0c;当我们检索【推荐排序】&#xff0c;网页返回了与推荐排序相关的链接列表。列表可能会是[A,B,C,G,D,E,F],也可能是[C,F,A,E,D]&#xff0c;现在问题来了…...

[Android Studio] Android Studio Virtual Device(AVD)虚拟机的功能试用

&#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea; Android Debug&#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea; Topic 发布安卓学习过程中遇到问题解决过程&#xff0c;希望我的解决方案可以对小伙伴们有帮助。 &#x1f680;write…...

kafka-3-kafka应用的核心要点和内外网访问

kafka实战教程(python操作kafka)&#xff0c;kafka配置文件详解 Kafka内外网访问的设置 1 kafka简介 根据官网的介绍&#xff0c;ApacheKafka是一个分布式流媒体平台&#xff0c;它主要有3种功能&#xff1a; (1)发布和订阅消息流&#xff0c;这个功能类似于消息队列&#x…...

VS2017+OpenCV4.5.5 决策树-评估是否发放贷款

决策树是一种非参数的监督学习方法&#xff0c;主要用于分类和回归。 决策树结构 决策树在逻辑上以树的形式存在&#xff0c;包含根节点、内部结点和叶节点。 根节点&#xff1a;包含数据集中的所有数据的集合内部节点&#xff1a;每个内部节点为一个判断条件&#xff0c;并且…...

Prometheus 记录规则和警报规则

前提环境&#xff1a; Docker环境 涉及参考文档&#xff1a; Prometheus 录制规则Prometheus 警报规则 语法检查规则 promtool check rules /path/to/example.rules.yml一&#xff1a;录制规则语法 groups 语法&#xff1a; groups:[ - <rule_group> ]rule_group…...

(API)接口测试的关键技术

接口测试也就是API测试&#xff0c;从名字上可以知道是面向接口的测试活动。所以在讲API测试之前&#xff0c;我们应该说清楚接口是什么&#xff0c;那么接口就是有特定输入和特定输出的一套逻辑处理单元&#xff0c;而对于接口调用方来说&#xff0c;不用知道自身的内部实现逻…...

快速排序算法原理 Quicksort —— 图解(精讲) JAVA

快速排序是 Java 中 sort 函数主要的排序方法&#xff0c;所以今天要对快速排序法这种重要算法的详细原理进行分析。 思路&#xff1a;首先快速排序之所以高效一部分原因是利用了离散数学中的传递性。 例如 1 < 2 且 2 < 3 所以可以推出 1 < 3。在快速排序的过程中巧…...

linux环境搭建私有gitlab仓库

搭建之前&#xff0c;需要安装相应的依赖包&#xff0c;并且要启动sshd服务(1).安装policycoreutils-python openssh-server openssh-clients [rootVM-0-2-centos ~]# sudo yum install -y curl policycoreutils-python openssh-server openssh-clients [rootVM-0-2-centos ~]…...

SpringSecurity授权

文章目录工具类使用自定义失败处理代码配置跨域其他权限授权hasAnyAuthority自定义权限校验方法基于配置的权限控制工具类 import javax.servlet.http.HttpServletResponse; import java.io.IOException;public class WebUtils {/*** 将字符串渲染到客户端** param response 渲…...

学习 Python 之 Pygame 开发坦克大战(一)

学习 Python 之 Pygame 开发坦克大战&#xff08;一&#xff09;Pygame什么是Pygame?初识pygame1. 使用pygame创建窗口2. 设置窗口背景颜色3. 获取窗口中的事件4. 在窗口中展示图片(1). pygame中的直角坐标系(2). 展示图片(3). 给部分区域设置颜色5. 在窗口中显示文字6. 播放音…...

2.5|iot冯|方元-嵌入式linux系统开发入门|2.13+2.18

一、 Linux 指令操作题&#xff08;共5题&#xff08;共 20 分&#xff0c;每小题 4分&#xff09;与系统工作、系统状态、工作目录、文件、目录、打包压缩与搜索等主题相关。1.文件1.1文件属性1.2文件类型属性字段的第1个字符表示文件类型&#xff0c;后9个字符中&#xff0c;…...

一起Talk Android吧(第四百九十六回:自定义View实例二:环形进度条)

文章目录 知识回顾实现思路实现方法示例代码各位看官们大家好,上一回中咱们说的例子是"如何使用Java版MQTT客户端",这一回中咱们说的例子是"自定义View实例二:环形进度条"。闲话休提,言归正转,让我们一起Talk Android吧! 知识回顾 看官们,我们又回…...

上传图片尺寸校验

使用方法 ● Image ● URL ● onload代码&#xff1a; async validImageSize(file, imgWidth, imgHeight) {const img new Image()img.src URL.createObjectURL(file)const { w, h } await new Promise((resolve, reject) > {img.onload () > {const { width: w, he…...

【Python】缺失值处理和拉格朗日插值法(含源代码实现)

目录&#xff1a;缺失值处理和拉格朗日插值法一、前言二、理论知识三、代码实现一、前言 对于含有缺失值的数据集&#xff0c;如果通过删除小部分记录达到既定的目标&#xff0c;那么删除含有缺失值的记录的方法是最有效的。然而&#xff0c;这种方法也有很多问题&#xff0c;…...

SpringCloudAlibaba-Sentinel

一、介绍官网&#xff1a;https://github.com/alibaba/Sentinel/下载jar包,启动,访问http://localhost:8080/创建module添加如下依赖<!--SpringCloud ailibaba sentinel --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring…...

【程序化天空盒】过程记录02:云扰动 边缘光 消散效果

写在前面 写在前面唉&#xff0c;最近筋疲力竭&#xff0c;课题组的东西一堆没做&#xff0c;才刚刚开始带着思考准备练习作品&#xff0c;从去年5月份开始到现在真得学了快一年了&#xff0c;转行学其他的真的好累&#xff0c;&#xff0c;不过还是加油&#xff01; 下面是做…...

链表OJ(三) 反转链表合集

目录 反转链表 反转链表 II 链表中的节点每k个一组翻转 描述 给定一个单链表的头结点pHead(该头节点是有值的&#xff0c;比如在下图&#xff0c;它的val是1)&#xff0c;长度为n&#xff0c;反转该链表后&#xff0c;返回新链表的表头。 数据范围&#xff1a; 0≤n≤10000≤…...

SQLSERVER2019安装步骤过程

第一步官网下载SQLSERVER软件包 目前官网只能下载最新版本2022版本。 通过迅雷下载网址 SQL Server 2019 Enterprise (x64) - DVD (Chinese-Simplified)企业版 ed2k://|file|cn_sql_server_2019_enterprise_x64_dvd_2bfe815a.iso|1632086016|58C258FF0F1D006DD3C1F5F17AF3E…...

Java模块化概述

3 模块化 3.1 模块化概述 Java语言随着这些年的发展已经成为了一]影响深远的编程语言&#xff0c;无数平台,系统都采用Java语言编写。但是&#xff0c;伴随着发展&#xff0c;Java也越来越庞大&#xff0c;逐渐发展成为-门“臃肿” 的语言。而且&#xff0c;无论是运行个大型的…...

Connext DDSPersistence Service持久性服务(2)

可选数据库组件及兼容性当Persistence Service配置为PERSISTENT模式时,您可以选择将主题数据存储在文件中还是存储在外部关系数据库中。 唯一支持的外部数据库是MySQL。 当PersistenceService在PERSISTENT模式下使用时,您可以将其配置为将DDS样本存储到关系数据库中,例如MyS…...

MongoDB

MongoDB 应用场景 ​ 在传统数据库&#xff08;Mysql&#xff09;&#xff0c;在数据操作的 **High performance 对数据库高并发读写的需求、Hugu Storage 对海量数据的高效率存储和访问的需求、High Scalability && High Availability 对数据库高扩展和高可用性的需…...

网站开发要多钱/企业网站推广的方法有

学了下bitset用法&#xff0c;从网上找的一些bitset用法&#xff0c;并从中调出一些常用的用法。 构造函数bitset<n> b; b有n位&#xff0c;每位都为0.参数n可以为一个表达式.如bitset<5> b0;则"b0"为"00000";bitset<n> b(unsigned long…...

家政类网站开发成本/衡阳百度推广

昨天&#xff0c;我问我的asynchronous use of libpcap was making me lose packets。今天&#xff0c;我看起来更进一步&#xff0c;似乎问题不在于异步使用libpcap&#xff0c;而在于使用pcap_next_ex。偶尔(10个用完了1000个)&#xff0c;pcap_next_ex将在pcap句柄超时过期之…...

成都网站建设开发/广东网络seo推广公司

忘记过去,超越自己 ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2022-05-20 ❤️❤️ 本篇更新记录 2022-05-20 ❤️🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请…...

问题反馈的网站怎么做/推广营销方案

&#xff0a;体会静坐的乐趣 &#xff0a;把不用的东西捐出去 &#xff0a;整理相片 &#xff0a;分类放置物品 &#xff0a;从家务中解放出来 &#xff0a;辞掉现在的工作 &#xff0a;种一棵树 &#xff0a;和孩子一起做游戏 &#xff0a;听听流行音乐 &#xff0a;多读书 &a…...

网站的用户体验/seo网站快速整站优化技术

框架之开发中的版本传递问题 一、通过get传参的方式 1.自定义接收参数类 class ParamVersion(object):def determine_version(self, request, *args, **kwargs):version request.query_params.get(version)return versionclass UsersView(APIView):versioning_class Param…...

网店设计与装修实训报告/乐陵市seo关键词优化

前言 当我们来回切换页面时候&#xff0c;视图被缓存下来&#xff0c;不用每次再去new一个新的视图&#xff0c;可以大大地提高性能。当跳出一个视图后&#xff0c;视图的元素被保存在DOM中&#xff0c;它的作用域也就不在$watch的作用域内&#xff0c;当我们访问一个已经被缓存…...