数据存储_HDFS

目录

0 参考列表

1 概念

1.1 特点

2 系统架构

2.1 架构组成

2.2 分块存储及副本机制

3 执行原理

3.1 写数据

3.2 读数据

4 使用

4.1 访问

4.2 HDFS Shell


0 参考列表

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

1 概念

        HDFS,Hadoop 分布式文件系统,是一款分布式文件系统.

1.1 特点

(1) 优点

        ①高容错高可靠性:数据自动保存多个副本,提供了容错和恢复机制;

        ②适合大数据量的处理;

        ③适合批处理;

        ④低成本运行:可以运行在低成本的硬件之上.

(2) 缺点

        ①不适合处理大量的小文件;

        ②不适合处理低延迟的数据访问;

        ③不能任意修改文件.

2 系统架构

2.1 架构组成

(1) NameNode

        ①存储元数据(整个文件系统的目录树结构,以及NameNode中的文件块信息),接收客户端读写数据请求;

        ②所在机器需配置大量内存;

        ③是Hadoop集群中的单点故障

(2) DataNode

        负责文件块的读写操作,并定期向NameNode汇报自已持有的文件块的信息;

        所在机器需要配置大量的硬盘空间.

(3) SecondaryNameNode

        辅助NameNode管理元数据信息.定时获取HDFS的元数据快照,NameNode在下次重启时会使用这个新的快照,从而减少重启的时间.

2.2 分块存储及副本机制

        HDFS中的文件在物理上是分块存储的,块的大小可以通过参数(dfs.block.size)来调整,默认是128M.

        为了容错,文件的所有block都会存储多个副本.数据文件默认在HDFS上存放三份,存储策略为本地一份,同机架内其它某一节点上一份,不同机架的某一节点上一份.

3 执行原理

3.1 写数据

        (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到服务器.

3.2 读数据

        (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会合并成一个完整文件.

4 使用

4.1 访问

        日志:/var/log/hadoop/hdfs

        页面:

                NameNode:${ip}:50070

                文件系统:${ip}:50070/explorer.html#/

        进程名:NameNode,DataNode,SecondaryNameNode

4.2 HDFS Shell

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

你可能感兴趣的:(数据存储,hdfs,hadoop)