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

Hadoop:HDFS--分布式文件存储系统

目录

 

HDFS的基础架构

VMware虚拟机部署HDFS集群

HDFS集群启停命令

HDFS Shell操作

hadoop 命令体系:

创建文件夹 -mkdir

 查看目录内容 -ls

 上传文件到hdfs -put

查看HDFS文件内容 -cat

下载HDFS文件 -get

复制HDFS文件 -cp

追加数据到HDFS文件中 -appendToFile

HDFS文件移动 -mv

 删除HDFS文件 -rm

 HDFS存储原理

存储原理

 修改副本数量

fsck检查文件副本状态

NameNode元数据

edits和fsimage文件

元数据合并参数

 SecondaryNameNode的作用

HDFS数据的读写请求


HDFS的基础架构

Hadoop由三个部分组成,分别是HDFS、MapReduce和yarn:

HDFS由三个角色,主角色、从角色、主角色辅助角色:

NameNode

  • HDFS系统的主角色,是一个独立的进程
  • 负责管理HDFS整个文件系统
  • 负责管理DataNode

SecondaryNameNode

  • NameNode的辅助,是一个独立进程
  • 主要帮助NameNode完成元数据整理工作

DataNode

  • HDFS系统的从角色,是一个独立进程
  • 主要负责数据的存储,即存入数据和取出数据

VMware虚拟机部署HDFS集群

第二章-04-[实操]VMware虚拟机部署HDFS集群_哔哩哔哩_bilibili

HDFS集群启停命令

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

执行原理:

在执行此脚本的机器上,启动 SecondaryNameNode
读取 core-site.xml 内容(fs.defaultFS项),确认 NameNode 所在机器,启动 NameNode
读取 workers 内容,确认 DataNode 所在机器,启动全部 DataNode
$HADOOP_HOME/sbin/stop-dfs.sh ,一键关闭 HDFS 集群

执行原理:

在执行此脚本的机器上,关闭SecondaryNameNode
读取core-site.xml内容(fs.defaultFS项),确认NameNode所在机器,关闭NameNode
读取workers内容,确认DataNode所在机器,关闭全部NameNode

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

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

或者 hdfs --daemon (start|status|stop) (namenode|secondarynamenode|datanode)

HDFS Shell操作

hadoop 命令体系:

hadoop fs [generic options]  或者 hdfs dfs  [generic options]

没有任何区别

创建文件夹 -mkdir

hdfs dfs -mkdir [-p] <path> 

 查看目录内容 -ls

清测-ll等是不可行的 

hdfs dfs -ls [-h] [-R] [<path> ...] 

  -h 人性化显示文件   -R 递归查看指定目录及其子目录

 上传文件到hdfs -put

hdfs dfs -put [-f] [-p] <localsrc> ... <dst>
  • -f 覆盖目标文件(已存在下)
  • -p 保留访问和修改时间,所有权和权限
  •   localsrc 本地文件系统(客户端所在机器)
  •   dst 目标文件系统(HDFS
  • 查看HDFS文件内容 -cat

  • hdfs dfs -cat <src> ...
    

    当文件很大时,可以配合more翻页

  • hdfs dfs -cat <src> | more
    

    下载HDFS文件 -get

  • hdfs dfs -get [-f] [-p] <src> ... <localdst>
    

    下载文件到本地文件系统指定目录localdst必须是目录

            -f 覆盖目标文件(已存在下)

            -p 保留访问和修改时间,所有权和权限

  • 复制HDFS文件 -cp

  • hdfs dfs -cp [-f] <src> ... <dst>
    

    src和dst都只能是hdfs的文件路径

  • 追加数据到HDFS文件中 -appendToFile

  • HDFS的文件修改只支持追加删除

  • hdfs dfs -appendToFile <localsrc> ... <dst>
    

    将localsrc的内容追加到dst

  • HDFS文件移动 -mv

  • hdfs dfs -mv <src> ... <dst>

            移动文件到指定文件夹下,可以使用该命令移动数据,重命名文件的名称

  •  删除HDFS文件 -rm

  • hdfs dfs -rm -r [-skipTrash] URI [URI ...]

    删除指定路径的文件或文件夹      -skipTrash 跳过回收站,直接删除

  • 回收站功能默认关闭,如果要开启需要在core-site.xml内配置:

    <property>

    <name>fs.trash.interval</name>

    <value>1440</value>

    </property>

    <property>

    <name>fs.trash.checkpoint.interval</name>

    <value>120</value>

    </property>

    无需重启集群,在哪个机器配置的,在哪个机器执行命令就生效。

    回收站默认位置在:/user/用户名(hadoop)/.Trash

  • 其他的一些用法跟linux里面是基本一致的

  •  HDFS存储原理

  • 存储原理

  • 将每个文件分成n(n个服务器)份,每一份又分成m个block(Block块,HDFS最小存储单位,每个256MB(可以修改))
  • 分成block的目的是统一hdfs的存储单元,便于管理

但是这样如果丢了一个block,那么整个文件都会失效,那么 使用备份解决

将每个block备份n份,放入不同的服务器

 修改副本数量

可以在hdfs-site.xml中配置属性以设置默认文件上传到HDFS中拥有的副本数量:

<property><name>dfs.replication</name><value>3</value>
</property>

一般不需要设置,默认是3

除了配置文件外,我们还可以在上传文件的时候,临时决定被上传文件以多少个副本存储。

hadoop fs -D dfs.replication=2 -put test.txt /tmp/

如上命令,就可以在上传test.txt的时候,临时设置其副本数为2

对于已经存在HDFS的文件,修改dfs.replication属性不会生效,如果要修改已存在文件可以通过命令

hadoop fs -setrep [-R] 2 path

如上命令,指定path的内容将会被修改为2个副本存储。-R选项可选,使用-R表示对子目录也生效。

fsck检查文件副本状态

hdfs fsck path [-files [-blocks [-locations]]]

fsck可以检查指定路径是否正常

  • -files可以列出路径内的文件状态
  • -files -blocks  输出文件块报告(有几个块,多少副本
  • -files -blocks -locations 输出每一个block的详情

 

红色线表示副本数量(这里是总的数量,也就是总共3个block) 

蓝色的是三个block存放的位置,可以看到是存放在了三个不同的服务器

0:hdfs系统的状态  1:有多少个副本  2:丢失了多少blocks

NameNode元数据

edits和fsimage文件

Hadoop是通过NameNode来记录和整理文件和block的关系

NameNode基于一批edits和一个fsimage文件的配合完成整个文件系统的管理和维护

edits文件,是一个流水账文件,记录了hdfs中的每一次操作,以及本次操作影响的文件其对应的block,会有多个edits文件

将全部的edits文件,合并为最终结果,即可得到一个Fsimage文件

对于存放的位置,在hdfs-site.xml文件中,配置了

  <property><name>dfs.datanode.data.dir</name><value>/data/dn</value></property>

那么此处的edits和fsimage就存放在了data/nn文件夹下的current文件夹

元数据合并参数

对于元数据合并成fsimage,是一个定时过程,基于两个参数

dfs.namenode.checkpoint.period,默认3600(秒)即1小时
dfs.namenode.checkpoint.txns,默认1000000,即100W次事务

只需要达到一个条件就需要合并

默认60秒检查一次是否符合条件,基于

dfs.namenode.checkpoint.check.period,默认60(秒),来决定

 SecondaryNameNode的作用

SecondaryNameNode会通过httpNameNode拉取数据(editsfsimage)然后合并完成后提供给NameNode使用

HDFS数据的读写请求

数据写入流程

  1. 1. 客户端向NameNode发起请求
  2. 2. NameNode审核权限、剩余空间后,满足条件允许写入,并告知客户端写入的DataNode地址(一般来说会分配网络距离最近的datanode)
  3. 3. 客户端向指定的DataNode发送数据包
  4. 4. 被写入数据的DataNode同时完成数据副本的复制工作,将其接收的数据分发给其它DataNode
  5. 5. 写入完成客户端通知NameNodeNameNode做元数据记录工作
  6. 数据读取流程
  7. 1、客户端向NameNode申请读取某文件
  8. 2 NameNode判断客户端权限等细节后,允许读取,并返回此文件的block列表
  9. 3、客户端拿到block列表后自行寻找DataNode读取即可(会去找最近的datanode)

相关文章:

Hadoop:HDFS--分布式文件存储系统

目录 HDFS的基础架构 VMware虚拟机部署HDFS集群 HDFS集群启停命令 HDFS Shell操作 hadoop 命令体系&#xff1a; 创建文件夹 -mkdir 查看目录内容 -ls 上传文件到hdfs -put 查看HDFS文件内容 -cat 下载HDFS文件 -get 复制HDFS文件 -cp 追加数据到HDFS文件中 -appendTo…...

自定义封装异步任务组件,实现FutureTask功能

FutureTask 在 JDK1.8 后的异步编排API中的CompletableFuture&#xff0c;提供了 异步任务的成功回调、异常回调。 public class FutureTaskTest {public static void main(String[] args) throws Exception {CompletableFuture<String> future CompletableFuture.sup…...

【区块链 | IPFS】IPFS节点搭建、文件上传、节点存储空间设置、节点上传文件chunk设置

一、创建ipfs节点 通过ipfs init在本地计算机建立一个IPFS节点 本文有些命令已经执行过了&#xff0c;就没有重新初始化。部分图片拷贝自先前文档&#xff0c;具体信息应以实物为准 ipfs init initializing IPFS node at /Users/CHY/.ipfs generating 2048-bit RSA keypair.…...

【autodesk】浏览器中渲染rvt模型

使用Forge完成渲染 Forge是什么 为什么能够渲染出来rvt模型 Forge是由Autodesk开发的一套云端开发平台和工具集。在Forge平台中&#xff0c;有一个名为"Model Derivative"的服务&#xff0c;它可以将包括RVT&#xff08;Revit&#xff09;在内的多种BIM&#xff08…...

Python超入门(1)__迅速上手操作掌握Python

# 1.第一个代码&#xff1a;输出语句 # 1.第一个代码&#xff1a;输出语句 print("My dogs name is Huppy!") print(o----) print( ||| ) print("*" * 10) """ 输出结果&#xff1a; My dogs name is Huppy! o----||| ********** "&…...

后端面试话术集锦第 十四 篇:go语言面试话术

这是后端面试集锦第十四篇博文——go语言面试话术❗❗❗ 1. go数组、切片、扩容 go的数组和切片都是用来存储相同类型的数据集合。 数组是存储固定大小的集合,且为值引用。 但切片是存储无固定大小的集合,且为引用类型。 切片有三个属性,分别为指向指针的数组array,数组…...

Oralce集群管理-19C RAC 私有网络调整为BOND1

1 尝试在线添加私有网络的新接口 是否成功。 使用oifcfg命令在线添加新的网卡接口&#xff0c;在还没有配置bond1的条件下 也是可以添加成功的。 [gridorcldb1 ~]$ oifcfg getif eno3 192.168.224.0 global public ens3f0 10.2.0.0 global cluster_interconnect,asm eno…...

洛谷 Array 数论

题目&#xff1a; 对于长度为n的数组A&#xff0c;A中只包含从1到n的整数&#xff08;可重复&#xff09;。如果A单调不上升或单调不下降&#xff0c;A就可称为美丽的。 找出在长度为n时&#xff0c;有几个美丽的A。 思路&#xff1a; 这是一道数论题。 我们先找找“单调不递…...

简明SQL条件查询指南:掌握WHERE实现数据筛选

条件查询是用于从数据库中根据特定条件筛选数据行的一种方式&#xff0c;它避免了检索整个表中的数据。通常&#xff0c;使用 WHERE 子句来定义过滤条件&#xff0c;只有符合这些条件的数据行才会被返回。 SQL中的运算符有&#xff1a;、!、<、> 等&#xff0c;用于进行…...

通过HbaseClient来写Phoenix表实现

由于数据存储在Hbase上&#xff0c;并且上层使用了Phoenix来读写数据。并且由于数据的列字段不固定&#xff0c;并且可能由于Hbase表列和Phoenix的表列字段不一致&#xff0c;使用Phoenix写入的数据会导致写出报错的问题出现。所以这里直接使用HbaseClient写入到Hbase表中&…...

uniapp qiun charts H5使用echarts的eopts配置不生效

原因是&#xff1a;使用web的要设置 echartsH5 :echartsH5"true" <template><view class"charts-box"><view class"chart-title"> 趋势</view><qiun-data-chartstype"column":eopts"eopts":cha…...

嵌入式Linux驱动开发(LCD屏幕专题)(三)

1. 硬件相关的操作 LCD驱动程序的核心就是&#xff1a; 分配fb_info设置fb_info注册fb_info硬件相关的设置 硬件相关的设置又可以分为3部分&#xff1a; 引脚设置时钟设置LCD控制器设置 2. 在设备树里指定LCD参数 framebuffer-mylcd {compatible "100ask,lcd_drv&qu…...

MySQL视图用户管理

文章目录 视图视图的规则用户用户信息创建用户删除用户修改密码 用户权限给用户授权回收权限 视图 视图是一个虚拟表&#xff0c;其内容由查询定义。同真实的表一样&#xff0c;视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表&#xff0c;基表的数据变化也会…...

我发现了一个很好看的字体,霞鹜文楷!如何换windows和typora字体?

1、字体 官方地址如下&#xff0c;下载也很简单。 https://github.com/lxgw/LxgwWenKai 有1W多的stars。 方式&#xff1a; 直接打包下载。下载不来&#xff0c;可以联系我。 然后ttf的文件&#xff0c;全部安装就行了。 reg save "HKCU\Control Panel" .\res…...

微软8月系统更新引发问题:虚拟内存分页文件出现错误

微软的八月系统更新引发了一系列问题&#xff0c;其中包括“UNSUPPORTED_PROCESSOR”蓝屏错误和文件管理器故障。尽管微软已经修复了前者&#xff0c;但据国外科技媒体Windows Latest报道&#xff0c;仍有用户反馈在非微星设备上出现“fault in nonpaged area”蓝屏错误。 如果…...

swiper删除虚拟slide问题

在存在缓存的情况下&#xff0c;删除较前的slide&#xff0c;会出现当前slide与后一个slide重复出现的情况 假设当前存在5个slide&#xff0c;且这5个slide已缓存&#xff0c;则删除slide2后&#xff0c;仍为5个slide&#xff0c;且slide2的内容变为slide3的内容&#xff0c;此…...

FPGA实战小项目2

基于FPGA的贪吃蛇游戏 基于FPGA的贪吃蛇游戏 基于fpga的数字密码锁ego1 基于fpga的数字密码锁ego1 基于fpga的数字时钟 basys3 基于fpga的数字时钟 basys3...

一些关于完整小程序项目的优秀开源

转载自&#xff1a; 35个项目&#xff0c;开源&#xff0c;开源&#xff01; (qq.com) 那几本霸占我休息时间的PDF&#xff01; (qq.com) 13个超强的 SpringBoot 实战项目 &#xff08;还不赶紧收藏起来&#xff09; (qq.com) 用SpringBoot开发一个人脸识别系统&#xff01…...

Windows模拟器推荐

物是人非事事休&#xff0c;欲语泪先流 Windows模拟器推荐 如果你需要在 Windows 操作系统之外运行 Windows 应用程序或测试不同版本的 Windows&#xff0c;有几个 Windows 模拟器和虚拟机软件可供选择。以下是一些常用的 Windows 模拟器和虚拟机软件&#xff1a; VirtualBox&…...

搭建RabbitMQ消息服务,整合SpringBoot实现收发消息

作者主页&#xff1a;Designer 小郑 作者简介&#xff1a;3年JAVA全栈开发经验&#xff0c;专注JAVA技术、系统定制、远程指导&#xff0c;致力于企业数字化转型&#xff0c;CSDN博客专家&#xff0c;蓝桥云课认证讲师。 目录 一、前言1.1 什么是消息队列1.2 RabbitMQ 是什么1.…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...