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 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> HDFS文件系统 -> 正文阅读

[大数据]HDFS文件系统

HDFS是Hadoop体系中最重要的组成部分,主要用于解决海量大数据的存储的问题,是目前应用最广的分布式文件存储系统。

1.HDFS解决传统文件存储的两个问题

  • 当数据量越来越大时,会遇到存储的瓶颈,需要扩容
  • 由于文件太大,上传和下载都非常耗时

解决:

  • 扩容
    纵向扩容:增加内存和磁盘
    横向扩容:增加服务器的数量

  • 分块:大的文件分成多个数据库,并行处理数据

2.HDFS的基本概念

2.1 NameNode(名称节点)

NameNode是HDFS集群的主服务器,通常成为名称节点或者主节点。两大功能

  • 负责客户端请求的响应
  • 元数据的管理(查询,修改)

NameNode两个重要文件

  • fsimage:元数据镜像文件(保存文件系统的目录树)
    Fsimage是一个二进制文件,当中记录了HDFS中所有文件和目录的元数据信息
  • edits:元数据操作日志(针对目录树的修改操作)
  • Namenode会将HDFS的文件和目录元数据存储在一个叫fsimage的二进制文件中,每次保存fsimage之后到下次保存之间的所有hdfs操作,将会记录在editlog文件中,当editlog达到一定的大小(bytes,由fs.checkpoint.size参数定义)或从上次保存过后一定时间段过后(sec,由fs.checkpoint.period参数定义),namenode会重新将内存中对整个HDFS的目录树和文件元数据刷到fsimage文件中。Namenode就是通过这种方式来保证HDFS中元数据信息的安全性。

2.2 Secondary NameNode

Secondary NameNode的职责是合并NameNode的edit logs到fsimage文件中。
它定时到NameNode去获取edit logs,并更新到自己的fsimage上。
一旦它有了新的fsimage文件,它将其拷贝回NameNode中。
NameNode在下次重启时会使用这个新的fsimage文件,从而减少重启的时间

NameNodeSecondary NameNode
客户端请求的响应
元数据的管理
不sNameNode节点的热备份
负责edit logs和fsimage的合并
辅助恢复NameNode

2.3 DataNode

DataNode节点是HDFS集群中的从服务器,通常称为数据节点。Datenode 提供真实文件数据的存储服务。
DataNode响应来自HDFS客户机的读写请求同时它们还响应来自NameNode的创建,删除和复制块的命令。NameNode依赖来自每个DataNode的定期心跳(heartbeat)消息。每条消息都包含一个块报告,NameNode可以根据这个报告验证块映射和其他文件系统元数据。如果DataNode不能发送心跳消息,NameNode将采用修复措施。重新复制在该节点上丢失的块。

文件块(block):最基本的存储单位。对于文件内容而言,一个文件的长度大小size,那么从文件的0偏移开始,按照固定的大小,顺序对文件进行划分并编号,划分好的每一个称一个Block。HDFS默认BIock大小是128MB。

3.HDFS的读写文件流程

3.1 HDFS的读文件流程

3.2 HDFS的写文件流程

4.HDFS的Shell操作

HDFS提供了多种数据访问的方式,其中命令行是最简单的。HDFS Shell包含以下三种:

hadoop fs 参数
hadoop dfs 参数
hdfs dfs 参数

fs涉及到一个通用的文件系统,可以指向任何的文件系统如local file,HDFS等。但是dfs仅是针对HDFS的。
(1)fs是文件系统, dfs是分布式文件系统
(2)fs > dfs
(3)分布式环境情况下,fs与dfs无区别
(4)本地环境中,fs就是本地文件,dfs就不能用了

  • hadoop fs: 使用面最广,可以操作任何文件系统。
  • hadoop dfs和hdfs dfs:
    只能操作HDFS文件系统相关(包括与Local FS间的操作),hadoop dfs已经废弃,被hdfs dfs代替。

4.1 HDFS命令

常用命令

[root@hadoop001 ~]# hdfs dfs
[root@hadoop001 ~]# hdfs dfs -help
命令参数功能描述
-ls查看指定路径下的文件目录
-du统计目录下所有文件的大小
-mv移动文件
-co复制文件
-rm删除文件或空白文件夹
-put上传文件
-get下载文件
-text将源文件输出为文本格式
-moveFromLocal从本地移动文件
-copyFromLocal从本地复制文件
-copyToLocal从HDFS拷贝到本地
-appendToFile追加文件
-help帮助

命令帮助

[root@hadoop001 ~]# hdfs dfs -usage ls
Usage: hadoop fs [generic options] -ls [-d] [-h] [-R] [<path> ...]
[root@hadoop001 ~]# hdfs dfs -help ls
-ls [-d] [-h] [-R] [<path> ...] :
  List the contents that match the specified file pattern. If path is not
  specified, the contents of /user/<currentUser> will be listed. Directory entries
  are of the form:
        permissions - userId groupId sizeOfDirectory(in bytes)
  modificationDate(yyyy-MM-dd HH:mm) directoryName
  
  and file entries are of the form:
        permissions numberOfReplicas userId groupId sizeOfFile(in bytes)
  modificationDate(yyyy-MM-dd HH:mm) fileName
                                                                                 
  -d  Directories are listed as plain files.                                     
  -h  Formats the sizes of files in a human-readable fashion rather than a number
      of bytes.                                                                  
  -R  Recursively list the contents of directories. 

4.2 HDFS命令事件

4.2.1 启动Hadoop集群

[root@hadoop001 ~]# start-dfs.sh
[root@hadoop003 ~]# start-yarn.sh

4.2.2 -help:输出这个命令参数

[root@hadoop001 ~]# hdfs dfs -help ls

4.2.3 -ls: 显示目录信息

[root@hadoop001 ~]# hdfs dfs -ls /

4.2.4 -mkdir:在HDFS上创建目录

[root@hadoop001 ~]# hdfs dfs -mkdir -p /class/2020031031
[root@hadoop001 ~]# hdfs dfs -ls /
Found 1 items
drwxr-xr-x   - root supergroup          0 2022-04-24 00:15 /class
[root@hadoop001 ~]# hdfs dfs -ls /class
Found 1 items
drwxr-xr-x   - root supergroup          0 2022-04-24 00:15 /class/2020031031
[root@hadoop001 ~]# hdfs dfs -ls /class/2020031031

4.2.5 -copyFromLocal:从本地文件系统中拷贝文件到HDFS路径去

-put:等同于copyFromLocal

[root@hadoop001 ~]# touch mingdan.txt
[root@hadoop001 ~]# vi mingdan.txt 
#输入以下内容
刘世杰
翟金泉
[root@hadoop001 ~]# hdfs dfs -copyFromLocal mingdan.txt /class/2020031031

4.2.6 -cat:显示文件内容

[root@hadoop001 ~]# hdfs dfs -cat /class/2020031031/mingdan.txt
刘世杰
翟金泉

4.2.7 -appendToFile:追加一个文件到已经存在的文件末尾

[root@hadoop001 ~]# hdfs dfs -appendToFile mingdan.txt /class/2020031031/mingdan.txt
[root@hadoop001 ~]# hdfs dfs -cat /class/2020031031/mingdan.txt
刘世杰
翟金泉
刘世杰
翟金泉

4.2.7 -moveFromLocal:从本地剪切粘贴到HDFS

[root@hadoop001 ~]# hdfs dfs -moveFromLocal mingdan.txt /class/mingdan.txt
[root@hadoop001 ~]# hdfs dfs -cat /class/mingdan.txt
刘世杰
翟金泉

4.2.8 copyToLocal:从HDFS拷贝到本地

-get:等同于copyToLocal,就是从HDFS下载文件到本地

[root@hadoop001 ~]# hdfs dfs -copyToLocal /class/2020031031/mingdan.txt ./
[root@hadoop001 ~]# ls -ll
total 8
-rw-------. 1 root root 2744 Mar 28 06:18 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 Apr 18 18:24 Desktop
drwxr-xr-x. 2 root root    6 Apr 18 18:24 Documents
drwxr-xr-x. 2 root root    6 Apr 18 18:24 Downloads
-rw-r--r--  1 root root   40 Apr 24 16:25 mingdan.txt
drwxr-xr-x. 2 root root    6 Apr 18 18:24 Music
drwxr-xr-x. 2 root root    6 Apr 18 18:24 Pictures
drwxr-xr-x. 2 root root    6 Apr 18 18:24 Public
drwxr-xr-x. 2 root root    6 Apr 18 18:24 Templates
drwxr-xr-x. 2 root root    6 Apr 18 18:24 Videos
[root@hadoop001 ~]# cat mingdan.txt 
刘世杰
翟金泉
刘世杰
翟金泉

4.2.9 -cp :从HDFS的一个路径拷贝到HDFS的另一个路径

[root@hadoop001 ~]# hdfs dfs -cp /class/2020031031/mingdan.txt /
[root@hadoop001 ~]# hdfs dfs -cat /mingdan.txt
刘世杰
翟金泉
刘世杰
翟金泉

4.2.10 -mv:在HDFS目录中移动文件

[root@hadoop001 ~]# hdfs dfs -mkdir /class/2020031032
[root@hadoop001 ~]# hdfs dfs -mv /class/2020031031/mingdan.txt /class/2020031032
[root@hadoop001 ~]# hdfs dfs -cat /class/2020031032/mingdan.txt
刘世杰
翟金泉
刘世杰
翟金泉

4.2.11 -tail:显示一个文件的末尾

[root@hadoop001 ~]# hdfs dfs -tail /class/2020031032/mingdan.txt
刘世杰
翟金泉
刘世杰
翟金泉

4.2.12 -chgrp 、-chmod、-chown:Linux文件系统中的用法一样,修改文件所属权限

[root@hadoop001 ~]# hdfs dfs -chmod 777 /class/2020031032/mingdan.txt

窗口查看文件权限

4.2.13 -getmerge:合并下载多个文件

[root@hadoop001 ~]# vi log1.txt
[root@hadoop001 ~]# vi log2.txt
[root@hadoop001 ~]# vi log3.txt
#log1,log2,log3的内容分别是:log1, log2, log3
#把这三个文件上传道/user下面
[root@hadoop001 ~]# hdfs dfs -mkdir /user
[root@hadoop001 ~]# hdfs dfs -put log*.txt /user
[root@hadoop001 ~]# hdfs dfs -ls /user
Found 3 items
-rw-r--r--   3 root supergroup          5 2022-04-24 17:16 /user/log1.txt
-rw-r--r--   3 root supergroup          5 2022-04-24 17:16 /user/log2.txt
-rw-r--r--   3 root supergroup          5 2022-04-24 17:16 /user/log3.txt
[root@hadoop001 ~]hdfs dfs -getmerge /user/* /tmp/log.txt
#本地查看合并后的文件
[root@hadoop001 ~]# cat /tmp/log.txt 
log1
log2
log3

4.2.14 -rm:删除文件或文件夹

-rmdir:删除空目录

[root@hadoop001 ~]# hdfs dfs -cat /class/2020031032/mingdan.txt
刘世杰
翟金泉
刘世杰
翟金泉
[root@hadoop001 ~]# hdfs dfs -rm /class/2020031032/mingdan.txt
22/04/24 17:27:35 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
Deleted /class/2020031032/mingdan.txt
[root@hadoop001 ~]# 
[root@hadoop001 ~]# hdfs dfs -cat /class/2020031032/mingdan.txt
cat: `/class/2020031032/mingdan.txt': No such file or directory

[root@hadoop001 ~]# hdfs dfs -ls /class/
Found 3 items
drwxr-xr-x   - root supergroup          0 2022-04-24 17:05 /class/2020031031
drwxr-xr-x   - root supergroup          0 2022-04-24 17:27 /class/2020031032
-rw-r--r--   3 root supergroup         20 2022-04-24 16:24 /class/mingdan.txt
[root@hadoop001 ~]# hdfs dfs -rmdir /class/2020031032
[root@hadoop001 ~]# hdfs dfs -ls /class/
Found 2 items
drwxr-xr-x   - root supergroup          0 2022-04-24 17:05 /class/2020031031
-rw-r--r--   3 root supergroup         20 2022-04-24 16:24 /class/mingdan.txt


[root@hadoop001 ~]# hdfs dfs -ls /
Found 4 items
drwxr-xr-x   - root supergroup          0 2022-04-24 17:29 /class
-rw-r--r--   3 root supergroup         40 2022-04-24 17:00 /mingdan.txt
drwxr-xr-x   - root supergroup          0 2022-04-24 17:22 /tmp
drwxr-xr-x   - root supergroup          0 2022-04-24 17:16 /user
[root@hadoop001 ~]# hdfs dfs -rm -help
-rm: Illegal option -help
Usage: hadoop fs [generic options] -rm [-f] [-r|-R] [-skipTrash] <src> ...
[root@hadoop001 ~]# hdfs dfs -rm  /class
rm: `/class': Is a directory
[root@hadoop001 ~]# hdfs dfs -rm -r /class
22/04/24 17:32:39 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
Deleted /class

4.2.15 -du统计文件夹的大小信息

[root@hadoop001 ~]# hdfs dfs -du /user
5  /user/log1.txt
5  /user/log2.txt
5  /user/log3.txt
[root@hadoop001 ~]# hdfs dfs -du -s /user
15  /user

4.2.16 -setrep:设置HDFS中文件的副本数量

在这里插入图片描述

[root@hadoop001 ~]# hdfs dfs -setrep 2 /user/log1.txt
Replication 2 set: /user/log1.txt

在这里插入图片描述
在这里插入图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-26 11:47:11  更:2022-04-26 11:48:48 
 
开发: 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年11日历 -2024/11/24 3:20:34-

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