在当今的企业环境中,单台计算机的存储容量通常不足以应对海量数据的需求,因此需要跨机器进行存储。这种跨机器统一管理的文件系统被称为分布式文件系统。
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中。
宣小二
宣小二:媒体发稿平台,自媒体发稿平台,短视频矩阵发布平台,基于AI驱动的企业自助式投放平台。
21 查看详情
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 –
以上就是二、分布式文件系统HDFS及其简单使用的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/464951.html
微信扫一扫
支付宝扫一扫