HDFS的JAVA上传下载简单实现

1.HDFS的Java基本操作非常重要
2.Haoop的常用shell操作
     1.hadoop fs -ls hdfs://haoop1:8020/目录
        
     2.hadoop fs -copyFromLocal|put   文件地址    目的目录
        
     3.hadoop fs -copyToLocal|get  文件地址    目的目录
     4.hadoop fs -moveToLocal   文件地址  目地址
     5.hadoop fs -mkdir  创建文件夹
      6.hadoop fs -rm -r -skipTrash 目标文件夹或文件(不在回收站中保留)


3.HDFS的基本操作
    1)构造一个hdfs的客户端(可指定URI和user,如指定,则可省略第二步)
       FileSystem  
       例子:FileSystem  fs = FileSystem.get(new URI("hdfs://hadoop1:8020"),new Configuration(),"用户名")
    2)构造一个配置参数封装对象
       Configuration 默认的fs.defaultFS的默认值是file:///指的是本地文件系统URI,我们需要需改
    3)执行操作
        a) fs.copyFromLocalFile
        b) fs.copyToLocalFile(false,XX,XX,true); 第一个参数是否移除hdfs上的文件,第四个参数,是否使用本地文件系统
        c)fs.listFiles  查看文件的信息(只能列出文件信息)
        d) fs.listStatus  查看文件和文件夹的信息
        e) fs.getFileBlockLocations 查看文件块的信息(指定偏移量)
        f) fs.concat   连接多个文件
        h) fs.getUse   获得整个文件系统的已使用空间
        i) fs.rename   文件改名
        j) fs.setReplocation   修改文件的副本数量

    4)操作完毕后,关闭客户端
4. HDFS的IO流操作
    1)fs.open()  获得hdfs文件的输入流   拿到FSDataInputStream(随机流,可支持seek方法)
    2)IOUtils.copyBytes方法处理流,可指定缓冲流大小   记得关闭流!
       从指定偏移量读取hdfs中的文件数据,具有重大意义,在分布式数据处理时,可以将数据分片来分配给不同的节点处理
    3)fs.create() 获得hdfs上文件的输出流  
    HDFS的JAVA上传下载简单实现_第1张图片

 

    HDFS的JAVA上传下载简单实现_第2张图片
  
       HDFS的JAVA上传下载简单实现_第3张图片

  HDFS的JAVA上传下载简单实现_第4张图片
       


5.  HDFS的写数据流程
        1)客户端向nameNode请求上传文件
        2)nameNode检查上传路径的合法性
        3)nameNode反馈给客户端可以上传
        4)客户端向nameNode请求上传第一个Block
        5)nameNode返回给一个dataNode节点列表给客户端(取决与设置的副本数量和网络拓扑图)
        6)客户端向第一个dataNode节点请求上传数据(请求建立PiPeLine),第一个节点也向它兄弟做一个请求
        7)dataNode节点响应客户端的请求,PiPeLine建立成功
        8)客户端向dataNode1以Soket流的方式发送数据,以packet(64K)为单位,dataNode1通过管道
           依次复制给它的兄弟,同时依次返回接受响应。按照这种方式依次将所有的packet和block传完。
          HDFS的JAVA上传下载简单实现_第5张图片 
6.  HDFS的读数据流程
        1)客户端将读请求(附带文件路径Path)发送给nameNode
            nameNode上保存了元数据
        2)nameNode在元数据中查找该文件的块信息和存放信息并反馈给客户端
        3)客户端根据网络拓扑图去相应的datanode请求数据(建立socket流管道)
        4)nameNode通过socket流来将数据传给客户端
        5)多次读取完成操作
        HDFS的JAVA上传下载简单实现_第6张图片
7.HDFS中nameNode管理元数据的机制
  1)NameNode:
            响应客户端请求
            维护目录树
            管理元数据

HDFS的JAVA上传下载简单实现_第7张图片

你可能感兴趣的:(Hadoop,HDFS)