二、分布式文件系统HDFS及其简单使用

发布时间 - 2025-07-15 00:00:00    点击率:

在当今的企业环境中,单台计算机的存储容量通常不足以应对海量数据的需求,因此需要跨机器进行存储。这种跨机器统一管理的文件系统被称为分布式文件系统。

HDFS(Hadoop Distributed File System)是Apache Hadoop项目的一部分,专门用于存储大规模数据(如TB和PB级别),它以HDFS作为其存储系统。HDFS通过多台计算机存储文件,并提供统一的访问接口。

HDFS的设计灵感来源于谷歌的论文《The Google File System》。

HDFS由四个基本组件组成:HDFS Client、NameNode、DataNode和Secondary NameNode。

客户端(Client)负责将文件分割成多个Block,并上传到HDFS。它还提供管理和访问HDFS的命令,如启动或关闭HDFS。

NameNode作为HDFS的管理者,负责管理元数据(文件路径、文件大小、文件名、文件权限和Block切片信息)。它还管理Block的副本策略,默认设置为3个副本,并处理客户端的读写请求。

DataNode是执行实际操作的节点,负责存储实际的数据块,执行数据块的读写操作,并定期向NameNode报告Block信息。

Secondary NameNode不是NameNode的备份,不能在NameNode故障时立即接替服务,但它能分担NameNode的工作量,并在紧急情况下辅助恢复NameNode。

HDFS设计为在庞大的集群中可靠地存储超大文件。每个文件被存储为多个数据块(Block),除了最后一个,所有的数据块大小相同。为了容错,每个文件的Block都有多个副本。文件的Block大小和副本系数是可配置的。在Hadoop 2中,文件的Block大小默认设置为128M(134217728字节)。

如图所示,一个300M的a.txt文件上传到HDFS时,会被分割成128M的Block,不足128M的部分会单独存储在一个Block中。

HDFS的基本命令如下:

命令 说明
hadoop fs -mkdir /park 在HDFS根目录下创建park目录
hadoop fs -ls / 查看HDFS根目录下的目录
hadoop fs -put /root/1.txt /park 将Linux系统root目录下的1.txt上传到HDFS的park目录
hadoop fs -get /park/jdk /home 从HDFS的park目录下载文件到Linux的home目录
hadoop fs -rm /park/文件名 删除HDFS的park目录下的指定文件
hadoop fs -rmdir /park 删除park目录,但前提是目录内没有文件
hadoop fs -rmr /park 删除park目录,即使目录内有文件
hadoop fs -cat /park/a.txt 查看park目录下的a.txt文件内容
hadoop fs -tail /park/a.txt 查看park目录下a.txt文件末尾的数据
hadoop jar xxx.jar 执行jar包

HDFS的简单使用示例:假设我们的HDFS根目录是hdfs://192.168.147.128:9820,我们尝试在根目录下创建一个名为user的子目录,命令如下:

[hadoop@node01 ~]$ hadoop fs -mkdir /user

然后在Hadoop页面打开HDFS。

此时,你将看到新创建的user文件夹。

接下来,将一个大小为300M的文件上传到HDFS的user文件夹中。

然后在Hadoop页面上可以看到刚刚上传的文件。

此时,文件被分成了三个Block。

点击download按钮,即可下载文件。

  • END -


# node.js  # linux  # apache  # 谷歌  # ai  # 分布式  # 接口  # 切片  # hadoop  # hdfs  # 多个  # 目录下  # 设置为  # 它还  # 文件系统  # 文件上传  # 客户端  # 都有  # 成了  # 并在 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么为数据库表字段添加索引以优化查询  如何挑选高效建站主机与优质域名?  Windows Hello人脸识别突然无法使用  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  node.js报错:Cannot find module 'ejs'的解决办法  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  linux写shell需要注意的问题(必看)  北京的网站制作公司有哪些,哪个视频网站最好?  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】  html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】  如何在宝塔面板中修改默认建站目录?  在Oracle关闭情况下如何修改spfile的参数  如何快速选择适合个人网站的云服务器配置?  laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】  教你用AI润色文章,让你的文字表达更专业  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  如何快速重置建站主机并恢复默认配置?  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  如何在建站宝盒中设置产品搜索功能?  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  Laravel如何实现模型的全局作用域?(Global Scope示例)  如何快速上传自定义模板至建站之星?  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  如何在阿里云服务器自主搭建网站?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  如何在Tomcat中配置并部署网站项目?  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  利用 Google AI 进行 YouTube 视频 SEO 描述优化  在线教育网站制作平台,山西立德教育官网?  如何在阿里云完成域名注册与建站?  如何快速搭建高效可靠的建站解决方案?  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  如何快速查询网站的真实建站时间?  原生JS实现图片轮播切换效果  如何快速搭建高效WAP手机网站吸引移动用户?  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  js实现点击每个li节点,都弹出其文本值及修改  微信小程序制作网站有哪些,微信小程序需要做网站吗?  免费网站制作appp,免费制作app哪个平台好?  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  Laravel怎么使用artisan命令缓存配置和视图