Hdfs简介
-
- Hdfs是Hadoop distributed file system的简写,在Hadoop生态圈中担任海量数据分布式存储的角色。
- Hdfs有着简单、易用、高效的特点。
- 只要是涉及到海量数据存储的场景都可以应用Hdfs,其中文件越大Hdfs越有优势。
- 代码实现:Maven中引入Hadoop-client依赖,核心类:Configuration、FileSystem、Path、FSDataInputStream、FSDataOutputStream。
Hdfs架构设计
- 角色定位:Hdfs架构设计中有NameNode、DataNodes、Client
- 角色作用:NameNode管理文件的元数据,DataNodes存储实际的数据,Client代表用户与NameNode或者DataNode交互来访问文件系统。
- 角色间关联关系:
- 比如在文件读取过程中:
- Client向NameNode发送写数据请求,NameNode返回block的存放位置的元数据信息。
- 由Client与DataNode直接通信,读取各个block数据块的信息,这个过程为并行读取。
- 比如在写文件的过程中:
- Client向NameNode发送写数据请求,NameNode寻找可以写入block信息的位置,若文件过大, 写入会分成多个block数据框,实际上是一个block一个block的申请。将找到的位置返回。
- Client获取到DataNode中的相应位置后,开始写操作。多个副本一次写入。每个block重复i与ii步。
- 写完后,Client收到全部写完的ack答复,并告知NameNode数据已经写完。
- DataNode向NameNode报告新增block数据块信息。
- 比如在文件读取过程中:
Hdfs高可用性措施(HA)
- 冗余备份
- 跨机架副本存放
- 心跳检测
- 数据完整性检测
- 安全模式
- 核心文件备份
- 空间回收
Hdfs dfs常用命令
- 文件的增删改查
注:命令均以hdfs dfs -开头
-
-
-
- 查看目录下文件 ls
- 查看文本文件内容 cat
- 创建目录 mkdir
- 删除目录/文件 rm -r /文件目录
-
-