码迷,mamicode.com
首页 > 编程语言 > 详细

HDFS架构介绍及java的api使用

时间:2015-05-14 18:22:44      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:

HDFS设计前提与目标:
1 硬件错误时常态
2 流式数据访问
3 大规模数据集
4 简单一致性模型
5 移动计算比移动数据更划算
 
一个HDFS集群包含一个单独的NameNode节点、多台DataNode服务器,并且同时被多个客户端访问,如图所示。所有的这些机器通常都是普通的Linux机器,运行着用户级别(user-level)的服务进程。NameNode管理文件系统的元数据(记录着文件数据在每个DataNode上位置副本信息,协调客户端对文件的访问,以及记录命名空间内的改动或命名空间本身的改动,DataNode存储实际数据。客户端通过NameNodeDataNode的交互访问文件系统。  
<ignore_js_op>技术分享
  HDFS结构图
保障HDFS可靠性措施
1 冗余备份  
2 副本存放
3 心跳检测
4 安全模式
5 数据完整性检测
6 空间回收
7 元数据磁盘失效
8 快照
 
HDFSjava api
上传本地文件到HDFS
通过FileSystem.copyFromLocalFile(Path src,Path dst)可将本地文件上传到HDFS的指定位置上,其中src和dst均为文件的完整路径。
import org.apache.hadoop.conf.Configuration;   import org.apache.hadoop.fs.FileStatus;  import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path;  public class CopyFile {  Configuration conf=new Configuration();  FileSystem hdfs= FileSystem.get(conf);  Path src=new Path("C:\\test.txt");  Path dst=new Path("/");
hdfs.copyFromLocalFile(src,dst);
System.out.println("Upload to"+conf.get("fs.defualt.name"));  FileStatus files[]=hdfs.listStatus(dst);  for(fileStatus file:files){   System.out.println(file.getPath());
}
}  
创建HDFS文件   
通过FileSystem.create(Path f)可在HDFS上创建文件,其中f为文件的完整路劲。
import org.apache.hadoop.conf.Configuration;   import org.apache.hadoop.fs.FileStatus;  import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path;  public class CreateFile{  public static void main(String[] args)throws Exception{   Configuration conf=new Configuration();   byte[] buff="hello".getBytes();   FileSystem hdfs=FileSystem.get(conf);   Path dfs=new Path("/test");
  FSDataOutputStream outputStream=hdfs.create(dfs);   outputStream.write(buff,0,buff.length);
}
}  
重命名HDFS文件
通过FileSystem.rename(Path src,Path dst)可为指定的HDFS文件重命名,其中srcdst均为文件的完整路径。
删除HDFS上的文件
通过FileSystem.delete(Path f,Boolean recursive)可删除指定的HDFS文件,其中f为需要删除文件的完整路径,recursive用来确定是否进行递归删除。  
查看HDFS文件的最后修改时间
通过FileStatus.getModificationTime()可以查看指定HDFS文件的修改时间。  
查看某个HDFS文件是否存在
通过FileSystem.exists(Path f)可查看指定HDFS文件是否存在,其中f为文件的完整路径。  
查看某个文件的HDFS集群位置
通过FileSystem.getFileBlockLocation(FileStatus file,long start,long len)可查找指定文件在HDFS集群上的位置,其中file为文件的完整路径,startlen来标识查找文件的路径。  
获取HDFS集群上所有节点名称
通过DatanodeInfo.getHostName()可获取HDFS集群上所有节点名称。
 
更多精彩内容请关注:http://bbs.superwu.cn 
关注超人学院微信二维码:技术分享

HDFS架构介绍及java的api使用

标签:

原文地址:http://www.cnblogs.com/CRXY/p/4503750.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!