hadoop之旅(三)java操作HDFS

来源:互联网 发布:key转换ppt软件 编辑:程序博客网 时间:2024/05/22 07:56

8.Java操作HDFS
URL url=new URL(“http://www“);//远程操作http协议
inputstream in =url.openStream();
IOUtils.copyBytes(in,System.out,4096,true)
1.方式
URL.setURLStreamHandlerfactory(new FsUrlStreamHandlerFactory());
URL url=new URL(“hdfs:192.168.233.131:9000/hello.txt”);//远程操作hdfs
inputstream in =url.openStream();
IOUtils.copyBytes(in,System.out,4096,true)
2.方式filesystem
Configuration conf=new Configuration();
conf.set(“fs.defaultFS”,”hdfs://192.168.233.131:9000”);
conf.set(“dfs.replication”,2)//默认备份数
FileSystem fileSystem=FileSystem.get(conf); //文件系统抽象类
boolean success=fieSystem.mkdir(new Path(“/msb”));//创建目录(会覆盖,用之前要判断是否存在)

success=fileSystem.exists(new Path(“/hello.txt”))
success=fileSystem.delete(new Path(“/hello.txt”),true) //删除
FsDataOutputStream out=create(new Path(“/test.data”),true)
FileInputStream fis=new FileInputStream(“f:/hello.txt”)
IOUtils.copyBytes(fis,out,4096,true)//从windows拷贝文件放在集群上(传数据)
/第二种传数据,用java的io/
FsDataOutputStream out=create(new Path(“/test.data”),true)
FileInputStream in=new FileInputStream(“f:/hello.txt”)
byte []buf=new byte[4096]; //buffer
int len = in.read(buf);
while(len !=-1){
out.write(buf,0,len)
len=in.read(buf)
}
in.close();
out.close();

/列举目录下所有文件或者子目录的信息/
FileStatus[] statuses=fileSystem.listStatus(new Path(“/”)); // 子目录下所有信息

for(FileStatus status:statuses){
status.getPath()//目录下所有文件路径
status.getPermission()//权限
status.getReplication//分了多少份
}
9.
windows与Linux权限系统不一样,测试期间可以关闭权限检查,在namenode-site。xml添加配置
dfs.permissions.enabled
false