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


	
相關文章
相關標籤/搜索