HDFS的体系结构
HDFS中有一个NameNode和大量的DataNode,NameNode用于进行整个HDFS的管理,DataNode用来真正存储数据
文件操作:增删改查
1)增
当向NameNode发出一个存文件的命令,NameNode会将文件分割成多个chunk,将这些chunk分散存在DataNode节点上,为了保证数据的安全,会产生一些冗余chunk
2)删
当向NameNode发出一个删除文件的命令,NameNode会根据它管理的metadata查询文件所对应的chunk存放的DataNode,然后向这些DataNode发送命令,把所有文件关联的chunk删除掉
3)改
当向NameNode发出一个修改文件的命令,NameNode会对该命令进行解析,得到需要修改的chunk的列表和相应的修改数据,然后向存放这些chunk的DataNode发送修改命令
4)查
当向NameNode发出一个查看文件的命令,NameNode会查询所有文件相关的chunk,并向保存这些chunk数据的DataNode提取数据,最后将文件的内容完整呈现出来
总结,对于只是调用HDFS接口的外部来说,整个HDFS的表现行为就跟一台主机完全一样,你向它发送存一个文件的命令,它就存一个文件,你向它发送删一个文件的命令,它就删一个文件等等
从逻辑上来说,你就完全可以把整个HDFS当成一台主机,这样非常有利于我们的编程过程
这里的“外部”指的是调用NameNode上的NameNode Daemon服务的外部应用程序,一般与NameNode Daemon运行于同一台机子,即NameNode,也可以运行在非NameNode上,通过远程调用的形式调用NameNode上的NameNode Daemon服务
这个外部应用不只可以调用NameNode Daemon服务,也可以调用NameNode上的本机磁盘存取服务
这个外部应用一般就是我们自己编写的应用程序
下图具体阐明了上述的关系
备注:以上的结论根据我看Google File System的论文得到,有可能会跟Hadoop的DFS不太一样,有错误,请大家指正!