第二章 HDFS基础入门

目录

一、HDFS简介

1.发展过程

2.基本概念

3.特点

二、HDFS架构

1.组成结构

三、HDFS的shell操作

1.Hadoop集群管理脚本

2.HDFS管理命令fs

(1)操作HDFS文件/目录命令

(2)查看文件内容命令 

(3)追加和合并文件内容命令 

(4)修改权限命令

(5)统计命令 

(6)设置副本命令 


一、HDFS简介

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

1.发展过程

(1)传统文件系统

           将数据文件直接存储一台服务器

  • 会遇到的问题:

① 数据量越来越大时,会遇到存储瓶颈

② 文件过大,上传和下载非常耗时

(2)分布式文件系统 —— 扩容

解决 → 问题① 存储瓶颈

方法:扩容   -即扩大规模达到分布式存储

两种扩容方法纵向扩容——增加磁盘和内存 、横向扩容——增加服务器数量

(3)分布式文件系统

解决 → 问题② 耗时

方法:将大文件切分为多个数据块 数据块并行存储

(4)HDFS雏形

第(3)个的文件通过数据块分别存储在服务器集群中,如何获得一个完整的文件呢?

方法:增加一台服务器 专门记录文件被切割后的数据块信息以及数据块的存储位置信息

(5)HDFS

问题:存储数据块的服务器中有一台宕机 无法正常获取文件 即单点故障

方法:备份

服务器D : NameNode     维护文件系统内所有文件和目录的相关信息

服务器A B C:DataNode  存储数据块

2.基本概念

    易于扩展的分布式文件系统,运行在成百上千台低成本的机器上

是一个文件系统    用于存储文件    通过统一的命名空间 —— 目录树定位文件

分布式的,由多个服务器联合起来实现其功能

(1)NameNode(名称节点/主节点)

    HDFS集群的主服务器

  • 一旦关闭,就无法访问Hadoop集群
  • 元数据的形式进行管理和存储,用于维护文件系统名称管理客户端对文件的访问
  • 记录对文件系统名称空间/属性的任何更改操作
  • 存储:HDFS负责整个数据集群的管理,并且在配置文件中可以设置备份数量

(2)DataNode(数据节点)

    HDFS集群的从服务器

  • 存储数据块的地方
  • DataNode机器需要配置大量磁盘空间
  • DataNode和NameNode要保持不断地通信 : DataNode在客户端/NameNode的调度下→ 存储并检索数据块 → 对数据块进行创建、删除等操作 → 定期向NameNode发送所存储的数据块列表

(3)block(数据块)

每个磁盘有默认的数据块大小 是磁盘进行数据读/写的最小单位

  • 在Hadoop2.X版本中,默认一个块的大小是128M ,且备份3份
  • 每个块尽可能存储于不同的DataNode
  • 在HDFS中存储的文件可以划分为多个分块,每个分块可以成为一个独立的存储单元
  • HDFS中小于一个块大小的文件并不会占据整个HDFS数据块

按块存储的好处:

文件的大小可以大于网络中任意一个磁盘的容量 文件的所有块不需要存储在同一个磁盘上

② 简化存储管理

③ 冗余备份:每个块有多个备份(默认3个),分别保存到相互独立的机器

(4)rack(机架)

存放部署Hadoop集群服务器的机架

(5)metadata(元数据)

分为三种信息形式

维护HDFS中文件和目录的信息

文件名、目录名、父目录信息、文件大小、创建时间、修改时间

记录文件内容,存储相关信息

文件分块情况、副本个数、每个副本所在的DataNode信息

记录HDFS中所有DataNode的信息,用于DataNode管理

3.特点

(1)优点

高容错性

a. 数据自动保存多个副本

b. 副本丢失后,自动恢复

  DataNode节点周期性向NameNode发送心跳信号 → 网络发生异常时,可能导致DataNode和NameNode失去通信 → 心跳检测机制,发现DataNode宕机,副本丢失 → HDFS从其他DataNode上的副本自动恢复

流式数据访问

应用程序能以流的形式访问数据集

支持超大文件

高数据吞吐量

一次写入,多次读取

一旦创建、写入、关闭后,就不能进行修改,只能追加

可构建在廉价的机器上

(2)缺点

高延迟

不适合用于低延迟数据访问的场景

不适合小文件存取场景

在Hadoop系统,小文件定义:远小于HDFS的数据块大小(128M)的文件

每个文件会产生各自的元数据,NameNode存储这些信息 → 小文件过多,容易导致NameNode存储出现瓶颈

a.  元信息存储在NameNode内存中,一个节点内存有限,存取大量小文件消耗大量的寻道时间

b. 类比拷贝大量小文件与拷贝同等大小的一个大文件

不适合并发写入

不支持并发多用户的写操作,只能在文件末尾追加数据

二、HDFS架构

1.组成结构

(1)Client 客户端

HDFS提供了各种各样的客户端,包括命令行接口、JAVA API等

client通过与NameNode和DataNode交互访问HDFS中的文件

主要职责:

(1)文件切分

文件上传至HDFS时,其将文件切分成一个一个的block,然后进行存储

(2)与NameNode交互

获取文件的位置信息

(3)与DataNode交互

读取或写入数据

(4)提供一些命令管理HDFS

启动/关闭HDFS

(5)可以通过一些命令去访问HDFS

(2)NameNode 名称节点

HDFS的master架构 ——一个主管、管理者

主要职责:

(1)响应客户端读/写请求

(2)负责HDFS文件系统的管理工作

       文件block管理和名称空间管理

       ①文件block管理

         

       ②名称空间管理

(3)SecondaryNameNode 检查点节点

(4)DataNode 数据节点

三、HDFS的shell操作

1.Hadoop集群管理脚本

     shell俗称 “ 壳 ”,指为使用者提供操作界面的软件,通过接收用户输入的命令执行相应的操作

常用的具体的某个命令:

   ① fs :HDFS管理命令

   ② jar : 作业提交命令

   ③ version :查看Hadoop版本

2.HDFS管理命令fs

  •   使用命令前,必须启动Hadoop集群
  •   命令均是在Linux命令行窗口界面操作
  •   [ ]表示可选参数 < >表示必须参数

hadoop fs -help 展示HDFS支持的所有命令行参数

hadoop fs -help [cmd...]   显示指定命令的帮助信息

(1)操作HDFS文件/目录命令

<1> ls

查看指定路径的当前目录结构

 hadoop fs -ls [-d] [-h] [-R] <path>

① -d :将目录显示为普通文件 

② -h :使用便于操作人员读取的单位信息格式

③ -R :递归显示所有子目录的信息

<2> mkdir

指定路径创建子目录

hadoop fs -mkdir [-p] <path>

-p:创建子目录时先检查路径是否存在,若不存在,创建相应的各级目录(即创建多级目录

<3> put / copyFromLocal

本地系统的文件或文件夹复制HDFS上面

hadoop fs -put [-f] [-p] <localsrc> <dst>

hadoop fs -copyFromLocal [-f] [-p] <localsrc> <dst>

① -f :覆盖目标文件

② -p:保留访问和修改时间、权限 

<4> get / copyToLocal

HDFS的文件或文件夹复制本地文件系统

hadoop fs -get [-p] [-ignoreCrc] [-crc] <src>...<localdst/>

hadoop fs -copyToLocal [-p] [-ignoreCrc] [-crc] <src>...<localdst/>

① -p :保留访问和修改时间、权限

② -ignoreCrc :跳过对下载文件的CRC检查

③ -crc :为下载的文件写的CRC校验和,在本地文件系统中生成一个xxx.crc的校验文件

<5> cp

将指定文件从HDFS的一个路径复制HDFS的另一个路径

hadoop fs -cp [-f] [-p] <src>...<dst>

① -f : 覆盖目标文件

② -p :保留访问和修改时间、权限

<6> mv

HDFS目录中移动文件,不允许跨文件系统移动文件

hadoop fs -mv <src>...<dst>

<7> rm

 在HDFS删除指定文件/文件夹

hadoop fs -rm [-f] [-r|-R] [-skipTrash] <src>

① -f :覆盖目标文件

② -r|-R :递归删除目录

③ -skipTrash:绕过回收站(如果已经启用),立即删除指定的文件或文件夹

<8> rmdir

删除HDFS上的空目录

hadoop fs -rmdir <dir>

(2)查看文件内容命令 

<1> cat

路径指定文件的内容输出stdout

hadoop fs -cat [-ignoreCrc] <src>

<2> tail 

指定文件最后1K字节的内容输出stdout,一般用于查看日志

hadoop fs -tail [-f] <file> 

-f :用于显示文件增长时附加的数据 

(3)追加和合并文件内容命令 

<1> appendToFile

 追加一个/多个文件内容到已经存在的文件末尾

hadoop fs -appendToFile <localsrc>...<dst>

(HDFS文件不能进行修改,但是可以进行追加) 

<2> getmerge 

合并下载多个文件

指定一个源目录和一个目标文件 将源目录所有的文件合并且排序地连接成本地的一个目标文件

hadoop fs -getmerge [-nl] <src> <localdst> 

-nl :用于在每个文件的末尾添加一个换行符

(4)修改权限命令

<1> chmod

改变文件的权限

此命令的使用者必须是文件的所有者或者超级用户 

hadoop fs -chmod [-R] PATH 

-R :目录下所有的都将改变权限

<2> chown

改变文件的拥有者/所属组

hadoop fs -chown [-R] [OWNER][:[GROUP]] PATH 

-R :使改变在目录结构下递归进行 

(5)统计命令 

<1> count 

 统计指定目录下的目录数文件数字节数

hadoop fs -count [-h] <path> 

-h :使用便于操作人员读取的单位信息格式 

<2> df 

统计文件系统容量可用空间已用空间信息 

hadoop fs -df [-h] [<path>...] 

 -h :使用便于操作人员读取的单位信息格式 

<3> du 

显示指定目录所有文件和文件夹大小 

 hadoop fs -du [-s] [-h] <path>

① -s :不显示指定目录下每个单独文件的大小,只统计目录所占空间的总大小

② -h :使用便于操作人员读取的单位信息格式 

(6)设置副本命令 

setrep

改变HDFS中文件的副本系数 

hadoop fs -setrep [-R] <rep> <path> 

-R:用于递归改变指定目录下所有文件的副本系数 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值