设为首页 加入收藏

TOP

HDFS笔记(二)
2019-09-30 16:49:55 】 浏览:86
Tags:HDFS 笔记
列表(需要的每一个块在哪个DataNode);

Hadoop会自动算出Client与各个DataNode的距离,选出最短距离的DataNode;

读取到FSDataInputStream输入流中,并返回给客户端;

  • Client调用FSDataInputStream.read()方法:

    开始读取Block,读取完一个Block,进行checksum验证,如果出现错误,就从下一个有该拷贝的DataNode中读取;

    每读取一个Block,就关闭此DataNode的输入流连接,并找到下一个最近的DataNode继续读取;

    如果Block列表读完了,总文件还没有结束,就继续从NN获取下一批Block列表,重复调用read;

  • Client调用FSDataInputStream.close()方法;结束读取

    1. Client调用FileSystem的create()方法:

      FileSystem向NN发出请求,在NN的namespace里面创建一个新的文件,但是并不关联任何DataNode;

      NN检查文件是否已经存在、操作权限;如果检查通过,NN记录新文件信息,并在某一个DataNode上创建数据块;

      NN返回一个FSDataOutputStream对象,用于Client写入数据;

    2. Client调用输出流的FSDataOutputStream.write()方法:

      开始写入数据,首先FSDataOutputStream会将数据分割成一个个包,放入数据队列;

      根据NN返回的副本数,以及DataNode列表,先写入第一个DataNode,此DataNode会推送给下一个DataNode,以此类推,直到副本数创建完毕;(每次都会向队列返回确认信息)

    3. Client调用输出流的FSDataOutputStream.close()方法:

      完成写入之后,调用close方法,flush数据队列的数据包,NN返回成功信息;

    HDFS基本命令

    命令行键入:hadoop fs 即可查看命令

    1.创建目录:(/ 为根目录)
    hadoop fs -mkdir /test
    hadoop fs -mkdir /test/input (前提test目录必须存在)
    2.查看文件列表:(查看根目录的文件列表)
    hadoop fs -ls /
    3.上传文件到HDFS:
    hadoop fs -put /home/whr/a.dat /test/input/a.dat 
    # 复制:
    hadoop fs -copyFromLocal -f /home/whr/a.dat /test/input/a.dat 
    4.下载文件到本地:
    hadoop fs -get /test/input/a.dat /home/whr/a.dat
    # 复制:
    hadoop fs -copyToLocal -f /test/input/a.dat /home/whr/a.dat
    5.查看HDFS 文件内容:
    hadoop fs -cat /test/input/a.dat 
    6.删除HDFS文件:
    hadoop fs -rm /test/input/a.dat
    7.修改hdfs文件的用户:用户组
    hadoop fs -chown user_1:group_1 /a.txt
    8.查看/test磁盘空间
    hadoop fs -df /test
    9.删除全部
    hadoop fs -rm -r hdfs://whr-PC:9000/*

     

    首页 上一页 1 2 下一页 尾页 2/2/2
    】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
    上一篇怎么将ETL技术落地 下一篇HDFS笔记

    最新文章

    热门文章

    Hot 文章

    Python

    C 语言

    C++基础

    大数据基础

    linux编程基础

    C/C++面试题目