Hadoop之HDFS

HDFS:Hadoop内分布式存储组件,可以构建分布式文件系统用于数据存储
基础架构:
  • NameNode:主角色,独立进程,负责管理;

  • DateNode:从角色,独立进程,负责数据的存储;

  • SecondaryNameNode:辅助角色,协助NameNode整理元数据;

  • start-dfs.sh执行原理(stop-dfs.sh类似)

    • 首先启动SecondaryNameNode辅助节点;
    • 读取core-site.xml内容找到dfs.defaultFS,确定NameNode 所在服务器,启动NameNode;
    • 读取workers,确定DataNode服务器,启动DataNode;
  • 某一个服务器的启停:hadoop-daemon.sh (start | status | stop) (namenode | …) 或者 hdfs --dameon (start | status | stop) (namenode | …)

HDFS的Shell操作
  • 结构与Linux文件类似

  • 协议头:hdfs://namenode:port/

  • 基本命令:

    #hadoop fs [可选项] hdfs dfs [可选项]  类似
    
    #1、创建文件夹
    hdfs dfs -mkdir [-p] <path>
    
    #2、查看文件
    hdfs dfs -ls [-h(显示文件大小)] [-R(全部显示)] [<path> ...]
    
    #3、上传文件到hdfs
    hdfs dfs -put [-f(覆盖文件)] [-p(保留权限)] <localsrc> ... <dst>
    hdfs dfs -put file:///etc/profile hdfs://node1:8020/itcast
    
    #4、查看文件
    hdfs dfs -cat <src>
    hdfs dfs -cat <src> | more
    
    #5、下载文件
    hdfs dfs -get [-f] [-p] <src> ... <localdst>
    
    #6、复制
    hdfs dfs -cp [-f] <src> ... <dst>
    
    #7、追加 或 删除文件,不能修改
    hdfs dfs -appendToFile <localdst> ... <dst>
    
    #8、移动
    hdfs dfs -mv <src> ... <dst>
    
    #9、删除文件或文件夹
    hdfs dfs -rm -r [-skipTrash] URI [UrI ...]
    
开启回收站
<!--core-site.xml:不需要重启集群,在当前机器执行-->
<!--保留时间-->
<!--检查时间间隔-->
<property>
	<name>fs.trash.interval</name>
    <value>1440</value>
</property>
<property>
	<name>fs.trash.checkpoint.interval</name>
    <value>120</value>
</property>
HDFS存储原理
  • 基本单位:block块,默认为256MB (有利于统一管理)

  • 副本机制:node1中的数据的副本放在其他节点(replication 表示一共有几份)

  • HDFS副本块数配置:hdfs-site.xml

    <property>
    	<name>dfs.replication</name>
        <value>3</value>
    </property>
    
    #上传文件时临时生效
    hdfs dfs -D dfs.replication=2 -put test.txt /temp/
    
    #重新设置副本块
    hdfs dfs -setrep [-R] 2 <path> 
    
    #查看副本数
    hdfs fsck <path> [-files [-blocks [-locations]]]
    #-files 列出路径内文件是否正常
    #-files -blocks  输出文件块报告(块数和副本数)
    #-files -blocks -locations 输出每一个block的详情
    
  • block配置:hdfs-site.xml

    <property>
    	<name>dfs.blocksize</name>
        <value>268435356</value>
    </property>
    
  • NameNode元数据管理和维护

    • edits文件:流水账文件,记录hdfs的每一个操作,及其一些细节;
    • edits定期合并:记录一个文件的最终状态(压缩),通过合并得到FSImage文件;
    • 若没有FSImage文件,则合并edits文件。若两种文件都存在,则合并两类文件;
    • 合并的控制参数:dfs.namenode.checkpoint.period,默认一小时;dfs.namenode.checkpoint.txns,默认100万次事务;满足其中一个即可。定期检查条件是否满足参数 dfs.namenode.checkpoint.check.period,默认为60秒。
    • 由SecondaryNameNode来执行合并;
  • 数据写入流程:

    • 客户端向NameNode发送写入请求;
    • NameNode审核权限和其他条件,告知客户端写入DataNode的地址;
    • 客户端向指定的地址节点发送数据包;
    • 被写入数据的DataNode同时完成副本的复制工作,将其接受的数据发给其他节点;
    • 写入完成后,告知NameNode,记录;
  • 数据读取流程:

    • 客户端向NameNode申请读取某文件;
    • NameNode审核后,返回此文件的block列表(找到距离最近的一份);
    • 客户端读取;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值