栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Hadoop | HDFS学习笔记(一)HDFS优缺点、NN+DN+2NN组成架构、block文件块 | Shell操作 | HDFS常用命令汇总

Hadoop | HDFS学习笔记(一)HDFS优缺点、NN+DN+2NN组成架构、block文件块 | Shell操作 | HDFS常用命令汇总

参考资料

视频资料

一、HDFS 背景以及定义

背景: 数据量越来越大,操作系统存不了所有数据,需要能管理多台机器上的文件的系统,即分布式文件管理系统,HDFS就是其中的一种。

定义: HDFS,全称 Hadoop Distributed File System,是一个文件系统,通过 目录树 来定位文件,具有分布性,是由多个服务器联合起来实现的存储功能。

适用场景:一次写入,多次读出。 即一个文件经过创建、写入和关闭后就不需要改变的情况。

二、HDFS 优缺点
2.1 优点

高容错性: 数据自动保存多个副本,可增加副本来提高容错性,某个副本丢失后,可自动恢复。

适合处理大数据:(1)数据规模:能处理达到GB、TB甚至PB级别的数据;(2)能处理百万规模以上的文件数量。

可构建在廉价机器上: 通过多副本机制,提高可靠性。

2.2 缺点

不适合低延时数据访问,比如无法做到毫秒级存储数据。无法高效的对大量小文件进行存储。

存储大量小文件时,会占用 NameNode节点大量的内存来存储文件目录和块信息。小文件存储的寻址时间会超过读读取时间,违反了HDFS设计理念。 不支持并发写入、文件随机修改

不允许多个线程对同一个文件进行写操作仅支持数据 append(追加),不允许文件的随机修改 三、HDFS组成架构


图片来自 Hadoop3.1.3 HDFS官方文档

3.1 NameNode(NN)

Master,是主管、管理者的身份

    管理HDFS的名称空间配置副本策略管理数据块(Block)映射信息处理客户端读写请求
3.2 DataNode (DN)

Slave,执行NameNode下达的命令

    存储实际的数据块执行数据块的读 / 写操作
3.3 Client

客户端,shell客户端或者web客户端

    文件切分。文件上传到 HDFS 时, Client 将文件切分成一个一个的Block,然后上传与 NameNode 交互,获取文件的位置信息与 DataNode 交互,读取或者写入数据Client 提供一些命令来管理 HDFS,比如 NameNode 格式化Client 可以通过一些命令来访问 HDFS,比如对 HDFS 增删改查操作
3.4 SecondaryNameNode

不是 NameNode的热备,当NameNode挂掉时,并不能马上替换NameNode并提供服务。

    辅助 NameNode,分担其工作量,比如定期合并 Fsimage 和 Edits,并推送给NameNode在紧急情况下,可辅助恢复NameNode的状态
四、HDFS 文件块大小
4.1 默认块大小

HDFS中的文件在物理上是分块存储(Block),块的大小可通过配置参数(dfs.blocksize)来决定,在hdfs-default.xml[参考]中的默认配置如下:


  dfs.blocksize
  134217728
  
      The default block size for new files, in bytes.
      You can use the following suffix (case insensitive):
      k(kilo), m(mega), g(giga), t(tera), p(peta), e(exa) to specify the size (such as 128k, 512m, 1g, etc.),
      Or provide complete size in bytes (such as 134217728 for 128 MB).
  

块大小默认为134217728 单位是 Byte 字节

换算成 MB 就是: 134217728 / 1024 / 1024 = 128 MB

在 Hadoop1.x版本的时候块大小是 64MB,之后的2.x和3.x都是128MB

若寻址时间约为10ms,即查找到目标block的时间为10ms。

寻址时间为传输时间的1%时,则为最佳状态,因此传输时间为:10ms / 0.01 = 1000ms=1s

最佳状态:0.01 = 寻址时间 / 传输时间

又因为目前磁盘的传输速率普遍为 100MB/s

由 1s * 100 MB/s 计算结果为 100 MB,所以块大小默认为128MB是比较合适的。

4.2 文件块大小问题

HDFS块设置太小导致的问题:

增加寻址时间,程序会花更多时间去寻找块的开始位置

HDFS块设置太大导致的问题:

从磁盘传输数据的时间会明显大于定位这块开始位置所需的时间 ,导致程序在处理这块数据时会非常慢。 五、HDFS 的Shell操作


基本语法(有两种):

hadoop fs 具体命令

hdfs dfs 具体命令
[root@hadoop101 ~]# hadoop fs
Usage: hadoop fs [generic options]
	[-appendToFile  ... ]
	[-cat [-ignoreCrc]  ...]
	[-checksum  ...]
	[-chgrp [-R] GROUP PATH...]
	[-chmod [-R]  PATH...]
	[-chown [-R] [OWNER][:[GROUP]] PATH...]
	[-copyFromLocal [-f] [-p] [-l] [-d] [-t ]  ... ]
	[-copyToLocal [-f] [-p] [-ignoreCrc] [-crc]  ... ]
	[-count [-q] [-h] [-v] [-t []] [-u] [-x] [-e]  ...]
	[-cp [-f] [-p | -p[topax]] [-d]  ... ]
	[-createSnapshot  []]
	[-deleteSnapshot  ]
	[-df [-h] [ ...]]
	[-du [-s] [-h] [-v] [-x]  ...]
	[-expunge]
	[-find  ...  ...]
	[-get [-f] [-p] [-ignoreCrc] [-crc]  ... ]
	[-getfacl [-R] ]
	[-getfattr [-R] {-n name | -d} [-e en] ]
	[-getmerge [-nl] [-skip-empty-file]  ]
	[-head ]
	[-help [cmd ...]]
	[-ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [-e] [ ...]]
	[-mkdir [-p]  ...]
	[-moveFromLocal  ... ]
	[-moveToLocal  ]
	[-mv  ... ]
	[-put [-f] [-p] [-l] [-d]  ... ]
	[-renameSnapshot   ]
	[-rm [-f] [-r|-R] [-skipTrash] [-safely]  ...]
	[-rmdir [--ignore-fail-on-non-empty]  ...]
	[-setfacl [-R] [{-b|-k} {-m|-x } ]|[--set  ]]
	[-setfattr {-n name [-v value] | -x name} ]
	[-setrep [-R] [-w]   ...]
	[-stat [format]  ...]
	[-tail [-f] [-s ] ]
	[-test -[defsz] ]
	[-text [-ignoreCrc]  ...]
	[-touch [-a] [-m] [-t TIMESTAMP ] [-c]  ...]
	[-touchz  ...]
	[-truncate [-w]   ...]
	[-usage [cmd ...]]

Generic options supported are:
-conf         specify an application configuration file
-D                define a value for a given property
-fs  specify default filesystem URL to use, overrides 'fs.defaultFS' property from configurations.
-jt   specify a ResourceManager
-files                 specify a comma-separated list of files to be copied to the map reduce cluster
-libjars                specify a comma-separated list of jar files to be included in the classpath
-archives           specify a comma-separated list of archives to be unarchived on the compute machines

The general command line syntax is:
command [genericOptions] [commandOptions]

5.1 准备工作

在NameNode节点启动 HDFS就行,因为暂时没用到MapReduce执行任务,所以Yarn可以不启动。

cd $HADOOP_HOME
./sbin/start-dfs.sh
5.2 HDFS命令大全

表中命令前需加hadoop fs 或者 hdfs dfs,注意fs/dfs后有一个空格。

5.2.1 上传
命令作用描述
-help [命令]查看某个命令的使用提示
-overFromLocal [本地文件位置] [HDFS文件目录]将本地文件移动到HDFS
-copyFromLocal [本地文件位置] [HDFS文件目录]将本地文件复制到HDFS
-put [本地文件位置] [HDFS文件目录]将本地文件复制到HDFS,等同于-copyFromLocal命令
-appendToFile [本地文件位置] [HDFS文件位置]追加一个文件到已存在的文件末尾
5.2.2 下载
命令作用描述
-copyToLocal [HDFS文件位置] [本地文件目录]将HDFS的文件拷贝到本地
-get [HDFS文件位置] [本地文件目录]将HDFS的文件拷贝到本地,等同于-copyToLocal命令
5.2.3 其他常用命令
命令作用描述
-ls [HDFS文件目录]查看HDFS目录的信息
-cat [HDFS文件位置]显示HDFS文件内容
-chgrp/-chmod/-chown [HDFS文件位置]和LInux文件系统一样,修改HDFS指定文件的权限
-mkdir [HDFS文件位置]在HDFS指定位置创建文件夹
-cp [HDFS文件1的位置] [HDFS文件目录]将HDFS的一个文件拷贝到另一个文件路径
-mv [HDFS文件1的位置] [HDFS文件目录]将HDFS的一个文件移动到另一个文件路径
-tail [HDFS文件位置]显示HDFS中指定文件的末尾1KB大小的数据
-rm [HDFS文件位置]HDFS删除文件或文件夹
-rm -r [HDFS文件位置HDFS递归删除目录及目录里面的内容
-du [HDFS文件目录]HDFS 统计文件夹的大小信息,单位Byte字节

注: du命令返回的结果通常是在当前节点的大小和所有副本里的总大小,单位是Byte字节,比如:

其中108表示在当前节点的大小为108Byte,324则表示在所有节点里的大小为324Byte

同时能说明副本个数为3,刚好 108 * 3 = 324.

特殊命令

hadoop dfs -setrep [副本个数] [HDFS文件位置] 设置 HDFS中文件的副本数量

设置的副本数会记录在 NameNode的元数据中,是否真的能达到指定的副本个数还需看 DataNode节点的数量。比如集群目前有3个节点,所以实际上最多就3个副本。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/706419.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号