Hadoop——HDFS

什么是HDFS

HDFS(Hadoop Distributed File System)是Apache Hadoop的核心组件之一,是一个分布式文件系统,专门设计用于在大规模集群上存储和管理海量数据。它的设计目标是提供高吞吐量的数据访问和容错能力,以支持大数据处理任务。下面是HDFS的主要特性和功能:

1. 架构

  • 主从架构
    • NameNode:HDFS的主节点,负责管理文件系统的元数据,如文件和目录结构、文件块的位置等。NameNode不存储实际数据,只管理数据的元信息。
    • DataNode:HDFS的从节点,负责实际存储数据块。每个文件在HDFS中被分割成多个数据块(默认大小为128MB或256MB),并分布存储在多个DataNode上。

2. 高容错性

  • 数据复制:HDFS通过将每个数据块复制多个副本(默认3个副本)来确保数据的高可用性和容错性。如果某个DataNode故障,系统仍可以从其他副本中恢复数据。
  • 自动故障恢复:当DataNode宕机时,NameNode会监控并自动重新复制丢失的数据块,以保证数据的冗余性。

3. 高吞吐量

  • 优化读写:HDFS针对大文件的存储和访问进行了优化,适合顺序读写操作。它不适合频繁的随机读取,因为这种模式会降低性能。
  • 流式访问:HDFS允许数据流式访问,用户可以在数据写入的同时进行读取,提高数据处理的效率。

4. 可扩展性

  • 横向扩展:HDFS支持通过简单地添加新的DataNode来扩展存储容量。这种方式可以灵活应对不断增长的数据量。

5. 数据完整性

  • 校验和:HDFS对存储的数据块进行校验和检测,以确保数据在存储和传输过程中的完整性。如果发现损坏,系统会自动从其他副本中恢复数据。

6. 接口

  • API接口:HDFS提供了一组API,支持Java和其他语言的开发,方便用户对文件的读写操作。

总结

HDFS是一个为处理和存储海量数据而设计的分布式文件系统,具备高容错性、高吞吐量和可扩展性等优点。它通过将数据分割成多个块并在集群中分布存储,确保了数据的高可用性和高性能,成为大数据处理的基础设施之一。

HDFS的基础架构

1. NameNode主角色

  • 功能:作为HDFS的主节点,负责管理文件系统的元数据,包括文件和目录的命名空间、文件的属性、文件块的位置等。
  • 职责
    • 元数据管理:维护文件系统的结构,跟踪每个文件的块及其在DataNode上的位置。
    • 客户端请求处理:处理来自客户端的文件操作请求(如创建、删除、重命名文件等),并相应地更新元数据。
    • 故障监控:监控DataNode的健康状态,并在发现故障时采取措施(如重新复制丢失的块)。

2. Secondary NameNode辅助角色

  • 功能:Secondary NameNode并不是NameNode的备份,而是一个辅助角色,主要用于定期合并NameNode的元数据文件,以减小NameNode的内存占用和元数据文件的大小。
  • 职责
    • 合并元数据:定期从NameNode获取编辑日志,并将其与文件系统的镜像文件合并,从而减少NameNode的内存使用。
    • 故障恢复:虽然Secondary NameNode不能替代NameNode,但在NameNode故障时,可以通过它的快照恢复部分元数据。

DataNode 从角色

  • 功能:HDFS中的从节点,负责存储实际的数据块。
  • 职责
    • 数据存储:接收并存储来自客户端或其他DataNode的数据块。
    • 心跳信号:定期向NameNode发送心跳信号,以报告自身的健康状态和存储情况。
    • 数据块复制:根据NameNode的指令,执行数据块的复制和删除操作,以确保数据的冗余性和高可用性。

HDFS 设计原理

HDFS副本块数量的配置

在HDFS(Hadoop Distributed File System)中,副本块数量的配置是一个重要的参数,它直接影响数据的可靠性和存储效率。副本块数量决定了每个数据块在集群中保存的副本数量,从而影响到容错能力和数据读取的性能。

1. 默认副本数量

  • HDFS的默认副本块数量通常是3。这意味着每个数据块会在集群中的3个不同的Datanode上存储副本,以提高数据的可用性和容错性。

2. 配置副本块数量

副本块数量可以在HDFS的配置文件中进行设置,主要配置文件为hdfs-site.xml。可以通过以下属性来修改副本数量:

<configuration><property><name>dfs.replication</name><value>3</value> <!-- 设置为所需的副本数量 --></property>
</configuration>

3. 调整副本数量的注意事项

  • 高可用性与性能:增加副本数量可以提高数据的可靠性,但也会增加存储需求和网络流量。对于经常访问的数据,建议保持较高的副本数量,而对于不常用的数据,可以减少副本数量。

  • 集群规模:在小规模集群中,设置较高的副本数量可能会导致存储资源的浪费。反之,在大规模集群中,可以根据数据的重要性和访问频率来调整。

  • 副本的分布:HDFS会智能地在不同的Datanode上存储副本,以确保负载均衡和容错性。因此,配置副本数量时,也要考虑集群的实际节点数和分布。

4. 动态调整副本数量

HDFS允许对已经存在的文件动态调整副本数量,可以使用以下命令:

复制代码

hdfs dfs -setrep -w <replication_factor> /path/to/file
  • -w 参数表示等待操作完成。
  • <replication_factor> 是目标副本数量。

假设我们希望将一个特定文件的副本数量设置为2,可以执行以下命令:

hdfs dfs -setrep -w 2 /user/hadoop/example.txt

fsck命令查看文件系统状态及验证文件的数据副本

fsck(File System Check)命令在HDFS中用于检查文件系统的状态以及验证文件的数据副本。这个命令可以帮助管理员发现和解决文件系统中的问题,确保数据的完整性和可用性。以下是关于fsck命令的详细信息:

1. 基本用法

fsck命令的基本语法如下:

hdfs fsck /path/to/directory_or_file

2. 功能和作用

  • 检查文件系统状态fsck命令可以检查HDFS中指定目录或文件的状态,包括是否存在、是否有损坏的块、是否有丢失的副本等。

  • 验证副本状态:命令会验证文件的每个块副本,检查它们在各个Datanode上的状态。这样可以确保数据的完整性和一致性。

3. 常用选项

  • -delete:此选项用于删除文件系统中丢失或损坏的数据块,适用于清理无效数据。

  • -files:显示文件的详细信息。

  • -blocks:显示块的详细信息,包括每个块的副本状态。

  • -locations:显示每个块的副本存储位置。

4. 示例

以下是使用fsck命令的一些示例:

  • 检查整个文件系统

    hdfs fsck /
  • 检查特定文件

    hdfs fsck /user/hadoop/example.txt
  • 显示块信息

    hdfs fsck /user/hadoop/example.txt -blocks
  • 删除丢失的块

    hdfs fsck / -delete

5. 输出结果

fsck命令的输出结果通常包含以下信息:

  • 文件路径:被检查的文件或目录路径。
  • 文件状态:包括是否存在、是否损坏等。
  • 块信息:每个数据块的状态、数量和副本位置。
  • 问题总结:如丢失块、重复块等问题的汇总信息。

NameNode元数据

在Hadoop的HDFS(Hadoop Distributed File System)中,NameNode是管理文件系统元数据的核心组件。它负责跟踪所有文件和目录的信息,包括文件的名称、权限、块信息、位置等。NameNode使用editsfsimage两个重要的概念来完成文件系统的管理和维护。下面详细解释它们的作用及其配合关系:

1. fsimage文件

  • 定义fsimage是一个持久化的文件,包含了HDFS文件系统的所有元数据的快照。它记录了当前文件系统的结构,包括文件和目录的层次结构、块的信息和它们在数据节点上的位置等。

  • 作用

    • 作为文件系统状态的完整备份,可以快速加载文件系统的基本信息。
    • 当NameNode启动时,会读取这个文件来恢复文件系统的状态。

2. edits文件

  • 定义edits文件是一个事务日志,记录了对文件系统元数据所做的所有更改操作,如创建文件、删除文件、修改文件权限等。每当对HDFS进行写操作时,这些变更会被追加到edits文件中。

  • 作用

    • 记录所有的操作,可以用于恢复文件系统的状态。
    • 提供了对文件系统变更的追踪,确保数据的一致性。

3. 配合关系

  • 工作流程

    • NameNode在启动时会首先加载fsimage文件,以获取当前的文件系统状态。
    • 在运行过程中,所有对文件系统的更改(如新文件的创建、文件的删除等)都会被记录到edits文件中。
    • 为了保持数据一致性,NameNode会定期将edits文件中的更改合并到fsimage中,生成一个新的fsimage文件,这个过程称为“合并”或“快照”。
  • 故障恢复

    • 如果NameNode发生故障或重启,可以通过先加载fsimage文件来恢复文件系统的状态,然后应用edits文件中的所有操作,以恢复到最新的状态。
    • 这种方式确保了即使在故障情况下,文件系统的完整性和一致性也能得到保障。

4.元数据合并控制参数

SecondaryNameNode会通过http从NameNode拉取数据(edits和fsimage) 然后合并完成后提供给NameNode使用:

对于元数据的合并,是一个定时过程,基于:

dfs.namenode.checkpoint.period,默认3600(秒)即1小时

dfs.namenode.checkpoint.txns,默认1000000,即100W次事务

只要有一个达到条件就执行。 检查是否达到条件,默认60秒检查一次,基于: dfs.namenode.checkpoint.check.period,默认60(秒),来决定

5. 总结

NameNode通过fsimageedits文件的配合,实现了对整个HDFS文件系统的有效管理和维护。fsimage提供了文件系统的静态快照,而edits则记录了动态变化。两者的结合确保了文件系统在高可用性和可靠性方面的表现,使得HDFS能够处理大规模数据的存储与管理。

一键启停脚本

# 一键启动hdfs集群

start-dfs.sh

# 一键关闭hdfs集群

stop-dfs.sh

$HADOOP_HOME/sbin/start-dfs.sh,一键启动HDFS集群

$HADOOP_HOME/sbin/stop-dfs.sh,一键关闭HDFS集群

单独控制进程的启停

1. $HADOOP_HOME/sbin/hadoop-daemon.sh,此脚本可以单独控制所在机器的进程的启停

用法:hadoop-daemon.sh (start|status|stop) (namenode|secondarynamenode|datanode)

2. $HADOOP_HOME/bin/hdfs,此程序也可以用以单独控制所在机器的进程的启停

用法:hdfs --daemon (start|status|stop) (namenode|secondarynamenode|datanode)

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

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

相关文章

废弃物分类分割系统:入门训练营

废弃物分类分割系统源码&#xff06;数据集分享 [yolov8-seg-C2f-DCNV2-Dynamic&#xff06;yolov8-seg-C2f-DWR等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Glob…

java项目之微服务在线教育系统设计与实现(springcloud)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的闲一品交易平台。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 微服务在线教育系统设计与…

拆换LED灯珠后测量是短路的,为何

今天更换灯珠遇到一个怪事情&#xff0c;拆换一颗好的灯珠上去&#xff0c;万用表测试是短路的。 后面测试电路板上面&#xff0c;中间的散热部分是跟二极管的正极想通的。而且恰恰此时&#xff0c;LED灯珠的散热部分是跟负极想通的。 遂将线路板上面的散热部分跟二极管正极割…

串口屏控制的自动滑轨(未完工)

序言 疫情期间自己制作了一个自动滑轨&#xff0c;基于无线遥控的&#xff0c;但是整体太大了&#xff0c;非常不方便携带&#xff0c;所以重新设计了一个新的&#xff0c;以2020铝型材做导轨的滑轨&#xff0c;目前2020做滑轨已经很成熟了&#xff0c;配件也都非常便宜&#x…

【NOIP提高组】Hankson的趣味题

【NOIP提高组】Hankson的趣味题 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; Hanks 博士是BT (Bio-Tech&#xff0c;生物技术) 领域的知名专家&#xff0c;他的儿子名叫Hankson。现在&#xff0c;刚刚放学回家的Hankson 正在思考一个有趣…

Matlab车牌识别课程设计报告(附源代码)

Matlab车牌识别系统 分院&#xff08;系&#xff09; 信息科学与工程 专业 学生姓名 学号 设计题目 车牌识别系统设计 内容及要求&#xff1a; 车牌定位系统的目的在于正确获取整个图像中车牌的区域&#xff0c; 并识别出车牌号。通过设计实现车牌识别系…

【Unity基础】初识UI Toolkit - 运行时UI

Unity中的UI工具包&#xff08;UI Toolkit&#xff09;不但可以用于创建编辑器UI&#xff0c;同样可以来创建运行时UI。 关于Unity中的UI系统以及使用UI工具包创建编辑器UI可以参见&#xff1a; 1. Unity中的UI系统 2. 初识UI Toolkit - 编辑器UI 本文将通过一个简单示例来…

【重生之我要苦学C语言】深入理解指针4

深入理解指针4 字符指针变量 指针指向字符变量 char ch w; char* p &ch;指针指向字符数组 char arr[10] "abcdef"; char* p arr;printf("%s\n", arr); printf("%s\n", p);结果是一样的 也可以写成&#xff1a; char* p "abc…

Freertos学习日志(1)-基础知识

目录 1.什么是Freertos&#xff1f; 2.为什么要学习RTOS&#xff1f; 3.Freertos多任务处理的原理 1.什么是Freertos&#xff1f; RTOS&#xff0c;即&#xff08;Real Time Operating System 实时操作系统&#xff09;&#xff0c;是一种体积小巧、确定性强的计算机操作系统…

勒索软件通过易受攻击的 Cyber​​Panel 实例攻击网络托管服务器

一个威胁行为者&#xff08;或可能多个&#xff09;使用 PSAUX 和其他勒索软件攻击了大约 22,000 个易受攻击的 Cyber​​Panel 实例以及运行该实例的服务器上的加密文件。 PSAUX 赎金记录&#xff08;来源&#xff1a;LeakIX&#xff09; Cyber​​Panel 漏洞 Cyber​​Pane…

基于vue3和elementPlus的el-tree组件,实现树结构穿梭框,支持数据回显和懒加载

一、功能 功能描述 数据双向穿梭&#xff1a;支持从左侧向右侧转移数据&#xff0c;以及从右侧向左侧转移数据。懒加载支持&#xff1a;支持懒加载数据&#xff0c;适用于大数据量的情况。多种展示形式&#xff1a;右侧列表支持以树形结构或列表形式展示。全选与反选&#xf…

Linux入门-基础指令和权限

1.压缩打包 1.1压缩是什么 压缩是通过特定的算法&#xff0c;使文件减小体积&#xff0c;从而达到节省空间的目的。 1.2.为什么要压缩 a.压缩将文件大小减小&#xff0c;在本地可能不太明显&#xff0c;但是在网络传输中&#xff0c;减小了网络传输的成本。 b.将多个文件压…

WPF中如何解决DataGrid的Header没有多余的一行

将最后一行设置DataGridTemplateColumn Width"*" 使其自适应

Qt/C++地图雷达扫描/动态扇形区域/标记线实时移动/轮船货轮动态轨迹/雷达模拟/跟随地图缩放

一、前言说明 地图雷达扫描的需求场景也不少&#xff0c;很多人的做法是直接搞个覆盖层widget&#xff0c;在widget上绘制雷达&#xff0c;优缺点很明显&#xff0c;优点是性能高&#xff0c;毕竟直接在widget上绘制性能明显比js中绘制要高&#xff0c;缺点是要么动态计算经纬…

Java | Leetcode Java题解之第528题按权重随机选择

题目&#xff1a; 题解&#xff1a; class Solution {int[] pre;int total;public Solution(int[] w) {pre new int[w.length];pre[0] w[0];for (int i 1; i < w.length; i) {pre[i] pre[i - 1] w[i];}total Arrays.stream(w).sum();}public int pickIndex() {int x …

uni-app自定义弹窗

1、项目根目录components目录下创建/modal/modal.vue文件 2、modal.vue文件内容 vue2版本&#xff1a; <template><view class"modal-container"><view class"bg" tap"maskClose"></view><view class"box&quo…

Python小游戏20——超级玛丽

首先&#xff0c;你需要确保你的Python环境中安装了pygame库。如果还没有安装&#xff0c;可以使用以下命令进行安装&#xff1a; bash pip install pygame 运行效果展示 代码展示 python import pygame import sys # 初始化pygame pygame.init() # 设置屏幕尺寸 screen_width …

木马病毒相关知识

1、 木马的定义 相当于一个远控程序&#xff08;一个控制端[hack]、一个被控端[受害端]&#xff09; 在计算机系统中&#xff0c;“特洛伊木马”指系统中被植入的、人为设计的程序&#xff0c;目的包括通过网终远程控制其他用户的计算机系统&#xff0c;窃取信息资料&#xff0…

Apache POI(java操作Miscrosoft Office)

Apache POI 1.1 介绍 Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是&#xff0c;我们可以使用 POI 在 Java 程序中对Miscrosoft Office各种文件进行读写操作。 一般情况下&#xff0c;POI 都是用于操作 Excel 文件。 Apache POI 的应用场景&a…

【Docker】安装registry本地镜像库,开启Https功能

下载镜像 docker pull registry:2 需要启动https功能&#xff0c;就要生成服务端的自签名的证书和私钥&#xff0c;以及在docker客户端安装这个经过签名的证书。 第一步&#xff1a;生成公私钥信息&#xff0c;第二步&#xff0c;制作证书签名申请文件&#xff0c; 第三步&…