初学Hadoop之HDFS

版权声明:本文为博主原创文章,未经博主允许不得转载。如文章内容有问题,请不吝指教。 https://blog.csdn.net/hangdianfengzhizi/article/details/49276377

    所谓HDFS(Hadoop Distributed File System),是一种分布式文件管理系统,通过允许文件在不同电脑之间分享。这种文件系统比较适合大文件的存储。HDFS具有通透性,从程序和上层开发人员看来,就像是访问本地文件一样。HDFS在设计的时候考虑到了容错性,每一份文件在不同的电脑上默认存在3个副本,这样在有些电脑故障的时候,仍然可以正常使用整个系统。

    HDFS包括Client,NameNode,DateNode。NameNode是文件系统的管理节点,

它记录着DateNode的分配情况(Secondary NameNode和NameNode记录相同的内容,

当NameNode故障时,Secondary NameNode会从standby状态切换到active状态,保证NameNode正常工作)。DateNode是存储数据的节点,文件以block的形式存储,每个block大小默认为128M。

    简单的数据读取过程:

当client读取HDFS中的数据时,首先调用FileSystem的open方法,

使用RPC(Remote Procedure Call)通信协议从NameNode中获得数据所在block的locations,

新建一个FSDataInputStream对象。

这个对象被封装进DFSDataInputStream对象,该对象找到距离client最近的DateNode的位置,

调用read方法从DateNode的block中读取数据,

读取结束后,中断连接并指向下一个DateNode,如果DateNode发生异常,会记录异常DateNode,

跳过该节点的读取,从对应的副本中读取数据。并关闭InputStream。

    简单的数据存储过程:

当client上传数据时,首先数据在本地缓存,

当数据大小达到1个block的时候,请求NameNode分配一个block,

NameNode会把分配的地址告诉client,然后client直接与DateNode通信,

将数据写入到相应的block中。


HDFS的常见操作

#hadoop fs -ls /  查看HDFS根目录
#hadoop fs -mkdir /test 在根目录创建一个目录test
#hadoop fs -put ./test.txt /test   上传
#hadoop fs -get /test/test.txt       下载
#hadoop fs -rm /test1/test.txt       删除


    

猜你喜欢

转载自blog.csdn.net/hangdianfengzhizi/article/details/49276377