代码拉取完成,页面将自动刷新
编号 | 单独考查 | 混合考查 | 重点 |
---|---|---|---|
373031902856 | 15% | 0 | SecondaryNameNode的功能 HDFS Shell 指令 |
373032001234 | 20% | 0 | 文件写入 错误处理 HDFS Shell 指令 |
HDFS
由 NameNode
、SecondaryNameNode
和DataNode
三块组成。
fsimage
文件: 命名空间镜像文件,存储文件系统元信息。
edits
文件: 记录操作日志 editlog
。
edits
保存了很多对文件进行操作的指令。两类文件的关系:
edits
记录的是文件的操作记录,是过程fsimage
保存的是文件的操作结果,是结果NameNode
的指令,和客户端就行 I/O 操作NameNode
发送心跳信息,保持和 NameNode
的通信。fsimage
和 edits
,避免 edits
过大。SecondaryNameNode
向 NameNode
发送请求,要求其暂停使用 edits
文件。之后新的更新操作写入 edits.new
文件。SecondaryNameNode
从 NameNode
下载 fsimage
和 edits
文件。SecondaryNameNode
根据 edits
中的信息,对 fsimage
进行操作。最终形成一个新的 fsimage.ckpt
。SecondaryNameNode
将合并后的 fsimage.ckpt
上传到 NameNode
。‘NameNode
用得到的新 fsimage.ckpt
替换旧的 fsimage
,用 edits.new
替换 edits
。NameNode
恢复使用 edits
记录操作日志。HDFS
的操作进行优化。DistributedFileSystem
打开文件DistributedFileSystem
向 NameNode
请求数据块信息Client
从FSDataInputStream
读取数据FSDataInputStream
从 DataNode
读取数据Client
关闭FSDataInputStream
客户端通过 DistributedFileSystem
打开文件。
DistributedFileSystem
请求 NameNode
创建元数据。
此操作通过 RPC 调用完成。RPC 是指远程过程调用,它类似函数调用,区别是函数在另一台服务器上。
Client
向FSDataOutputStream
写入数据,先写入缓冲区,再一个个切分成数据包。
FSDataOutputStream
向 DataNode
发送数据,节点由 NameNode
分配。数据包由这些 DataNode
组成的管道进行传输。
管道上的 DataNode
反向返回确认信息,最终由第一个数据节点返回给 FSDataOutputStream
。
Client
关闭FSDataOutputStream
FSDataInputStream
通知 NameNode
文件写入完成。
由 HDFS 自动处理
NameNode
近期未接受到 DataNode
的心跳信息,就认为这个 DataNode
挂了。fsimage
或者 edits
损坏。HDFS
直接挂掉HDFS HA
: 高可用性
ZooKeeper
NameNode
存储数据JournalNode
同步数据操作 | 命令 | 参数 | 示例 |
---|---|---|---|
创建文件夹 | hdfs dfs -mkdir [-p] <paths> |
-p :如果父目录不存在,则先创建父目录 |
创建 hadoop 目录:hdfs dfs -mkdir /hadoop
|
列出文件夹 | hdfs dfs -ls [-dhR] <paths> |
-d :返回父目录-R :同时显示子目录 |
显示 hadoop 目录:hdfs dfs -ls /hadoop
|
创建文件 | hdfs dfs -touchz <paths> |
无 | 创建 hadoop.txt 文件:hdfs dfs -touchz /hadoop.txt
|
上传文件 |
hdfs dfs -put <local_src> <hdfs_dst> hdfs dfs -copyFromLocal <local_src> <hdfs_dst>
|
无 | 将 /root/app.txt 上传到 HDFS 的根目录:hdfs dfs -put /root/app.txt /app.txt
|
移动文件到HDFS | hdfs dfs -moveFromLocal <local_src> <hdfs_dst> |
无 | 将 /root/app.txt 移动到 HDFS 的根目录:hdfs dfs -moveFromLocal /root/app.txt /app.txt
|
下载文件 |
hdfs dfs -get <hdfs_src> <local_dst> hdfs dfs -copyToLocal <hdfs_src> <local_dst>
|
无 | 将 /app.txt 下载到 /root/app.txt :hdfs dfs -copyToLocal /app.txt /root/app.txt
|
查看文件 | hdfs dfs -cat <hdfs_path> |
无 | 查看 /app.txt :hdfs dfs -cat /app.txt
|
追加文件 | hdfs dfs -appendToFile <hdfs_src> <local_dst> |
无 | 追加 /root/app.txt 到 /app.txt :hdfs dfs -appendToFile /root/app.txt /app.txt
|
删除文件或目录 | hdfs dfs -rm [-fr] <hdfs_path> |
-f 文件不存在时,不显示错误信息 -r 递归删除文件夹 |
删除文件 /app.txt : hdfs -dfs -rm /app.txt 删除空文件夹 /hadoop :hdfs -dfs -rm /hadoop 删除非空文件夹 /hadoop : hdfs -dfs -rm -r /hadoop
|
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。