IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Hadoop分布式文件系统 (HDFS) -> 正文阅读

[大数据]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。
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-03 11:16:33  更:2021-08-03 11:18:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 18:05:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码