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("遍历文件夹成功");
			}
			
		}


	

  

posted @ 2015-11-30 13:41  ciade  阅读(304)  评论(0编辑  收藏  举报