【Task 3】HDFS常用命令/API+上传下载过程

【Task 3】
一、认识HDFS
HDFS是用来解决什么问题的
HDFS设计与架构
二、熟悉hdfs常用命令
三、Python操作HDFS的其他API
四、观察上传后的文件,上传大于128M的文件与小于128M的文件有何区别?
五、启动HDFS后,会分别启动NameNode/DataNode/SecondaryNameNode,这些进程的的作用分别是什么?
六、NameNode是如何组织文件中的元信息的,edits log与fsImage的区别?使用hdfs oiv命令观察HDFS上的文件的metadata
七、HDFS文件上传下载过程,源码阅读与整理。


一、认识HDFS

HDFS是用来解决什么问题的
早期计算机中的文件是由单机的操作系统来进行管理的,单机中的文件管理存在以下不足:
    ①存储容量的限制。
    ②读写性能的限制。
    ③容灾能力不足。
    当文件特别大的时候,上面三个问题凸显。
    
行业现状:
    ①数据格式多样化。各业务系统数据库中的结构化数据;日志文件等半结构化数据;视频、图片等非结构化数据。传统的数据库已经满足不了我们的存储需求。
    ②每天各种类型的数据以GB、TB的速度增长。单机的文件系统已管理不了如此大的数据量。
    
HDFS就是为了解决上面这些问题而生的:
    ①HDFS是一种允许文件通过网络在多台机器上分享的文件系统。
    ②HDFS将一个大文件分割成多个数据块,将这些数据块分散存储在多台机器上。
    ③虽然HDFS会将文件分割成多个数据块,但在程序和用户看来就跟操作本地磁盘中的文件一样。
    ④针对一个文件,可以并发读取它的数据块,增加了读取的性能。
    ⑤HDFS存储的容量具有巨大的扩展性。
    ⑥HDFS可以保证系统中的某些节点脱机时整个系统仍然能持续运行,并保证数据不丢失。

HDFS设计与架构
浅谈HDFS架构
HDFS 是一个Hadoop分布式文件系统,具有高度容错,通常部署在廉价机器上。HDFS能提供高吞吐量的连续数据访问,适合超大数据集的应用。首先HDFS的设计之初就是针对超大文件的存储的,小文件不会提高访问和存储速度,反而会降低;其次它采用了最高效的访问模式,也就是经常所说的流式数据访问,特点就是一次写入多次读取;再有就是它运行在普通的硬件之上的,即使硬件故障,也就通过容错来保证数据的高可用。

HDFS关键元素

Block:大文件的存储会被分割为多个block进行存储。默认为64MB,每一个blok会在多个datanode上存储多份副本,默认为3份。[这些设置都能够通过配置文件进行更改]

Namenode:主要负责存储一些metadata信息,主要包括文件目录、block和文件对应关系,以及block和datanote的对应关系

Datanode:负责存储数据,上面我们所说的高度的容错性大部分在datanode上实现的[还有一部分容错性是体现在namenode和secondname,还有jobtracker的容错等]。
在这里插入图片描述

二、熟悉hdfs常用命令
HDFS上的数据,分布在不同的地方,在Linux环境中,我们可以通过一些命令行进行 增加/查看/删除 等数据操作。


#显示/下的所有文件夹信息
hadoop fs -ls /

#递归显示所有文件夹和子文件(夹)
hadoop fs -lsr

#创建/user/hadoop目录
hadoop fs -mkdir /user/hadoop

#把a.txt放到集群/user/hadoop/文件夹下
hadoop fs -put a.txt /user/hadoop/

#把集群上的/user/hadoop/a.txt拉到本地/目录下
hadoop fs -get /user/hadoop/a.txt /

#集群上复制文件
hadoop fs -cp src dst

#集群上移动文件
hadoop fs -mv src dst

#查看集群上文件/user/hadoop/a.txt的内容
hadoop fs -cat /user/hadoop/a.txt

#删除集群上/user/hadoop/a.txt文件
hadoop fs -rm /user/hadoop/a.txt

#删除目录和目录下所有文件
hadoop fs -rmr /user/hadoop/a.txt

#与hadoop fs -put功能类似
hadoop fs -copyFromLocal localsrc dst

#将本地文件上传到hdfs,同时删除本地文件

hadoop fs -moveFromLocal localsrc dst

三、Python操作HDFS的其他API

pyhdfs
hdfs

四、观察上传后的文件,上传大于128M的文件与小于128M的文件有何区别?

两个文件的Block Size都是128M。无论多大的文件在HDFS中都是以Block为单位存储的。大于128MB会被分为两个block存储,小于128MB就是1个block存储。
我们在HDFS中存储数据是以块(block)的形式存放在DataNode中的,块(block)的大小可以通过设置dfs.blocksize来实现;
在Hadoop2.x的版本中,文件块的默认大小是128M,老版本中默认是64M;
寻址时间:HDFS中找到目标文件块(block)所需要的时间。
(参考)
原理:
文件块越大,寻址时间越短,但磁盘传输时间越长;
文件块越小,寻址时间越长,但磁盘传输时间越短。

五、启动HDFS后,会分别启动NameNode/DataNode/SecondaryNameNode,这些进程的的作用分别是什么?
HDFS,NameNode,DataNode,SecondaryNameNode的工作机制(这个写的很详细)
概述:
在这里插入图片描述
HDFS写数据流程:
在这里插入图片描述

六、NameNode是如何组织文件中的元信息的,edits log与fsImage的区别?使用hdfs oiv命令观察HDFS上的文件的metadata

NameNode中的Fsimage和Edits解析
查看HDFS的元数据文件fsimage和编辑日志edits(1)

七、HDFS文件上传下载过程,源码阅读与整理。
hdfs文件上传及下载的流程


(还没看完~~~~~)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值