盗来的图:HDFS架构体系
html
一、Clientnode
在我们这就是Linux命令或者Java代码。
web
二、NameNodeapache
整个HDFS集群只有一个NameNode,它存储整个集群文件分别的元数据信息。这些信息以fsimage和editlog两个文件存储在本地磁 盘,Client经过这些元数据信息能够找到相应的文件。此外,NameNode还负责监控DataNode的健康状况,一旦发现DataNode异常, 就将其踢出,并拷贝其上数据至其它DataNode。虽然Client是与NameNode通讯,可是最终操做文件仍是链接Datenode安全
三、Secondary NameNode架构
Secondary NameNode负责按期合并NameNode的fsimage和editlog。这里特别注意,它不是NameNode的热备,因此NameNode依 然是Single Point of Failure。它存在的主要目的是为了分担一部分NameNode的工做(特别是消耗内存的工做,由于内存资源对NameNode来讲很是珍贵)。oop
四、DataNodespa
DataNode负责数据的实际存储。当一个文件上传至HDFS集群时,它以Block为基本单位分布在各个DataNode中,同时,为了保证数据的可靠性,每一个Block会同时写入多个DataNode中(默认为3,我们搞成了2)。DataNode经过心跳向node汇报本身的状态,同时拿到namedode指派下来的command执行。orm
五、Blockhtm
默认64M一块,一块存三分,童叟无欺。
HDFS 命令基本就是 Linux命令前面加上 "Hadoop fs -",官方文档入口。
下面是具备表明性的命令:
hadoop dfsadmin -safemode leave //退出安全模式,否则没法put
hadoop fs -mkdir /user/kitten //建文件夹,建立HDFS的用户
hadoop fs -chown kitten /user/kitten //更改文件夹的全部权
hadoop fs -ls /user //罗列文件
hadoop fs -lsr /user //递归罗列文件
hadoop fs -put test.txt /user/kitten //从Linux复制到HDFS
hadoop fs -get /user/kitten /test.txt //从HDFS取到Linux
hadoop fs -cat /user/kitten/test.txt //建文件
hadoop fs -tail /user/kitten/test.txt //查看最后1000字节
hadoop fs -rm /user/kitten/test.txt //删除
hadoop fs -help ls //国际惯例,查看ls命令的帮助文档