添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接


1.HDFS的Java基本操作非常重要

2.Haoop的常用shell操作

1.hadoop fs -ls hdfs://haoop1:8020/目录


java如何获取hdfs文件大小 hdfs java上传文件_Hadoop


2.hadoop fs -copyFromLocal|put   文件地址    目的目录


java如何获取hdfs文件大小 hdfs java上传文件_Hadoop_02


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上文件的输出流


java如何获取hdfs文件大小 hdfs java上传文件_hadoop_03


java如何获取hdfs文件大小 hdfs java上传文件_hadoop_04




java如何获取hdfs文件大小 hdfs java上传文件_hadoop_05


java如何获取hdfs文件大小 hdfs java上传文件_客户端_06


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传完。


java如何获取hdfs文件大小 hdfs java上传文件_客户端_07


6.  HDFS的读数据流程

1)客户端将读请求(附带文件路径Path)发送给nameNode

nameNode上保存了元数据

2)nameNode在元数据中查找该文件的块信息和存放信息并反馈给客户端

3)客户端根据网络拓扑图去相应的datanode请求数据(建立socket流管道)

4)nameNode通过socket流来将数据传给客户端

5)多次读取完成操作


java如何获取hdfs文件大小 hdfs java上传文件_客户端_08


7.HDFS中nameNode管理元数据的机制

1)NameNode:

响应客户端请求

维护目录树

管理元数据

java如何获取hdfs文件大小 hdfs java上传文件_java如何获取hdfs文件大小_09