HDFS操作
HDFS操作 1.shell 1.1 创建目录 hadoop fs -mkdir 目录名(其中/为根目录) 1.2 遍历目录 hadoop fs -ls 目录名 1.3 删除目录 hadoop fs -rmr 目录名 1.4 修改目录 hadoop fs -mv 原目录 目标目录 1.5 上传文件 hadoop fs -put 文件原路径 文件HDFS路径 1.6 查看文件 hadoop fs -cat 文件名(需包含目录) 1.7 删除文件 hadoop fs -rmr 文件名 1.8 修改文件 hadoop fs -mv 源文件 目标文件 2.javaAPI 2.1 FileSystem类 1.1 写文件————create方法 1.2 读取文件————open方法 1.3 删除文件————delete方法 1.4 创建目录————mkdir方法 1.5 列出目录内容————listStatus方法 1.6 显示目录和文件元数据信息————getFileStatus方法 2.2 使用步骤 2.1 导入相关jar 2.2 得到Configuration对象 2.3 得到hdfs的URI对象 2.4 得到FileSystem对象 2.5 调用filesystem的相关方法 示例: package testHadoop; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.net.URI; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IOUtils; public class testJavaAPI { public static void main(String[] args) throws Exception{ String url = "hdfs://hadoop:9000"; Configuration conf = new Configuration(); URI uri = new URI(url); FileSystem fs = FileSystem.get(uri, conf); listPath(url, fs,"/");//遍历目录 fs.mkdirs(new Path("/input/test"));//创建目录 System.out.println("创建文件夹成功!"); listPath(url, fs,"/input/test"); fs.delete(new Path("/input/test"));//删除目录 listPath(url, fs, "/input"); //创建文件 FSDataOutputStream out = fs.create(new Path("/input/test.ini")); out.writeUTF("This is first test data!"); out.flush(); out.close(); System.out.println("创建文件成功!"); listPath(url, fs, "/input"); //读取文件 FSDataInputStream in = fs.open(new Path("/input/test.ini")); IOUtils.copyBytes(in, System.out, 1024); IOUtils.closeStream(in); System.out.println("读取文件成功!"); //删除文件 fs.delete(new Path("/input/test.ini")); System.out.println("删除文件成功!"); listPath(url, fs, "/input"); //本地文件上传到服务器 File file = new File("d:/data.txt"); FileInputStream in_local = new FileInputStream(file); FSDataOutputStream out_local = fs.create(new Path("/input/data.ini")); int i; while ((i=in_local.read())!= -1){ out_local.write(i); } out_local.flush(); in_local.close(); out_local.close(); listPath(url, fs, "/input"); } private static void listPath(String url, FileSystem fs ,String path) throws FileNotFoundException, IOException { FileStatus[] status = fs.listStatus(new Path(path)); for(FileStatus s : status){ String isDir = s.isDir()?"目录":"文件"; System.out.println(s.getPath().getName() + " " + isDir); } System.out.println("遍历文件夹成功"); } }