前言
最近接触了分布式文件存储系统FastDFS,但FastDFS是底层是用C语言写的,因此安装的时候还需要make,这一点很是不爽。自己之前研究过Hadoop,其中的hdfs就是一个分布式文件系统,而且Hadoop是用java语言编写的,因此考虑能否用hdfs来代替FastDFS。
经过反复实践,基本能够远程连接hdfs进行文件的操作了,直接上代码。本示例的前提是先启动hdfs文件系统,关于如何搭建hdfs文件系统请参考其他文章。
初始化
private static void init(String url) throws IOException {
Configuration config = new Configuration();
config.set("fs.defaultFS", url);
hdfs = FileSystem.get(URI.create(url), config);
}
其中url为远程hdfs地址,例如hdfs://127.0.0.1:9000
上传文件
public static void uploadFile2HDFS(String s, String d) throws IOException {
Path src = new Path(s);
Path dst = new Path(hdfs.getWorkingDirectory() + d);
hdfs.copyFromLocalFile(src, dst);
}
注:s为本地文件路径,d为远程文件保存的绝对路径,下同。
上传二进制内容