需要的jar包在hadoop里都可以找到,下面的例子中,至少需要这些jar包:
commons-cli-1.2.jar commons-collections-3.2.1.jar commons-configuration-1.6.jar commons-io-2.4.jar commons-lang-2.6.jar commons-logging-1.1.3.jar guava-11.0.2.jar hadoop-auth-2.7.1.jar hadoop-common-2.7.1.jar hadoop-hdfs-2.7.1.jar htrace-core-3.1.0-incubating.jar log4j-1.2.17.jar protobuf-java-2.5.0.jar servlet-api.jar slf4j-api-1.7.10.jar slf4j-log4j12-1.7.10.jar
代码如下:
package com.neohope.hadoop.test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; 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 HDFSTest { static Configuration hdfsConfig; static { hdfsConfig = new Configuration(); hdfsConfig.addResource(new Path("etc/hadoop/core-site.xml")); hdfsConfig.addResource(new Path("etc/hadoop/hdfs-site.xml")); } // 创建文件夹 public static void createDirectory(String dirPath) throws IOException { FileSystem fs = FileSystem.get(hdfsConfig); Path p = new Path(dirPath); try { fs.mkdirs(p); } finally { fs.close(); } } // 删除文件夹 public static void deleteDirectory(String dirPath) throws IOException { FileSystem fs = FileSystem.get(hdfsConfig); Path p = new Path(dirPath); try { fs.deleteOnExit(p); } finally { fs.close(); } } // 重命名文件夹 public static void renameDirectory(String oldDirPath, String newDirPath) throws IOException { renameFile(oldDirPath, newDirPath); } // 枚举文件 public static void listFiles(String dirPath) throws IOException { FileSystem hdfs = FileSystem.get(hdfsConfig); Path listf = new Path(dirPath); try { FileStatus statuslist[] = hdfs.listStatus(listf); for (FileStatus status : statuslist) { System.out.println(status.getPath().toString()); } } finally { hdfs.close(); } } // 新建文件 public static void createFile(String filePath) throws IOException { FileSystem fs = FileSystem.get(hdfsConfig); Path p = new Path(filePath); try { fs.createNewFile(p); } finally { fs.close(); } } // 删除文件 public static void deleteFile(String filePath) throws IOException { FileSystem fs = FileSystem.get(hdfsConfig); Path p = new Path(filePath); try { fs.deleteOnExit(p); } finally { fs.close(); } } // 重命名文件 public static void renameFile(String oldFilePath, String newFilePath) throws IOException { FileSystem fs = FileSystem.get(hdfsConfig); Path oldPath = new Path(oldFilePath); Path newPath = new Path(newFilePath); try { fs.rename(oldPath, newPath); } finally { fs.close(); } } // 上传文件 public static void putFile(String locaPath, String hdfsPath) throws IOException { FileSystem fs = FileSystem.get(hdfsConfig); Path src = new Path(locaPath); Path dst = new Path(hdfsPath); try { fs.copyFromLocalFile(src, dst); } finally { fs.close(); } } // 取回文件 public static void getFile(String hdfsPath, String locaPath) throws IOException { FileSystem fs = FileSystem.get(hdfsConfig); Path src = new Path(hdfsPath); Path dst = new Path(locaPath); try { fs.copyToLocalFile(false, src, dst, true); } finally { fs.close(); } } // 读取文件 public static void readFile(String hdfsPath) throws IOException { FileSystem hdfs = FileSystem.get(hdfsConfig); Path filePath = new Path(hdfsPath); InputStream in = null; BufferedReader buff = null; try { in = hdfs.open(filePath); buff = new BufferedReader(new InputStreamReader(in)); String str = null; while ((str = buff.readLine()) != null) { System.out.println(str); } } finally { buff.close(); in.close(); hdfs.close(); } } public static void main(String[] args) throws IOException { System.setProperty("HADOOP_USER_NAME", "hadoop"); // createDirectory("hdfs://hadoop-master:9000/usr"); // createDirectory("hdfs://hadoop-master:9000/usr/hansen"); // createDirectory("hdfs://hadoop-master:9000/usr/hansen/test"); // renameDirectory("hdfs://hadoop-master:9000/usr/hansen/test","hdfs://hadoop-master:9000/usr/hansen/test01"); // createFile("hdfs://hadoop-master:9000/usr/hansen/test01/hello.txt"); // renameFile("hdfs://hadoop-master:9000/usr/hansen/test01/hello.txt","hdfs://hadoop-master:9000/usr/hansen/test01/hello01.txt"); // putFile("hello.txt","hdfs://hadoop-master:9000/usr/hansen/test01/hello02.txt"); // getFile("hdfs://hadoop-master:9000/usr/hansen/test01/hello02.txt","hello02.txt"); // readFile("hdfs://hadoop-master:9000/usr/hansen/test01/hello02.txt"); listFiles("hdfs://hadoop-master:9000/usr/hansen/test01/"); } }