Hadoop+Spark大数据技术 第二章 HDFS大数据分布式存储
Hadoop+Spark大数据技术(微课版)曾国荪、曹洁版思维导图第二章 HDFS大数据分布式存储
-
第二章 HDFS大数据分布式存储
-
2.1 HDFS 的基本特征
-
1.大规模数据分布存储
-
基于大量分布节点上的本地文件系统。
-
-
2.流式访问
-
批量处理数据
-
提高数据吞吐率
-
-
-
3.容错
-
正确处理故障,确保数据处理继续进行,且不丢失数据。
-
-
4.简单的文件模型
-
一次写入,多次读取。
-
支持在文件末端追加数据,不支持在文件位置任意修改。
-
-
5.数据块存储模式
-
默认数据块64MB
-
-
6.跨平台兼容性
-
采用JAVA语言,支持JVM的机器都可以运行HDFS。
-
-
-
2.2 HDFS的存储架构及组件
-
2.2.1 HDFS的存储架构
-
采用经典的主从架构 4个部分组成
-
Client (客户端)
-
DataNode (数据节点)
-
NameNode (名称节点)
-
SecondaryNameNode (第二名称节点)
-
-
-
-
-
一个HDFS集群由一个名称节点和一定数量的数据节点组成。
-
名称节点和数据节点共同协调完成分布式的文件存储服务。
-
-
2.2.2 数据块
-
传统的文件系统
-
为提高磁盘读写效率,一般以数据块为单位,而不是以字节为单位,数据块是磁盘读写的最小单位。
-
文件系统的数据块大小通常是几千字节,而磁盘的数据块大小通常是512B。
-
-
HDFS
-
这里的数据块是一个更大的单元,Hadoop 2.x版本默认的数据块大小是128MB。
-
如同单一磁盘的文件系统中的文件,HDFS中的文件被分解成数据块大小的若干数据块,独立保存在各单元。
-
HDFS使用数据块的好处
-
文件存储不受单一磁盘大小限制。
-
集群的若干磁盘共同存储。
-
-
简化存储系统的存储过程。
-
数据块大小固定,简单计算给定磁盘上存储数据块个数。
-
-
-
-
-
2.2.3 DataNode
-
定义
-
一个数据节点运行一个数据节点进程。
-
可作为服务器接收来自客户端访问处理数据块读写请求。
-
通过心跳消息定时向名称节点发送所存储的文件信息。
-
-
作用
-
管理所在节点上的数据存储。
-
-
-
2.2.4 NameNode
-
定义
-
名称节点是一个中心服务器
-
-
作用
-
管理文件系统的命名空间和元数据
-
管理客户端对文件的访问
-
-
保存文件系统的3种元数据
-
(1)命名空间,即HDFS的目录结构。
-
(2)数据块与文件名的映射表。
-
(3)每个数据块副本的位置信息,每一个数据块默认有3个副本。
-
-
元数据信息
-
(1)文件的owership和permission。
-
(2)文件包含哪些数据块。
-
(3)数据块保存在哪个DataNode(由DataNode启动时上报)上。
-
-
-
2.2.5 SecondaryNameNode
-
备份NameNode的元数据,以便失效恢复。
-
周期性(周期的长短可配置)保存
-
-
2.2.6 心跳消息 (Heartbeat)
-
名称节点周期向管理的各数据节点发送心跳消息,收到心跳消息的数据节点回复。
-
-
2.2.7 客户端
-
严格来讲,客户端(代表用户)并不能算是HDFS的一部分
-
是用户和HDFS通信的渠道之一,部署的HDFS都会提供客户端。
-
为用户提供了一种与Linux中的Shell类似的方式访问 HDFS的数据。
-
支持常见的操作,如打开、读取、写入等
-
通过与NameNode 和DataNode 交互来访问HDFS中的文件。
-
-
2.3 HDFS的Shell 操作
-
适用
-
(1)hadoop fs:适用于任何不同的文件系统,例如本地文件系统和HDFS。
-
(2)hadoop dfs:只适用于HDFS。
-
(3)hdfs dfs:与hadoop dfs命令一样,也只适用于HDFS。
-
-
2.3.1查看命令的使用方法
-
启动Hadoop
-
cd /usr/local/hadoop
-
./sbin/start-dfs.sh
-
-
关闭Hadoop
-
./sbin/stop-dfs.sh
-
-
查看支持的操作
-
cd /usr/local/hadoop
-
./bin/hdfs dfs
-
-
查看某命令的用法
-
例如,查cp命令的用法
-
./bin/hafs dfs -help cp
-
-
-
2.3.2 HDFS常用的Shell 操作
-
1.创建目录——mkdir 命令
-
hdfs dfs -mkdir [-p] <path>
-
-p参数表示创建目录时先检查路径是否存在,如果不存在,则创建相应的各级目录。
-
-
2.列出指定目录下的内容——ls命令
-
hdfs dfs -ls -d -h -R
-
-d:将目录显示为普通文件。
-
-h:使用便于操作人员读取的单位信息格式。
-
-R:递归显示所有子目录的信息。
-
-
3.上传文件——put命令
-
./bin/hdfs dfs -put [-f] [-p]
-
功能:将单个 localsrc或多个localsrc从本地文件系统上传到HDFS中。
-
-p:保留访问和修改时间、所有权和权限。
-
-f:覆盖目标文件(如果已经存在)。
-
-
4.从HDFS中下载文件到本地文件系统——get命令
-
./bin/hdfs dfs -get input/myLocalFile.txt /home/hadoop/下载
-
-
5.复制文件——cp命令
-
hdfs dfs -cp URI[URI...] <dst>
-
-
6.查看文件内容——cat命令
-
hafs dfs -cat URI[URI...]
-
-
7.在HDFS目录中移动文件——mv命令
-
hdfs dfs -mv URI(URI...)
-
-
8、显示文件大小——du命令
-
hdfs dfs -du /user/hadoop/input
-
-
9.追加文件内容——appendToFile命令
-
hdfs dfs -appendToFile
-
△注意:HDFS不能对文件进行修改,但可以进行追加。
-
-
10.从本地文件系统中复制文件到HDFS——copyFromLocal命令
-
hats afs -copyFromtocal
-
-
11.从HDFS中复制文件到本地文件系统—copyToLocal命令
-
hdfs dfs -copyTolocal input/mylocalFile.txt /home/hadoop/LocalFile100.txt
-
-
12.从HDFS中删除文件和目录——rm命令
-
.bin/hdfs dfs -rm -r /input
-
-r:表示删除input 目录及其子目录下的所有内容。
-
-
-
2.3.3 HDFS的管理员命令
-
HDFS 命令分为用户命令(dfs等)、管理员命令(dfsadmin等)。
-
管理员命令(dfsadmin)
-
一个多任务的工具,用于获取HDFS的状态信息,以及在HDFS上执行一系列管理操作,调用方式为“hdfs dfsadmin-具体的命令”。
-
1.查看文件系统的基本信息和统计信息——report命令
-
查看HDFS状态,比如有哪些DataNode、每个DataNode的情况
-
hdfs dfsadmin -report
-
-
2.安全模式——safemode命令
-
进入
-
hdfs dfsadmin -safemode enter
-
-
离开
-
hdfs dfsadmin -safemode leave
-
-
-
-
-
-
-
更多推荐
所有评论(0)