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)相关推荐

  1. Hadoop分布式文件系统HDFS的工作原理详述

    Hadoop分布式文件系统(HDFS)是一种被设计成适合运行在通用硬件上的分布式文件系统.HDFS是一个高度容错性的系统,适合部署在廉价的机器上.它能提供高吞吐量的数据访问,非常适合大规模数据集上的应 ...

  2. JAVA大数据(二) Hadoop 分布式文件系统HDFS 架构,MapReduce介绍,Yarn资源调度

    文章目录 1.分布式文件系统HDFS 1.HDFS的来源 2.HDFS的架构图之基础架构 2.1 master/slave 架构 2.2 名字空间(NameSpace) 2.3 文件操作 2.4副本机 ...

  3. 大数据技术之Hadoop分布式文件系统HDFS系统知识整理(从入门到熟练操作)

    系列博客 1.大数据技术之Hadoop完全分布式集群搭建+Centos7配置连通外网和主机 2.大数据技术之Hadoop编译源码 3.大数据技术之Hadoop分布式文件系统HDFS系统知识整理(从入门 ...

  4. Hadoop分布式文件系统--HDFS结构分析

    前言 在Hadoop内部,详细实现了很多类的文件系统,当然最最被我们用到的就是他的分布式文件系统HDFS了. 可是本篇文章不会讲HDFS的主从架构等东西,由于这些东西网上和资料书中都讲得非常多了. 所 ...

  5. Hadoop 分布式文件系统 - HDFS

    当数据集超过一个单独的物理计算机的存储能力时,便有必要将它分不到多个独立的计算机上.管理着跨计算机网络存储的文件系统称为分布式文件系统.Hadoop 的分布式文件系统称为 HDFS,它 是为 以流式数 ...

  6. Hadoop分布式文件系统HDFS

    HDFS的探究: HDFS HDFS是 Hadoop Distribute File System的缩写,是谷歌GFS分布式文件系统的开源实现,Apache Hadoop的一个子项目,HDFS基于流数 ...

  7. Hadoop分布式文件系统——HDFS

    一.介绍 HDFS (Hadoop Distributed File System)是 Hadoop 下的分布式文件系统,具有高容错.高吞吐量等特性,可以部署在低成本的硬件上. 二.HDFS 设计原理 ...

  8. Hadoop分布式文件系统——HDFS原理简介

    阅读前必看 这篇文章与其说是一篇文章,不如说是一篇在家学习的笔记,其中大部分内容来自于github上一个大神的开源笔记,在此附上链接,表达版权所属以及敬意:github源地址 一.介绍 HDFS(Ha ...

  9. Hadoop分布式文件系统hdfs的shell操作命令大全

    hadoop fs -操作命令 -参数 -ls #显示目录信息 -->hadoop fs -ls hdfs://hadoop-server-00:9000/ 这些参数中,所有的hdfs路径都可以 ...

最新文章

  1. Java NIO系列教程(六) Selector
  2. Unity C#单例模式的实现
  3. C++ 指向指针的指针(多级间接寻址)
  4. android9怎样适配nfc,android – 如何使用NFC动作
  5. python可以做特效吗_学习mel语言,Python,JavaScript到什么程度才能做一下大型特效,要自已开发插件脚本呢?...
  6. C++程序员必需的修养
  7. matlab figure 窗口最大化
  8. nba2k20手游修改器服务器已到,NBA2K20手机版万能修改器
  9. 为什么Eclipse Iceoryx使用Helix QAC
  10. 计算机网络实验双绞线制作,实验一 双绞线制作实验报告
  11. Unity_塔防游戏按波产生怪_063
  12. SEO入门教程之入门相关
  13. python中批量将矩形图片转化为正方形图片,并且缩放
  14. 中国兰花怎么养 中国兰花养殖方法及注意事项
  15. maven 中配置多个mirror的问题
  16. Qt+ECharts开发笔记(五):ECharts的动态排序柱状图介绍、基础使用和Qt封装Demo
  17. 同一台服务器同一个IP都是80端口发布多个网站
  18. 一篇很好的机器学习介绍
  19. stetho使用介绍
  20. ISO 8601日期格式与持续时间格式

热门文章

  1. 攻下隔壁女神的路由器(转)
  2. 微信小程序功能:商品收藏-图片预览-客服-分享-加入购物车
  3. php银联支付接口 demo,php版银联支付接口开发简单实例详解
  4. 全球顶级的14位程序员!膜拜!
  5. Android-自定义UI模板
  6. k8s技术预研8--深入掌握Kubernetes Service
  7. 阿里巴巴高级技术专家李浩:千牛开放从云到端
  8. 【友盟+】国庆假期旅游类APP使用报告(上)
  9. IP签名档PHP源码,简单几步,教你制作自己的显IP签名档
  10. 【Activity学习五】--基于SSM整合Activiti之请假流程实现(二)