Hadoop分布式文件系统 (HDFS)
Hadoop分布式文件系统
简介
HDFS(Hadoop distribute file system) 是Hadoop核心组成,是分布式存储服务
分布式文件系统能够横跨多态计算机。在大数据时代有着广泛的应用前景,它们为存储和处理超大规模数据提供所需的扩展能力。
HDFS是分布式文件系统的一种
概念
HDFS通过统一的命名空间目录树 来定位文件
通过多态服务器联合实现其功能,集群中的服务器有各自的角色(分布式的本质是拆分,各司其职)
典型的 Master/Slave 【主从】架构
HDFS 集群往往是一个NameNode + 多个 DataNode 组成
NameNode是集群的主节点,DataNode是集群的从节点
HA架构有两个NameNode,联邦机制
分快存储(block机制)
HDFS中的文件在物理上是分块存储的,块的大小可以通过配置参数来确定
Hadoop 2.X 版本中默认的 block 是:128M
命名空间
HDFS支持传统的层次型文件组织结构。用户或者应用程序可以创建目录,将文件保存在这些目录中。
文件系统名字空间的层次结构和大多数文件系统类似:可以创建、删除、移动、重命名文件等
NameNode负责维护文件系统的名字空间,任何对文件系统名字空间或属性的修改都将被NameNode记录
HDFS提供一个抽象目录树 ,访问形式
hdfs://namenode主机名:port文件路径
如:
hdfs://linux121:9000/test/inpu
NameNode 元数据管理
将目录结构及文件分块位置信息称为元数据
NameNode的元数据记录每一个文件所对应的block信息(block id、所在DataNode节点的信息)
DataNode 数据存储
文件的各个block的具体存储管理由DataNode节点承担;一个block会有多个DataNode来存储
DataNode会定时向NameNode来汇报自己持有的block信息
副本机制
出于容错考虑,文件的所有block均会有副本。每个文件的block大小和副本系数都是可配置的。应用程序可以指定某个文件的副本数量。
副本数可以在文件创建的时候指定,也可以在之后改变。
副本数默认为:3
副本的数量超过 DataNode 节点数量时,以 DataNode 数量为上限
一次写入,多次读出
HDFS 设计时按照 一次写入,多次读出的场景 进行设计的。
不支持文件的随机修改(更新),支持追加写入
HDFS适合用来做大数据分析的底层存储服务,但不适合用做网盘等应用。主要原因有:修改不方便、延迟大、网络开销大、成本高
架构
- NameNode(nn):HDFS集群的管理者,Master
- 维护并且管理HDFS的名称空间
- 维护副本策略
- 记录文件块信息的映射信息
- 负责客户端读写请求
- DataNode(dn):执行实际操作,Slave
- 保存实际的数据块
- 负责数据的读写
- Client:客户端
- 上传文件时负责进行文件的切分(block),然后进行上传
- 与 NameNode 交互,获取文件的位置信息
- 读取或者写入的时候,与DataNode交互进行读写
- 使用一些命令来管理、访问HDFS
shell命令操作HDFS
基本语法
方式一:
bin/hadoop fs 具体命令
方式二:
bin/hadoop dfs 具体命令
查看全部命令
bin/hdfs dfs
HDFS的操作命令大多数等同于Linux下的操作,只不过需要在命令前添加 -
查看命令参数
-help
:输出这个命令的参数hadoop fs -help 命令
如:
hadoop fs -help rm
1. 显示目录信息 -ls
[root@linux121 testfile]# hadoop fs -ls /
Found 4 items
drwxr-xr-x - root supergroup 0 2021-08-02 16:15 /test
drwx------ - root supergroup 0 2021-08-01 23:24 /tmp
-rw-r--r-- 3 root supergroup 77 2021-08-01 23:23 /wcinput
drwxr-xr-x - root supergroup 0 2021-08-01 23:24 /wcoutput
可添加的参数如下图:
通过web进行查看 url: http://linux:50070/explorer.html#/ly/test
主机名称要根据自己设置的主机ip地址
2. 在HDFS上创建目录 -mkdir
[root@linux121 ~]# hadoop fs -mkdir -p /ly/test
[root@linux121 ~]# hadoop fs -ls /
Found 5 items
drwxr-xr-x - root supergroup 0 2021-08-02 11:43 /ly
drwxr-xr-x - root supergroup 0 2021-08-01 23:18 /test
drwx------ - root supergroup 0 2021-08-01 23:24 /tmp
-rw-r--r-- 3 root supergroup 77 2021-08-01 23:23 /wcinput
drwxr-xr-x - root supergroup 0 2021-08-01 23:24 /wcoutput
3.复制文件
从本地移动到HDFS:
hadoop fs -moveFromLocal 移动的文件名 移动到HDFS中的目录
# 本地创建文件 [root@linux121 testfile]# vim hadoop.txt # 移动到HDFS中 [root@linux121 testfile]# hadoop fs -moveFromLocal hadoop.txt /ly/test
将本地文件复制到HDFS中
-put
【推荐】-copyFromLocal
# 创建文件并添加内容 [root@linux121 testfile]# vim copyfile.txt [root@linux121 testfile]# ls copyfile.txt hadoop.txt # 使用 -put 命令 [root@linux121 testfile]# hadoop fs -put copyfile.txt /ly/test # 使用 -copyFromLocal [root@linux121 testfile]# hadoop fs -copyFromLocal copyfile.txt /ly/test
从HDFS中复制文件到本地
-get
【推荐】-copyToLocal
# 删除本地文件 [root@linux121 testfile]# rm -f copyfile.txt [root@linux121 testfile]# ls hadoop.txt # 使用 -get [root@linux121 testfile]# hadoop fs -get /ly/test/copyfile.txt ./ # 使用 -copyToLocal [root@linux121 testfile]# hadoop fs -copyToLocal /ly/test/copyfile.txt ./ [root@linux121 testfile]# ls copyfile.txt hadoop.txt
从HDFS的一个路径拷贝到HDFS的另一个路径
-cp
# 将 /ly/test/目录下的hadoop.txt 移动到根目录下 [root@linux121 testfile]# hadoop fs -cp /ly/test/hadoop.txt /
4. 删除文件 -rm
-rmdir
# 删除移动到根目录下的 hadoop.txt 文件
[root@linux121 testfile]# hadoop fs -rm /hadoop.txt
Deleted /hadoop.txt
# 删除空的目录
[root@linux121 testfile]# hadoop fs -mkdir /delete
[root@linux121 testfile]# hadoop fs -rmdir /delete
5. 移动文件 -mv
# 查看目录下文件信息
[root@linux121 testfile]# hadoop fs -ls /test
Found 1 items
drwxr-xr-x - root supergroup 0 2021-08-01 23:19 /test/input
[root@linux121 testfile]# hadoop fs -ls /ly/test
Found 2 items
-rw-r--r-- 3 root supergroup 22 2021-08-02 15:54 /ly/test/copyfile.txt
-rw-rw-rw- 3 root root 99 2021-08-02 15:25 /ly/test/hadoop.txt
# 将 /ly/test 目录下的 hadoop.txt 文件移动到 /test目录下
[root@linux121 testfile]# hadoop fs -mv /ly/test/hadoop.txt /test
[root@linux121 testfile]# hadoop fs -ls /test
Found 2 items
-rw-rw-rw- 3 root root 99 2021-08-02 15:25 /test/hadoop.txt
drwxr-xr-x - root supergroup 0 2021-08-01 23:19 /test/input
6. 文件末尾追加内容
# 创建文件,并添加需要的追加的内容
[root@linux121 testfile]# vim hadoopappend.txt
[root@linux121 testfile]# hadoop fs -appendToFile hadoopappend.txt /ly/test/hadoop.txt
7. 查看内容 -cat
-tail
# 显示文件的末尾
[root@linux121 testfile]# hadoop fs -tail /test/hadoop.txt
hello
hadoop
movefiletest
这是想要追加的内容的开始这是想要追加内容的结尾
8. 修改文件的权限
# 文件权限 chmod
[root@linux121 testfile]# hadoop fs -chmod 666 /ly/test/hadoop.txt
# 文件用户 chown
[root@linux121 testfile]# hadoop fs -chown root /ly/test/hadoop.txt
# 文件用户组 chgrp
[root@linux121 testfile]# hadoop fs -chgrp root /ly/test/hadoop.txt
# 查看修改后的文件属性
[root@linux121 testfile]# hadoop fs -ls -h /ly/test/
Found 1 items
-rw-rw-rw- 3 root root 99 2021-08-02 15:25 /ly/test/hadoop.txt
9. 统计文件信息 -du
# 统计文件夹的总大小
[root@linux121 testfile]# hadoop fs -du -s -h /test
130 /test
# 显示文件、文件夹的大小
[root@linux121 testfile]# hadoop fs -du -h /test
99 /test/hadoop.txt
31 /test/input
10.设置副本数量 -setrep
[root@linux121 testfile]# hadoop fs -setrep 5 /test/hadoop.txt
Replication 5 set: /test/hadoop.txt
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iXRhG26P-1627894430116)(Hadoop分布式文件系统.assets/image-20210802163708163.png)]
- 这里设置的副本数只是记录在NameNode的元数据中,是否真的会有这么多副本,还得看DataNode的
数量。因为目前只有3台设备,最多也就3个副本,只有节点数的增加到10台时,副本数才能达到10。
本数量 -setrep
[root@linux121 testfile]# hadoop fs -setrep 5 /test/hadoop.txt
Replication 5 set: /test/hadoop.txt
- 这里设置的副本数只是记录在NameNode的元数据中,是否真的会有这么多副本,还得看DataNode的
数量。因为目前只有3台设备,最多也就3个副本,只有节点数的增加到10台时,副本数才能达到10。
Hadoop分布式文件系统 (HDFS)相关推荐
- Hadoop分布式文件系统HDFS的工作原理详述
Hadoop分布式文件系统(HDFS)是一种被设计成适合运行在通用硬件上的分布式文件系统.HDFS是一个高度容错性的系统,适合部署在廉价的机器上.它能提供高吞吐量的数据访问,非常适合大规模数据集上的应 ...
- JAVA大数据(二) Hadoop 分布式文件系统HDFS 架构,MapReduce介绍,Yarn资源调度
文章目录 1.分布式文件系统HDFS 1.HDFS的来源 2.HDFS的架构图之基础架构 2.1 master/slave 架构 2.2 名字空间(NameSpace) 2.3 文件操作 2.4副本机 ...
- 大数据技术之Hadoop分布式文件系统HDFS系统知识整理(从入门到熟练操作)
系列博客 1.大数据技术之Hadoop完全分布式集群搭建+Centos7配置连通外网和主机 2.大数据技术之Hadoop编译源码 3.大数据技术之Hadoop分布式文件系统HDFS系统知识整理(从入门 ...
- Hadoop分布式文件系统--HDFS结构分析
前言 在Hadoop内部,详细实现了很多类的文件系统,当然最最被我们用到的就是他的分布式文件系统HDFS了. 可是本篇文章不会讲HDFS的主从架构等东西,由于这些东西网上和资料书中都讲得非常多了. 所 ...
- Hadoop 分布式文件系统 - HDFS
当数据集超过一个单独的物理计算机的存储能力时,便有必要将它分不到多个独立的计算机上.管理着跨计算机网络存储的文件系统称为分布式文件系统.Hadoop 的分布式文件系统称为 HDFS,它 是为 以流式数 ...
- Hadoop分布式文件系统HDFS
HDFS的探究: HDFS HDFS是 Hadoop Distribute File System的缩写,是谷歌GFS分布式文件系统的开源实现,Apache Hadoop的一个子项目,HDFS基于流数 ...
- Hadoop分布式文件系统——HDFS
一.介绍 HDFS (Hadoop Distributed File System)是 Hadoop 下的分布式文件系统,具有高容错.高吞吐量等特性,可以部署在低成本的硬件上. 二.HDFS 设计原理 ...
- Hadoop分布式文件系统——HDFS原理简介
阅读前必看 这篇文章与其说是一篇文章,不如说是一篇在家学习的笔记,其中大部分内容来自于github上一个大神的开源笔记,在此附上链接,表达版权所属以及敬意:github源地址 一.介绍 HDFS(Ha ...
- Hadoop分布式文件系统hdfs的shell操作命令大全
hadoop fs -操作命令 -参数 -ls #显示目录信息 -->hadoop fs -ls hdfs://hadoop-server-00:9000/ 这些参数中,所有的hdfs路径都可以 ...
最新文章
- Java NIO系列教程(六) Selector
- Unity C#单例模式的实现
- C++ 指向指针的指针(多级间接寻址)
- android9怎样适配nfc,android – 如何使用NFC动作
- python可以做特效吗_学习mel语言,Python,JavaScript到什么程度才能做一下大型特效,要自已开发插件脚本呢?...
- C++程序员必需的修养
- matlab figure 窗口最大化
- nba2k20手游修改器服务器已到,NBA2K20手机版万能修改器
- 为什么Eclipse Iceoryx使用Helix QAC
- 计算机网络实验双绞线制作,实验一 双绞线制作实验报告
- Unity_塔防游戏按波产生怪_063
- SEO入门教程之入门相关
- python中批量将矩形图片转化为正方形图片,并且缩放
- 中国兰花怎么养 中国兰花养殖方法及注意事项
- maven 中配置多个mirror的问题
- Qt+ECharts开发笔记(五):ECharts的动态排序柱状图介绍、基础使用和Qt封装Demo
- 同一台服务器同一个IP都是80端口发布多个网站
- 一篇很好的机器学习介绍
- stetho使用介绍
- ISO 8601日期格式与持续时间格式