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/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会通过http从NameNode拉取数据(edits和fsimage)然后合并完成后提供给NameNode使用
HDFS数据的读写请求
数据写入流程
- 1. 客户端向NameNode发起请求
- 2. NameNode审核权限、剩余空间后,满足条件允许写入,并告知客户端写入的DataNode地址(一般来说会分配网络距离最近的datanode)
- 3. 客户端向指定的DataNode发送数据包
- 4. 被写入数据的DataNode同时完成数据副本的复制工作,将其接收的数据分发给其它DataNode
- 5. 写入完成客户端通知NameNode,NameNode做元数据记录工作
- 数据读取流程
- 1、客户端向NameNode申请读取某文件
- 2、 NameNode判断客户端权限等细节后,允许读取,并返回此文件的block列表
- 3、客户端拿到block列表后自行寻找DataNode读取即可(会去找最近的datanode)
相关文章:
Hadoop:HDFS--分布式文件存储系统
目录 HDFS的基础架构 VMware虚拟机部署HDFS集群 HDFS集群启停命令 HDFS Shell操作 hadoop 命令体系: 创建文件夹 -mkdir 查看目录内容 -ls 上传文件到hdfs -put 查看HDFS文件内容 -cat 下载HDFS文件 -get 复制HDFS文件 -cp 追加数据到HDFS文件中 -appendTo…...
自定义封装异步任务组件,实现FutureTask功能
FutureTask 在 JDK1.8 后的异步编排API中的CompletableFuture,提供了 异步任务的成功回调、异常回调。 public class FutureTaskTest {public static void main(String[] args) throws Exception {CompletableFuture<String> future CompletableFuture.sup…...
【区块链 | IPFS】IPFS节点搭建、文件上传、节点存储空间设置、节点上传文件chunk设置
一、创建ipfs节点 通过ipfs init在本地计算机建立一个IPFS节点 本文有些命令已经执行过了,就没有重新初始化。部分图片拷贝自先前文档,具体信息应以实物为准 ipfs init initializing IPFS node at /Users/CHY/.ipfs generating 2048-bit RSA keypair.…...
【autodesk】浏览器中渲染rvt模型
使用Forge完成渲染 Forge是什么 为什么能够渲染出来rvt模型 Forge是由Autodesk开发的一套云端开发平台和工具集。在Forge平台中,有一个名为"Model Derivative"的服务,它可以将包括RVT(Revit)在内的多种BIM(…...
Python超入门(1)__迅速上手操作掌握Python
# 1.第一个代码:输出语句 # 1.第一个代码:输出语句 print("My dogs name is Huppy!") print(o----) print( ||| ) print("*" * 10) """ 输出结果: My dogs name is Huppy! o----||| ********** "&…...
后端面试话术集锦第 十四 篇:go语言面试话术
这是后端面试集锦第十四篇博文——go语言面试话术❗❗❗ 1. go数组、切片、扩容 go的数组和切片都是用来存储相同类型的数据集合。 数组是存储固定大小的集合,且为值引用。 但切片是存储无固定大小的集合,且为引用类型。 切片有三个属性,分别为指向指针的数组array,数组…...
Oralce集群管理-19C RAC 私有网络调整为BOND1
1 尝试在线添加私有网络的新接口 是否成功。 使用oifcfg命令在线添加新的网卡接口,在还没有配置bond1的条件下 也是可以添加成功的。 [gridorcldb1 ~]$ oifcfg getif eno3 192.168.224.0 global public ens3f0 10.2.0.0 global cluster_interconnect,asm eno…...
洛谷 Array 数论
题目: 对于长度为n的数组A,A中只包含从1到n的整数(可重复)。如果A单调不上升或单调不下降,A就可称为美丽的。 找出在长度为n时,有几个美丽的A。 思路: 这是一道数论题。 我们先找找“单调不递…...
简明SQL条件查询指南:掌握WHERE实现数据筛选
条件查询是用于从数据库中根据特定条件筛选数据行的一种方式,它避免了检索整个表中的数据。通常,使用 WHERE 子句来定义过滤条件,只有符合这些条件的数据行才会被返回。 SQL中的运算符有:、!、<、> 等,用于进行…...
通过HbaseClient来写Phoenix表实现
由于数据存储在Hbase上,并且上层使用了Phoenix来读写数据。并且由于数据的列字段不固定,并且可能由于Hbase表列和Phoenix的表列字段不一致,使用Phoenix写入的数据会导致写出报错的问题出现。所以这里直接使用HbaseClient写入到Hbase表中&…...
uniapp qiun charts H5使用echarts的eopts配置不生效
原因是:使用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驱动程序的核心就是: 分配fb_info设置fb_info注册fb_info硬件相关的设置 硬件相关的设置又可以分为3部分: 引脚设置时钟设置LCD控制器设置 2. 在设备树里指定LCD参数 framebuffer-mylcd {compatible "100ask,lcd_drv&qu…...
MySQL视图用户管理
文章目录 视图视图的规则用户用户信息创建用户删除用户修改密码 用户权限给用户授权回收权限 视图 视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会…...
我发现了一个很好看的字体,霞鹜文楷!如何换windows和typora字体?
1、字体 官方地址如下,下载也很简单。 https://github.com/lxgw/LxgwWenKai 有1W多的stars。 方式: 直接打包下载。下载不来,可以联系我。 然后ttf的文件,全部安装就行了。 reg save "HKCU\Control Panel" .\res…...
微软8月系统更新引发问题:虚拟内存分页文件出现错误
微软的八月系统更新引发了一系列问题,其中包括“UNSUPPORTED_PROCESSOR”蓝屏错误和文件管理器故障。尽管微软已经修复了前者,但据国外科技媒体Windows Latest报道,仍有用户反馈在非微星设备上出现“fault in nonpaged area”蓝屏错误。 如果…...
swiper删除虚拟slide问题
在存在缓存的情况下,删除较前的slide,会出现当前slide与后一个slide重复出现的情况 假设当前存在5个slide,且这5个slide已缓存,则删除slide2后,仍为5个slide,且slide2的内容变为slide3的内容,此…...
FPGA实战小项目2
基于FPGA的贪吃蛇游戏 基于FPGA的贪吃蛇游戏 基于fpga的数字密码锁ego1 基于fpga的数字密码锁ego1 基于fpga的数字时钟 basys3 基于fpga的数字时钟 basys3...
一些关于完整小程序项目的优秀开源
转载自: 35个项目,开源,开源! (qq.com) 那几本霸占我休息时间的PDF! (qq.com) 13个超强的 SpringBoot 实战项目 (还不赶紧收藏起来) (qq.com) 用SpringBoot开发一个人脸识别系统!…...
Windows模拟器推荐
物是人非事事休,欲语泪先流 Windows模拟器推荐 如果你需要在 Windows 操作系统之外运行 Windows 应用程序或测试不同版本的 Windows,有几个 Windows 模拟器和虚拟机软件可供选择。以下是一些常用的 Windows 模拟器和虚拟机软件: VirtualBox&…...
搭建RabbitMQ消息服务,整合SpringBoot实现收发消息
作者主页:Designer 小郑 作者简介:3年JAVA全栈开发经验,专注JAVA技术、系统定制、远程指导,致力于企业数字化转型,CSDN博客专家,蓝桥云课认证讲师。 目录 一、前言1.1 什么是消息队列1.2 RabbitMQ 是什么1.…...
PDF补丁丁终极指南:5分钟学会PDF元数据精准修改技巧
PDF补丁丁终极指南:5分钟学会PDF元数据精准修改技巧 【免费下载链接】PDFPatcher PDF补丁丁——PDF工具箱,可以编辑书签、剪裁旋转页面、解除限制、提取或合并文档,探查文档结构,提取图片、转成图片等等 项目地址: https://gitc…...
如何通过Play Integrity API完整检测Android设备安全状态
如何通过Play Integrity API完整检测Android设备安全状态 【免费下载链接】play-integrity-checker-app Get info about your Device Integrity through the Play Intergrity API 项目地址: https://gitcode.com/gh_mirrors/pl/play-integrity-checker-app 在移动应用生…...
【Flutter3.8x】flutter从入门到实战基础教程(一):新建一个flutter项目
初始化项目步骤 vscode中安装flutter插件ctrlshiftp弹出命令框点击flutter:new project系统会自动生成一个项目,其中会让选择一个文件夹存放源码,自行选择就行 启动安卓模拟器把文件定位在main.dart上,然后再点击这里如果启动失败,…...
为什么公平感比财富本身更影响希望
有些时刻,普通人最难受的不是自己暂时没钱。而是你发现,自己已经很努力地排队、提交材料、遵守规则、等待结果,可最后还是不知道机会到底怎么分配。 孩子上学,要反复比较资源差异。 老人看病,要担心排队、费用和后续照…...
Claude投资回报率究竟怎么算?揭秘企业级ROI模型的7个隐藏变量与实时测算模板
更多请点击: https://kaifayun.com 第一章:Claude投资回报率的核心定义与行业基准 Claude投资回报率(ROI)并非传统软件许可模型下的简单成本收益比,而是衡量企业将Claude系列大模型深度集成至核心业务流程后ÿ…...
如何快速部署大麦自动抢票工具:面向开发者的完整技术指南
如何快速部署大麦自动抢票工具:面向开发者的完整技术指南 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 在热门演出票务市场中…...
Quantum ESPRESSO 终极快速入门指南:5天轻松掌握电子结构计算
Quantum ESPRESSO 终极快速入门指南:5天轻松掌握电子结构计算 【免费下载链接】q-e Mirror of the Quantum ESPRESSO repository. Please do not post Issues or pull requests here. Use gitlab.com/QEF/q-e instead. 项目地址: https://gitcode.com/gh_mirrors/…...
ComfyUI-Impact-Pack V8:AI图像细节增强的终极指南
ComfyUI-Impact-Pack V8:AI图像细节增强的终极指南 【免费下载链接】ComfyUI-Impact-Pack Custom nodes pack for ComfyUI This custom node helps to conveniently enhance images through Detector, Detailer, Upscaler, Pipe, and more. 项目地址: https://git…...
新唐NuEzAI-M55M1开发板:基于Cortex-M55与Ethos-U55的终端AI部署实战
1. 项目概述:当AI遇见微控制器,一场边缘计算的“瘦身革命” 最近,新唐科技(Nuvoton)发布了一款名为NuEzAI-M55M1的开发板,在嵌入式圈子和AI应用开发者中激起了不小的水花。这玩意儿乍一看,又是一…...
SQLines数据库迁移工具终极指南:5分钟快速上手跨平台SQL转换
SQLines数据库迁移工具终极指南:5分钟快速上手跨平台SQL转换 【免费下载链接】sqlines SQLines Open Source Database Migration Tools 项目地址: https://gitcode.com/gh_mirrors/sq/sqlines 在当今多元化的数据库环境中,数据库迁移和SQL转换已成…...
