日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
    1. 西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
      軟件
      軟件
      文章
      搜索

      首頁西西教程操作系統(tǒng) → HDFS文件系統(tǒng)基本文件命令、編程讀寫HDFS

      HDFS文件系統(tǒng)基本文件命令、編程讀寫HDFS

      相關(guān)軟件相關(guān)文章發(fā)表評論 來源:西西整理時間:2012/4/5 22:07:17字體大。A-A+

      作者:佚名點擊:678次評論:0次標簽: 文件系統(tǒng)

      • 類型:硬件驅(qū)動大。218KB語言:中文 評分:1.3
      • 標簽:
      立即下載

      HDFS是一種文件系統(tǒng),存儲著Hadoop應(yīng)用將要處理的數(shù)據(jù),類似于普通的Unix和linux文件系統(tǒng),不同的是他是實現(xiàn)了google的GFS文件系統(tǒng)的思想,是適用于大規(guī)模分布式數(shù)據(jù)處理相關(guān)應(yīng)用的、可擴展的分布式文件系統(tǒng)。它有以下優(yōu)點:

      1、在分布式存儲中,經(jīng)常會出現(xiàn)節(jié)點失效的情況,HDFS可以持續(xù)監(jiān)視,錯誤檢查,容錯處理,自動恢復;

      2、分布式存儲的文件都是非常巨大的,HDFS重新規(guī)定了每次I/O的塊的大;

      3、對于搜索引擎的業(yè)務(wù),大部分都只會在文件尾添加新數(shù)據(jù),很少修改已有數(shù)據(jù)。HDFS做了優(yōu)化;

      4、與應(yīng)用一起設(shè)計的文件系統(tǒng)API對整個系統(tǒng)的彈性和適用性有很大好處;

      5、有效的支持多個客戶端并行添加同一個文件。

      雖然HDFS實現(xiàn)了這么多的功能,但是因為它已經(jīng)實現(xiàn)為一個開源框架,所以對于程序開發(fā)者來說,并不需要了解其底層的文件操作,我們可以通過其提供的一套與linux文件命令類似的命令行工具來進行文件操作。

      基本文件命令:

      格式為:hadoop fs -cmd <args>

      cmd的命名通常與unix對應(yīng)的命令名相同。例如,文件列表命令: hadoop fs -ls

      1、添加目錄和文件

      HDFS有一個默認的工作目錄 /user/$USER,其中$USER是你的登錄用戶名。不過目錄不會自動建立,我們現(xiàn)在用mkdir建立它,我使用的是chen作為用戶名。

      hadoop fs -mkdir /user/chen

      (hadoop的mkdir命令會自動創(chuàng)建父目錄,類似于帶-p的unix命令)

      我們現(xiàn)在放本地文件系統(tǒng)的一個文件進去。

      hadoop fs -put example.txt .

      最后一個參數(shù)是句點,相當于放入了默認的工作目錄,等價于 hadoop fs -put example.txt /user/chen

      當你把文件放入HDFS上后,你就可以運行Hadoop程序來處理它。

      2、檢索文件

      get命令與put命令相反,它從HDFS復制文件回到本地文件系統(tǒng)。

      hadoop fs -get example.txt .

      復制到本地的當前工作目錄中。

      另一種是顯示數(shù)據(jù),用cat

      hadoop fs -cat example.txt

      3、刪除文件

      rm命令

      hadoop fs -rm example.txt

      也可以用來刪除空目錄

      編程讀寫HDFS

      利用HDFS給我們提供的API,我們同樣可以訪問它。

      在Hadoop中用作文件操作的主類位于org.apache.hadoop.fs軟件包中。包括常見的open、read、write、close。Hadoop文件的API起點是FileSystem類,這是一個與文件系統(tǒng)交互的抽象類,我們通過調(diào)用factory的方法FileSystem.get(Configuration conf)來取得所需的FileSystem實例,如下我們可以獲得與HDFS接口的FileSystem對象:

      Configuration conf = new Configuration();

      FileSystem hdfs = FileSystem.get(conf);//獲得HDFS的FileSystem對象

      如果我們要實現(xiàn)HDFS與本地文件系統(tǒng)的交互,我們還需要獲取本地文件系統(tǒng)的FileSystem對象

      FileSystem local = FileSystem.getLocal(conf);//獲得本地文件系統(tǒng)的FileSystem對象

      以下代碼講解了一個例子,我們開發(fā)一個PutMerge程序,用于合并本地文件后放入HDFS,因為大文件HDFS處理起來比較容易,所以這個程序經(jīng)常會在以后的開發(fā)中用到

      import java.io.IOException;  
      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;  
      public class PutMerge {  
          public static void main(String[] args) throws IOException {  
          Configuration conf = new Configuration();  
          FileSystem hdfs =FileSystem.get(conf); //獲得HDFS文件系統(tǒng)的對象  
          FileSystem local = FileSystem.getLocal(conf);//獲得本地文件系統(tǒng)的對象  
          Path inputDir = new Path(args[0]);//設(shè)定輸入目錄  
          Path hdfsFile = new Path(args[1]);//設(shè)定輸出目錄  
         try{  
             FileStatus[] inputFiles = local.listStatus(inputDir);//FileStatus的listStatus()方法獲得一個目錄中的文件列表  
            FSDataOutputStream out = hdfs.create(hdfsFile);//生成HDFS輸出流  
            for(int i = 0; i < inputFiles.length; i ++){  
                  System.out.println(inputFiles[i].getPath().getName());  
                  FSDataInputStream in = local.open(inputFiles[i].getPath());//打開本地輸入流  
                byte[] buffer = new byte[256];  
                  int bytesRead = 0;  
                  while((bytesRead = in.read(buffer))>0){  
                  out.write(buffer,0,bytesRead);//通過一個循環(huán)來寫入  
                }  
                  in.close();  
               }  
               out.close();  
           }catch (IOException e) {  
                 e.printStackTrace();  
           }  
       }

        相關(guān)評論

        閱讀本文后您有什么感想? 已有人給出評價!

        • 8 喜歡喜歡
        • 3 頂
        • 1 難過難過
        • 5 囧
        • 3 圍觀圍觀
        • 2 無聊無聊

        熱門評論

        最新評論

        發(fā)表評論 查看所有評論(0)

        昵稱:
        表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
        字數(shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)