07-HDFS入门及shell命令

这篇具有很好参考价值的文章主要介绍了07-HDFS入门及shell命令。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 文件系统

  • 是一种存储和组织数据的方法,它使得文件访问和查询变得容易
  • 使得文件和树形目录的抽象逻辑概念代替了磁盘等物理设备使用数据块的概念,用户使用文件系统来保存数据不必关心数据底层存在硬盘哪里,只需记住这个文件的所属目录和文件名
  • 文件系统通常使用磁盘和光盘这样的存储设备,并维护文件在设备中的物理位置。
  • 文件系统是一套实现了数据的存储、分级组织、访问和获取等操作的抽象数据类型(Abstract data type)

文件名

​ DOS操作系统中文件名由文件主名和扩展名组成,之间以一个小圆点隔开

​ 文件名可用于用于定位存储位置、区分不同文件,计算机实行按名存取的操作方式

​ 某些符号因其有特殊含义,一般不允许出现在文件名中

元数据

​ 元素据(metadata)又称为解释性数据,记录数据的数据

​ 文件系统元数据一般指文件大小、最后修改时间、底层存储位置、属性、所属用户、权限等信息

文件系统分类

  • 基于磁盘的文件系统

是在非易失介质上(磁盘、光盘)存储文档的经典方式。用以在多次会话之间保持文件的内容。包括ext2/3/4、xfs、ntfs、iso9660等众所周知的文件系统。Linux系统可以使用df -Th查看

  • 虚拟文件系统

在内核中生成的文件系统,比如proc

proc文件系统是一个虚拟文件系统,通过它可以使用一种新的方法在Linux内核空间和用户间之间进行通信

  • 网络文件系统

网络文件系统(NFS,network file system)是一种将远程主机上的分区(目录)经网络挂载到本地系统的一种机制

允许本地计算机访问另一台计算机上的数据,对此类文件系统中文件的操作都通过网络连接进行

2 分布式文件系统HDFS

2.1 HDFS简介

  • HDFS(Hadoop Distributed File System)Hadoop分布式文件系统。是Apache Hadoop核心组件之一,作为大数据生态圈最底层的分布式存储服务而存在。
  • 分布式文件系统解决大数据如何存储的问题。分布式意味着是横跨在多台计算机上的存储系统。
  • HDFS是一种能够在普通硬件上运行的分布式文件系统,它是高度容错,适用于具有大数据集的应用程序,它非常适于存储大型数据(比如 TB PB)
  • HDFS使用多台计算机存储文件,并且提供统一的访问接口,像是访问一个普通的文件系统一样使用分布式文件系统

2.2 HDFS设计目标

  • **硬件故障(Hardware Failure)**是常态,HDFS可能有成百上千的服务器组成,每一个组件都有可能出现故障。因此故障检测和自动快速恢复是HDFS的核心架构目标。
  • HDFS上的应用主要是以流式读取数据(Streaming Data Access)。HDFS被设计成用于批处理,而不是用户交互式的。相较于数据访问的反应时间,更注重数据访问的高吞吐量。
  • 典型的HDFS文件大小是GB到TB级别的。所有,HDFS被调整成支持大文件(Large Data Sets)。他应该提供很高的聚合数据带宽,一个集群中支持数百个节点,一个集群中还应该支持千万级别的文件。
  • 大部分HDFS应用对文件要求是write-one-read-many访问模型(一次写入多次读取)。一个文件一旦创建、写入、关闭之后就不需要修改了。这一假设简化了数据一致性问题,使高吞吐量的数据访问成为可能。
  • 移动计算的代价比之移动数据的代价低。一个应用请求的计算,离它操作的数据越近就越高效。将计算移动到数据附件,比之移动数据到应用所在显然更好。
  • HDFS被设计为可从一个平台轻松移植到另一个平台。这有利于将HDFS广泛用作大量应用程序的首选平台。

2.3 HDFS应用场景

适用场景

大文件

数据流式访问

一次写入多次读取

低成本部署,廉价pc

高容错

不适用场景

小文件

数据交互式访问

频繁任意修改

低延迟处理

2.4 HDFS重要特性

1、主从架构

HDFS采用master/slave架构。一般一个HDFS集群是有一个NameNode和一定数目的DataNode组成。

NameNode是HDFS主节点,DataNode是HDFS从节点,两种角色各司其职,共同协调完成分布式的文件存储服务

2、分块存储机制

HDFS中的文件在**物理上分块存储(block)**的,块的大小通过配置参数来规则,参数位于hdfs-default.xml中dfs.blocksize默认大小是128M(134217728)

3、副本机制

文件的所有block都会有副本。每个文件的block大小(dfs.blocksize)和副本系数(dfs.replication)都是可配置的。副本系数可以在文件创建时指定,也可以在之后通过命令改变。

默认 dfs.replication 的值是3,也就是额外再复制两份,连同本身共3副本。

4、namespace

HDFS支持传统的层次型文件组织结构。用户可以创建目录,然后将文件保存在这些目录里。文件系统名字空间的层次结构和大多数现有的文件系统类似:用户可以创建、删除、、移动或重命名文件。

NameNode负责维护文件系统的namespace名称空间,任何对文件系统名称空间或属性的修改都将被NameNode记录下来

HDFS会给客户端提供一个统一的抽象目录树,客户端提供路径来访问文件。

形如:hdfs://namenode:port/dir-a/dir-b/dir-c/file.data

5、元数据管理

在HDFS中,NameNode管理的元数据具有两种类型:

  • 文件自身属性信息

文件名称、权限、修改时间、文件大小、复制因子、数据块大小

  • 文件块位置映射信息

记录块和DataNode之间的映射信息,即哪个块位于哪个节点上

6、数据块存储

文件的各个block的具体存储管理由DataNode节点承担。每一个block都可以在多个DataNode上存储。

7、HDFS的块大小

HDFS中的文件在物理上是分块存储(Block),块的大小可以通过配置参数(dfs.blocksize)来设置,默认大小在Hadoop2.x/3.x版本是128M,3.x版本是64M

例如:

​ 如果寻址时间为10ms,传输时间=10ms/0.01=1s(寻址时间为传输时间的1%为最佳),若目前磁盘传输速率为100MB/s,则block块大小 = 1s * 100MB/s = 100MB,所有块大小设置为128M比较合适

  • HDFS的块设置太小,会增大寻址时间(寻址时间大于传输时间),程序一直在找块的开始位置
  • HDFS的块设置太大,从磁盘传输数据的时间会明显大于定位这个块开始位置所需的时间(传输时间远大于寻址时间),会导致处理数据非常慢
  • 寻址时间与传输时间的比例为1%时,为最佳状态
  • HDFS的块大小设置主要取决于磁盘传输速率

3 HDFS shell CLI

Hadoop提供了文件系统的shell命令行客户端,使用方法如下:

hdfs [options] subcommand [subcommand options] 
	
subcommand: admin commands / client command / daemon commands

跟文件系统读写相关的命令是 hdfs dfs [generic options]

  • HDFS Shell CLI支持操作多种文件系统,包括本地文件系统(file:)、分布式文件系统(hdfs://nn:8020)等
  • 操作的是什么文件系统取决于URL中的前缀协议
  • 如果没有指定前缀,则将会读取环境变量中的fs.defaultFS属性,以该属性值作为默认文件系统
hdfs dfs -ls file:///      # 操作本地文件系统(客户端所在的机器)
hdfs dfs -ls hdfs://node1:8020/    # 操作HDFS分布式文件系统
hdfs dfs -ls /     # 直接跟目录,没有指定协议,将加载读取fs.defaultFS属性默认值

3.1 HDFS Shell CLI客户端

hadoop dfs、hdfs dfs、hadoop fs 三者区别

  • hadoop dfs 只能操作HDFS文件系统(包括与Local FS间的操作),不过已经Deprecated
  • hdfs dfs 只能操作HDFS文件系统(包括与Local FS间的操作),常用
  • hadoop fs 可操作任意操作系统(不仅仅是hdfs文件系统,适用范围更广)

目前版本官方推荐使用hadoop fs

3.2 HDFS Shell 常用命令

-mkdir创建目录

hadoop fs -mkdir [-p] <path>
# path 为待创建目录
# -p 表示沿着路径创建父目录

-ls 查看指定目录下内容

hadoop fs -ls [-h] [-R] [<path> ... ]
# path 指定目录路径
# -h 人性化显示文件size
# -R 递归查看指定目录及其子目录 

-put上传文件至指定目录下

hadoop fs -put [-f] [-p] <localsrc>... <dst>
# -f 覆盖目录文件(如果目标文件存在,则覆盖)
# -p 保留访问和修改时间,所有权和权限
# localsrc 本地文件系统(客户端所在机器)
# dst 目标文件系统(HDFS)

-copyFromLocal从本地文件系统拷贝文件至HDFS

(等同于put,习惯上使用put)

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

-moveFromLocal剪切本地文件系统文件至HDFS

(即从本地剪切文件至HDFS)

hadoop fs -moveFromLocal <localsrc>... <dst>
# 和-put功能相似,只不过上传结束会删除源数据

-appendToFile追加文件至一个已存在的文件中

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

-cat\-head\-tail查看HDFS文件内容

hadoop fs -cat <src> ...
# 对于大文件内容读取,慎重
hadoop fs -head <file>
# 查看文件前1kB的内容
hadoop fs -tail [-f] <file>
# 查看文件最后1kB的内容
# -f 选择可以动态显示文件中追加的内容

-get\coptToLocal\-getmerge下载HDFS文件

(从HDFS拷贝文件至本地)

hadoop fs -get [-f] [-p] <src>... <localdst>
# 下载文件至本地文件系统指定目录,localdst必须是目录
# -f 覆盖目标文件(如果本地文件系统存在该文件,则覆盖) 
# -p 保留访问和修改时间,所有权和权限

hadoop fs -copyToLocal [-f] [-p] [-ignoreCrc] [-crc] <src> ... <localdst> 
# 等同于get,习惯上使用get
hadoop fs -getmerge [-n1] [-skip-empty-file] <src> <localdst>
# 下载多个文件合并到本地文件系统的一个文件中
# -n1 表示在每个文件的末尾添加换行符

-cp拷贝HDFS文件

hadoop fs -cp [-f] <src> ... <dst>
# -f 覆盖目标文件(若目标文件存在,则覆盖)

-appendToFile追加数据到HDFS文件中

hadoop fs -appendToFile <localsrc>... <dst>
# 将所给给定的本地文件的内容追加到给定的dst文件
# 若dst文件不存在,将创建文件
# 如果<localsrc>为-,则输入为从标准输入中读取

-df查看HDFS磁盘空间

hadoop fs -df [-h] [<path>...]
# 显示文件系统的容量,可以空间和已用空间

-du查看HDFS文件使用的空间量

hadoop fs -du [-s] [-h] <path>...
# -s 表示显示指定路径文件长度的汇总摘要,而部署单个文件的摘要
# -h 表示人性化显示

-mvHDFS数据移动

hadoop fs -mv <src> ... <dst>
# 移动文件至指定文件夹
# 可以使用该命令移动数据、重命名文件

-rm -r删除文件/文件夹

hadoop fs -rm -r 路径
# -r 表示递归

-setrep修改HDFS文件副本个数

hadoop fs -setrep [-R] [-w] <rep> <path>...
# 修改指定文件的副本个数
# -R 表示递归,修改文件夹及其下所有
# -w 客户端是否等待副本修改完毕

说明:

​ 这里设置的副本数只是记录在NameNode的元数据中,是否真的会有这么多副本,还得看DataNode的数量。因为目前只有3台设备,最多也就3个副本,只有节点数的增加到10台时,副本数才能达到10。

-chgrp\-chmod\-chown修改文件权限

-chgrp、-chmod、-chown:Linux文件系统中的用法一样文章来源地址https://www.toymoban.com/news/detail-646200.html

hadoop fs  -chmod 666 文件所在路径
hadoop fs  -chown  nhk:nhk 文件所在路径

到了这里,关于07-HDFS入门及shell命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Hadoop的安装和使用,Windows使用shell命令简单操作HDFS

    目录 1,Hadoop简介 2,分布式文件系统HDFS 1. HDFS简介 2.HDFS体系结构 3,Hadoop的安装 1.使用WEB管理页面操作HDFS 2.使用命令操作HDFS  4,HDFS的基本使用方法 1)启动hadoop,为当前登录的Windows用户在HDFS中创建用户目录 2)在用户名user/zhangna下创建test目录 3)将windows操作系统本地的一个

    2024年02月04日
    浏览(50)
  • 0202hdfs的shell操作-hadoop-大数据学习

    以下命令执行默认配置了hadoop的环境变量,且使用新命令。 一键启停脚本 独立进程启停 2.1 HDFS文件系统基本信息 HDFS作为分布式存储的文件系统,有其对数据的路径表达式。如果熟悉Linux文件系统,可以对比学习。 HDFS同Linux系统一样,均是以/作为根目录的组织形式 如何区分

    2024年02月10日
    浏览(51)
  • 大数据技术之Hadoop:使用命令操作HDFS(四)

    目录 一、创建文件夹 二、查看指定目录下的内容 三、上传文件到HDFS指定目录下 四、查看HDFS文件内容 五、下载HDFS文件 六、拷贝HDFS文件 七、HDFS数据移动操作 八、HDFS数据删除操作 九、HDFS的其他命令 十、hdfs web查看目录 十一、HDFS客户端工具 11.1 下载插件 11.2 本地安装Had

    2024年02月09日
    浏览(45)
  • 【Hadoop】-HDFS的Shell操作[3]

    目录 前言 一、HDFS集群启停命令 1.一键启停脚本可用 2.独立进程启停可用  二、文件系统操作命令 1、创建文件夹 2、查看指定目录下内容 3、上传文件到HDFS指定目录下  4、查看HDFS文件内容 5、下载HDFS文件 6、拷贝HDFS文件 7、追加数据到HDFS文件中 8、HDFS数据移动操作 9、HDFS数

    2024年04月26日
    浏览(44)
  • Hadoop大数据从入门到实战(二)分布式文件系统HDFS

    头歌实践教学平台 教学课堂 大数据从入门到实战 - 第2章 分布式文件系统HDFS 任务描述 本关任务:使用 Hadoop 命令来操作分布式文件系统。 编程要求 在右侧命令行中启动 Hadoop ,进行如下操作。 在 HDFS 中创建 /usr/output/ 文件夹; 在本地创建 hello.txt 文件并添加内容:“ HDFS的

    2024年02月12日
    浏览(43)
  • 【Hadoop-HDFS】HDFS常用操作命令

    hadoop fs -ls / 普通创建: hadoop fs -mkdir /xiaolin 递归创建: hadoop fs -mkdir -p /xiaolin/xiaoyin mkdir xuan.txt hadoop fs -moveFromLocal xuan.txt /xiaolin hadoop fs -copyFromLocal xuan.txt / hadoop fs -put xuan.txt / 文件名称相同时覆盖hdfs上的文件: -f hadoop fs -put -f xuan.txt / hadoop fs -copyToLocal /xiaolin ./ hadoop fs -get

    2024年02月05日
    浏览(51)
  • Hadoop Hdfs基本命令

    1.hadoop 安装问题处理 2.hdfs 基本命令 3. 上传/下载文件和文件夹 1.hadoop安装问题处理 如果安装有进程无法启动,如下图 重新检查6个配置文件 Core-site.xml hdfs-site.xml hadoop-env.sh yarn-site.xml workers yarn-site.xml 来到hadoop313目录 清空data和yarndata 重新初始化 测试 2.hadoop hdfs基本命

    2024年02月11日
    浏览(42)
  • Hadoop-5-HDFS常用命令

    第一类:文件路径增删改查系列: hdfs dfs -mkdir dir 创建文件夹 hdfs dfs -rmr dir 删除文件夹dir hdfs dfs -ls 查看目录文件信息 hdfs dfs -lsr 递归查看文件目录信息 hdfs dfs -stat path 返回指定路径的信息 第二类:空间大小查看系列命令: hdfs dfs -du -h dir 按照适合阅读的形式人性化显示文件

    2024年02月09日
    浏览(41)
  • 从零开始的Hadoop学习(五)| HDFS概述、shell操作、API操作

    1.1 HDFS 产出背景及定义 1) HDFS 产生背景 随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切 需要一种系统来管理多台机器上的文件 ,这就是分布式文件管理系统。 HDFS只是分布式文件管理系统

    2024年02月10日
    浏览(52)
  • hadoop命令行查看hdfs容量剩余

    #需要有superuser权限才能执行 hadoop dfsadmin -report #Remaining是剩余的容量 也可以通过浏览器访问50070端口查看

    2024年02月15日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包