手动导入需要用的jars,也可以使用maven。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
public class HdfsClientDemo { FileSystem hdfsClient;
@Before public void init() throws Exception { Configuration conf = new Configuration(); conf.addResource("myconf.xml"); conf.set("dfs.replication", "2"); conf.set("dfs.blocksize", "32m");
hdfsClient = FileSystem.get(new URI("hdfs://hdp-nn-01:9000/"), conf, "root");
@Test public void testPutFile() throws Exception { hdfsClient.copyFromLocalFile(new Path("d:/jdk-8u191-linux-x64.tar.gz"), new Path("/jdk8.gz")); hdfsClient.close(); }
@Test public void testGetFile() throws Exception { hdfsClient.copyToLocalFile(false, new Path("/jdk8.gz"), new Path("d:/"), true); hdfsClient.close(); }
|
注意:HDFS客户端从HDFS上读取数据写入本地磁盘时,可以使用Hadoop自己开发的本地库操作,也可以使用java 的原生库来操作本地文件。 参数就是useRawLocalFileSystem,如果为true,则使用java原生库;false则使用Hadoop自己的本地库。如果要使用Hadoop的本地库来操作本地文件,要配置Hadoop在本地的环境。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
@Test public void testMkdir() throws Exception { hdfsClient.mkdirs(new Path("/xxx/yyy"), new FsPermission((short) 777)); hdfsClient.close(); }
@Test public void testDeldir() throws Exception {
hdfsClient.delete(new Path("/xxx"), true); hdfsClient.close(); }
@Test public void testRenamedir() throws Exception {
hdfsClient.rename(new Path("/xxx"), new Path("/ooo")); hdfsClient.close(); } }
|