大數據之旅之hdfs的簡單使用

大數據 HDFS Hadoop Google 只不過是敷衍 2017-04-26

大數據之旅之hdfs的簡單使用

hadoop

HDFS是一個主/從(Mater/Slave)體系結構,從最終用戶的角度來看,它就像傳統的文件系統一樣,可以通過目錄路徑對文件執行CRUD(Create、Read、Update和Delete)操作。但由於分佈式存儲的性質,HDFS集群擁有一個NameNode和一些DataNode。NameNode管理文件系統的元數據,DataNode存儲實際的數據。客戶端通過同NameNode和DataNodes的交互訪問文件系統。客戶端聯繫NameNode以獲取文件的元數據,而真正的文件I/O操作是直接和DataNode進行交互的。

hdfs就是一個分塊,冗餘。可擴展的大硬盤。

使用hdfs dfs 或者hadoop fs命令對文件進行增刪改查的操作

  1. hadoop fs -ls / 列出HDFS下的文件

  2. hadoop fs -put file / 將文件file上傳至hdfs

  3. hadoop fs -mkdir /dirname 在hdfs中創建目錄

  4. hadoop fs -text /filename 將源文件輸出為文本格式

  5. hadoop fs -rm /filename hdfs刪除文件

更多命令請自行百度、google

通過java程序訪問hdfs,就把HDFS集群當成一個大的系統磁盤就行了!

從HDFS中讀取文件

URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());

InputStream in = new URL("hdfs://192.168.56.100:9000/test.data").openStream();

IOUtils.copyBytes(in, System.out, 4096, true);

學習使用FileSystem類

Configuration conf = new Configuration();

conf.set("fs.defaultFS", "hdfs://192.168.56.100:9000"); //基本配置

FileSystem fileSystem = FileSystem.get(conf);

boolean b = fileSystem.exists(new Path("/hello")); //判斷是否存在

System.out.println(b);

boolean success = fileSystem.mkdirs(new Path("/msb")); //創建目錄

System.out.println(success);

success = fileSystem.delete(new Path("/msb"), true); //刪除目錄

System.out.println(success);

FSDataOutputStream out = fileSystem.create(new Path("/test.data"), true); //創建文件到hdfs

FileInputStream fis = new FileInputStream("c:/test/core-site.xml"); //創建一個輸入流

IOUtils.copyBytes(fis, out, 4096, true);

FileStatus[] statuses = fileSystem.listStatus(new Path("/")); //查看文件或目錄信息

for(FileStatus status : statuses) {

System.out.println(status.getPath());

System.out.println(status.getPermission());

System.out.println(status.getReplication());

}

關於基本環境的搭建可以參考我前兩篇的文章

相關推薦

推薦中...