HDFS详解+命令操作演示

HDFS概述

HDFS(Hadoop Distributed File System)是Apache Hadoop 项目的一个子项目。Hadoop非常实用存储大型数据,TB和PB级别的,其就是使用的HDFS作为存储系统。HDFS是分布式文件系统使用多台计算机存储文件,并提供统一的访问接口,就像访问本地普通文件系统一样。

分布式文件系统解决的就是大数据存储问题。他们是横跨在多台计算机上的存储系统。分布式文件系统在大数据时代有着广泛的应用前景,它们为存储和处理超大规模数据提供所需要的扩展能力。

HDFS特点

  • 可以存储超大文件,时效性稍差
  • 元数据(eg.存储在哪个几个节点、名字……)占用空间,大小文件都一样,所以存储大文件划算
  • 具有硬件故障检测功能和自动恢复功能
  • 为数据存储提供了很强的扩展功能,空间不够了可以随时增加机器
  • 一般为一次写入,多次读取, 只支持追加写入,不支持随机修改
  • 可以在廉价的机器上运行

HDFS架构

采用Master/Slave架构。两个重要的角色是:NameNode和DataNode。

四个基本组件:HDFS Client、NameNode、DataNode、Secondary NameNode.

hdfs架构

Client作用

  • 文件切片。文件上传到HDFS中的时候,client会将文件切成一个个block,然后进行存储,block默认大小为128M
  • 与NameNode交互,获取文件的位置信息
  • 与DataNode交互,读取或者写入数据
  • 提供一些命令来管理和访问HDFS,比如启动或者关闭HDFS

NameNode作用

  • 是master,主管、管理者
  • 管理HDFS的元数据(文件路径、文件大小、文件名字、文件权限,文件的block切片信息……)
  • 配置副本策略
  • 处理客户端读写请求

DataNode作用

  • 是Salve。NameNode下达命令,DataNode负责执行
  • 存储实际的数据块
  • 执行数据块的读写操作
  • 定时向NameNode汇报block信息

SecondaryNameNode作用

  • 并非NameNode的热备。当NameNode挂掉的时候,他并不能马上替换掉NameNode并提供服务。
  • 辅助NameNode,分担其工作
  • 在紧急情况下,可以恢复NameNode

HDFS副本机制

副本机制

HDFS的Shell命令

安装好Hadoop后可以用命令对文件系统进行操作。比如创建、删除、修改文件权限等。

shell命令使用格式:

hadoop fs <args>   // 既可以操作HDFS,也可以操作本地系统
hadoop dfs <args>  // 只能操作hdfs系统

-ls 显示文件列表

hadoop fs -ls URI
eg.	hadoop fs -ls /
eg.	hadoop fs -ls -R /   # 递归显示文件列表

-mkdir创建文件夹

hadoop fs -mkdir /dir1   # 在根目录下创建一个dir1的文件夹
hadoop fs -mkdir -p  /aa/bb/cc   # 递归创建文件夹

-put 将本地文件或文件夹上传到目标系统

hadoop fs -put /root/1.txt /dir1    # 将本地的1.txt文件上传到hadoop的dir1文件夹
hadoop fs -put /root/dir1 /         # 将本地的dir1文件夹上传到hadoop的根目录

-get将HDFS文件拷贝到本地系统

hadoop fs -get <src> <localdst>
eg. hadoop fs -get /1.txt /opt   # 将HFDS中的1.txt文件拷贝到本地opt目录

-mv 剪切命令,只能操作hdfs中的文件,不可跨系统

hadoop fs -mv <src> <dst>

-rm命令,删除文件或者文件夹

hadoop fs -rm [-r] [-skipTrash] URI [URI...]
# 删除目录需要加-r
# -skipTrash 跳过回收站,彻底删除

-cp 文件或文件夹复制,只能在hdfs系统中使用,不可以跨系统

hadoop fs -cp <src> <dst>

-cat命令,显示文件内容

hadoop fs -cat <src>

HDFS基准测试

写入测试

向HDFS文件系统中写入数据,10个文件,每个文件10M,文件存到/benchmarks/TestDFSIO中

hadoop jar /export/server/hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.7.5.jar TestDFSIO -write -nrFiles 10 -fileSize 10MB

读取速度

在HDFS文件系统中读取10个文件,每个10M

hadoop jar /export/server/hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.7.5.jar TestDFSIO -read -nrFiles 10 -fileSize 10MB

清除测试数据

扫描二维码关注公众号,回复: 13269392 查看本文章
hadoop jar /export/server/hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.7.5.jar TestDFSIO -clean

									 扫码一起进步

微信公众号

猜你喜欢

转载自blog.csdn.net/qq_40585384/article/details/121413386