HDFS的接口(命令行接口和Java接口)--笔记
HDFS 文件的系统访问的接口
1.Hadoop的shell命令脚本
hadoop fs -ls 列出某一个目录下的文件
hadoop fs -lsr 递归的方式列出所有文件
hadoop fs -mkdir 创建目录
hadoop fs -rm 删除文件或者目录
hadoop fs -rmr 删除目录及目录下的所有目录或者文件
hadoop fs -put src / 向hdfs上传文件
hadoop fs -copyFromLocal /src /
hadoop fs -get /hdfs
hadoop fs -copyToLocal 从hdfs拷贝到本地文件系统
2.hdfs第二种访问接口 Java接口 JavaAPI
1) 通过URL的方式去访问
static{
URL.setFsUrlStreamHandler(new FSUrlStreamHandlerFactory());
}
try{
//使得URL具备访问HDFS的工厂能力
//通过URL统一资源定位符,具体的定位到hdfs的某一个具体的资源文件上
URL url = new URL("hdfs://master:9000/a.txt");
//通过url的 openStream方法拿到目标hdfs上文件的输入流对象
FSDataInputStream in = url.openStream();
FileOutputStream foo = new FileOutputStream("/home/zkpk/a.txt");
IOUtils.copyBytes(in, foo, 4096, false);
}catch(Exception e){
}finally{
IOUtils.closeStream(in);
}
2) FileSystem 来操作hdfs(常用)
Object obj = FileSystem.get()
Object extends FileSystem{
}
Object obj = new Object();
FileSystem fs;
fs = obj; //把子类对象看成父类对象,向上转型
//获取hdfs的配置 configuration
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
fs = FileSystem.get(URI.create(uri), conf);
InputStream in = fs.openStream();
IOUtils.copyBytes(in, System.out, 4096, false);
3) FileStatus (文件的元信息, 文件的名字,路径 is目录......)
FileStatu[] list = fs.listStatus();
Path[] paths = FileUtils.status2path(list)
for(Path p : paths){
fs = FileSystem.get(RUI.create(p), conf);
fs.openStream();
}
4)fs.delete
fs.mkdir()
1.Hadoop的shell命令脚本
hadoop fs -ls 列出某一个目录下的文件
hadoop fs -lsr 递归的方式列出所有文件
hadoop fs -mkdir 创建目录
hadoop fs -rm 删除文件或者目录
hadoop fs -rmr 删除目录及目录下的所有目录或者文件
hadoop fs -put src / 向hdfs上传文件
hadoop fs -copyFromLocal /src /
hadoop fs -get /hdfs
hadoop fs -copyToLocal 从hdfs拷贝到本地文件系统
2.hdfs第二种访问接口 Java接口 JavaAPI
1) 通过URL的方式去访问
static{
URL.setFsUrlStreamHandler(new FSUrlStreamHandlerFactory());
}
try{
//使得URL具备访问HDFS的工厂能力
//通过URL统一资源定位符,具体的定位到hdfs的某一个具体的资源文件上
URL url = new URL("hdfs://master:9000/a.txt");
//通过url的 openStream方法拿到目标hdfs上文件的输入流对象
FSDataInputStream in = url.openStream();
FileOutputStream foo = new FileOutputStream("/home/zkpk/a.txt");
IOUtils.copyBytes(in, foo, 4096, false);
}catch(Exception e){
}finally{
IOUtils.closeStream(in);
}
2) FileSystem 来操作hdfs(常用)
Object obj = FileSystem.get()
Object extends FileSystem{
}
Object obj = new Object();
FileSystem fs;
fs = obj; //把子类对象看成父类对象,向上转型
//获取hdfs的配置 configuration
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
fs = FileSystem.get(URI.create(uri), conf);
InputStream in = fs.openStream();
IOUtils.copyBytes(in, System.out, 4096, false);
3) FileStatus (文件的元信息, 文件的名字,路径 is目录......)
FileStatu[] list = fs.listStatus();
Path[] paths = FileUtils.status2path(list)
for(Path p : paths){
fs = FileSystem.get(RUI.create(p), conf);
fs.openStream();
}
4)fs.delete
fs.mkdir()