HDFS分布式文件系统知识点梳理(一)
作者:互联网
HDFS分布式文件系统
一、HDFS简介
HDFS是Hadoop Distribute File System,翻译成中文就是Hadoop 分布式文件系统,它是Hadoop的核心组成部分,是一个分布式存储服务。
HDFS实现了横跨多台计算机进行文件管理的功能,这就为存储和处理超大规模的数据提供所需要的扩展能力。
HDFS是分布式文件系统中的一种,广泛应用于大数据。
二、HDFS重要概念
HDFS通过统一的命名空间目录树来定位文件;它是通过集群的架构来实现其功能,集群中的服务器有各自的角色。
-
HDFS是典型的的MAster/Slave架构(主从)
HDFS集群往往是由一个NameNode + 多个DataNode组成,其中NameNode是集群的主节点,而DataNode是集群的从节点。(在HA架构中会存在两个NameNode,这是一种联邦机制)
-
分块存储(block机制)
HDFS中的文件在物理上是分块存储的,块的大小可以通过配置参数来决定;
Hadoop2.x版本中默认的block大小为128M。
-
命名空间(NameSpace)
HDFS支持传统的层次型的文件组织结构,客户端可以去创建目录,然后将文件保存在这些目录中,而文件系统名字空间的层次结构也和现有的大多数文件系统类似。
HDFS提供给客户一个抽象的目录树,访问形式为:hdfs://namenode的hostname:端口号/具体的文件目录
-
NameNode元数据管理
我们把目录结构以及文件分块位置信息叫做元数据。
NameNode的元数据记录了每一个文件所对应的block信息,包括block的id以及所在的DataNode节点的信息。
-
DataNode数据存储
文件的各个block的具体存储管理由DataNode节点来承担。一个block会有多个DataNode来存储,DataNode会定时向NameNode来汇报自己持有的block信息。
-
副本机制
为了容错,文件所有的block都会有副本。每个文件的block大小和副本系数都是可配置的。应用程序可以指定某个文件的副本数目。副本系数可以在文件创建的时候指定,也可以在之后改变。副本的数量默认是3个。
-
一次写入,多次读出
HDFS是设计成适应一次写入,多次读出的场景,且不支持文件的随机修改。(支持追加写入insert操作,不支持随机更新update操作),因此它适合用来做大数据分析的底层存储服务。
三、HDFS架构
- NameNode:HDFS集群的管理者,是架构中的Master节点
- 维护管理hdfs的名称空间-NameSpace
- 维护副本策略
- 记录文件块Block的映射信息
- 负责处理客户端读写请求
- DataNode:NameNode下达命令,DataNode执行实际的操作,是架构中的Slave节点
- 保存实际的数据块
- 负责数据块的读写
- Client:客户端
- 上传文件到HDFS的时候,Client负责将文件切分成Block,然后进行上传
- 请求NameNode交互,获取文件的位置信息
- 读取或写入文件,与DataNode交互
- Client可以使用一些命令来管理HDFS或者访问HDFS
四、HDFS客户端操作
4.1 Shell命令行操作HDFS
1.基本语法
bin/hadoop fs 具体命令
bin/hdfs dfs 具体命令
2.常用命令演示
# -help:输出某个命令参数
hadoop fs -help + 命令
# -ls:显示目录信息
hadoop fs -ls /
# -mkdir:在hdfs上创建目录
hadoop fs -mkdir -p /zae/bigdata
# -moveFromLocal:将本地的剪切粘粘到HDFS
touch hadoop.txt
hadoop fs -moveFromLocal ./hadoop.txt /zae/bigdata
# -appendToFile:追加一个文件到已经存在的文件结尾
touch new.txt
vi new.txt
在文件中输入:namenode datanode block replication
保存后键入命令:
Hadoop fs -appendToFile new.txt /zae/bigdata/old.txt
# -cat 显示文件内容
hadoop fs -cat /zae/bigdata/hadoop.txt
# -chgrp修改文件所在组群,-chmod修改文件的权限 -chown修改文件所有者
hadoop fs -chmod 666 /zae/bigdata/hadoop.txt
hadoop fs -chown root:root /zae/bigdata/hadoop.txt
# -copyFromLocal:从本地文件系统中拷贝文件到HDFS路径中去
hadoop fs -copyFromLocal README.txt
# -copyToLocal:从HDFS拷贝到本地
hadoop fs -copyToLocal /zae/bigdata/hadoop.txt ./
# -cp:从HDFS的一个路径拷贝到HDFS的另一个路径
hadoop fs -cp /zae/bigdata/hadoop.txt /hdfs.txt
# -mv:在HDFS目录中移动文件
hadoop fs -mv /hdfs.txt /zae/bigdata/
# -get:等同于copyToLocal,将HDFS文件下载到本地
hadoop fs -get /lagou/bigdata/hadoop.txt ./
# -put:等同于copyFromLocal
hadoop fs -mkdir -p /user/root/test/ #在HDFS中创建多级目录文件夹
touch yarn.txt #在本地文件系统创建yarn.txt文件
vim yarn.txt #编辑文件,随便写些内容
hadoop fs -put ./yarn.txt /user/root/test/
# -tail:显示一个文件的末尾
hadoop fs -tail /user/root/test/yarn.txt
# -rm:删除文件或者文件夹
hadoop fs -rm /user/root/test/yarn.txt
# -rmdir:删除空目录
hadoop fs -mkdir /test #创建
hadoop fs -rmdir /test #删除
#-du统计文件夹的大小信息
hadoop fs -du -s -h /user/root/test
hadoop fs -du -h /user/root/test
# -setrep:设置HDFS中文件的副本数量
hadoop fs -setrep 10 /zae/bigdata/hadoop.txt
(备注,这里设置的副本数只是记录在NameNode的元数据中,是否真的会产生那么多的副本,还是得看DataNode的数量。比如如果目前仅仅有3个设备,那么即使设置了10,那最多也只能有3个副本,只有当DataNode节点数增加到10的时候,副本数才有可能达到10)
标签:知识点,fs,HDFS,hadoop,DataNode,文件,分布式文件系统,txt 来源: https://www.cnblogs.com/zaevn00001/p/16684464.html