目录
0 参考列表
1 概念
1.1 特点
2 系统架构
2.1 架构组成
2.2 分块存储及副本机制
3 执行原理
3.1 写数据
3.2 读数据
4 使用
4.1 访问
4.2 HDFS Shell
CSDN:HDFS特点,底层结构,重要组成部分、安全模式,重要进程,高可靠性,冷备份,读写流程,通讯过程https://blog.csdn.net/qq_30031221/article/details/114602906?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165873132516781818748546%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=165873132516781818748546&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~pc_rank_34-7-114602906-null-null.142%5Ev33%5Epc_rank_34,185%5Ev2%5Econtrol&utm_term=hdfs%E7%89%B9%E7%82%B9&spm=1018.2226.3001.4187
HDFS,Hadoop 分布式文件系统,是一款分布式文件系统.
(1) 优点
①高容错高可靠性:数据自动保存多个副本,提供了容错和恢复机制;
②适合大数据量的处理;
③适合批处理;
④低成本运行:可以运行在低成本的硬件之上.
(2) 缺点
①不适合处理大量的小文件;
②不适合处理低延迟的数据访问;
③不能任意修改文件.
(1) NameNode
①存储元数据(整个文件系统的目录树结构,以及NameNode中的文件块信息),接收客户端读写数据请求;
②所在机器需配置大量内存;
③是Hadoop集群中的单点故障
(2) DataNode
负责文件块的读写操作,并定期向NameNode汇报自已持有的文件块的信息;
所在机器需要配置大量的硬盘空间.
(3) SecondaryNameNode
辅助NameNode管理元数据信息.定时获取HDFS的元数据快照,NameNode在下次重启时会使用这个新的快照,从而减少重启的时间.
HDFS中的文件在物理上是分块存储的,块的大小可以通过参数(dfs.block.size)来调整,默认是128M.
为了容错,文件的所有block都会存储多个副本.数据文件默认在HDFS上存放三份,存储策略为本地一份,同机架内其它某一节点上一份,不同机架的某一节点上一份.
(1) 客户端向NameNode发起文件上传请求,NameNode将文件分块;
(2) NameNode从管理的DataNode节点中找到合适的3个节点,把DataNode节点地址返回给客户端,并记录元数据.
(3) 客户端请求3台DataNode中的一台A上传数据,A收到请求会继续调用B,然后B调用C,将整个pipeline建立完成,后逐级返回客户端;
(4) 数据块被分割成一个个packet(默认64K)数据包在pipeline上依次传输,在pipeline反方向上逐个发送ack(命令正确应答),最终由第一个DataNode节点A将ack返回给客户端;
(5) 当一个block传输完成之后,client再次请求NameNode上传第二个block到服务器.
(1) 客户端向NameNode发起读请求,包含文件名等信息;
(2) NameNode收到请求,会视情况返回文件的部分或者全部block列表;对于每个block,NameNode都会返回含有该block副本的DataNode地址.返回的DN地址会按照集群拓扑结构中DataNode与客户端的距离进行排序:网络拓扑结构中距离客户端近的排靠前,心跳机制中超时汇报的DN排靠后
(3) Client选取排序靠前的DataNode来读取block,并行读取;
(4) 读取完一个block都会进行完整性验证,如果读取出错,客户端会通知NameNode,然后再从下一个拥有该block副本的DataNode继续读;
(5) 当读完列表的block后文件读取还没有结束,客户端会继续向NameNode获取下一批的block列表;
(6) 最终读取来所有的block会合并成一个完整文件.
日志:/var/log/hadoop/hdfs
页面:
NameNode:${ip}:50070
文件系统:${ip}:50070/explorer.html#/
进程名:NameNode,DataNode,SecondaryNameNode
Hadoop Shell命令http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html
(1) 上传下载
-- put:上传文件到HDFS
hadoop fs -put localfile /user/hadoop/hadoopfile
-- copyToLocal:下载HDFS文件到本地
hadoop fs-copyToLocal /home localdir
(2) 目录
-- mkdir:创建目录
hadoop dfs -mkdir /home
功能 | 命令 |
---|---|
移动文件 | hadoop dfs -mv /hello /hello2 |
创建文件 | hadoop dfs -touchz /wahaha |
删除文件或空目录 | hadoop dfs -rm /wahaha |
赋予权限 | hadoop fs -chown -R root:hdfs /apps/hbase/mr |
查看目录 | hadoop dfs -ls /wahaha |
查看文件 | hadoop dfs -cat /hello |