hdfs
Created Friday 16 March 2018
hdfs采用的是master/slave架构,一般一个hdfs集群是有一个namenode和一定数目的
datanode组成,Namenode是hdfs集群主节点,datanode是hdfs集群的从节点,两种角色各司其职,共同协调完成分布式的文件存储服务.
hdfs中的文件在物理上是分块存储(block)的,块的大小可以通过配置参数来规定,默认
大小在hadoop2.x版本中是128M
名字空间:
namenode负责维护文件系统的名字空间,任何对文件系统名字空间或属性修改都将会被namenode记录下来.
NameNode元数据管理:
我们把目录结构及文件分块位置信息叫做
元数据,namenode负责维护整个hdfs文件系统的目录结构,以及每一个文件所对应的block块消息(block的id,及所在的datanode服务器).
datanode数据存储:
文件的各个block的具体存储管理有datanode节点来承担,每一个block都可以在多个datanode上,datanode需要定时向namenode汇报自己特有的block信息.
副本机制:
为了容错,文件的所有block都会有副本,每个文件的block大小和副本系数都是可以配置的.
一次写入,多次读出:
hdfs是设计为适应一次写入,多次读出的场景,且不支持文件的修改.
hdfs基本的操作:
hadoop fs <args>
完整的写法是:hadoop fs -ls hdfs://node01:9000/
在配置文件种配置了fs.defaultFS为hdfs,所有可以省略上面写法.
还有一种写法:hdfs dfs -ls /
-put:上传文件,是从本地linux上传到hdfs上
-get:从hdfs下载到本地linux上
-appendtofile:把文件追加到另一个文件.
-getmerge:把所有的文件合并到一个文件
-setrep:改变一个文件的副本系数.