<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Hadoop系列007-HDFS客戶端操作

      本人微信公眾號,歡迎掃碼關注!

      HDFS客戶端操作

      1 環境準備

      1.1 Jar包準備

      1)解壓hadoop-2.7.2.tar.gz到非中文目錄

      注意1:如果使用WinRAR解壓報錯的話,就使用超級管理員權限打開DOS窗口,然后cd到解壓包所在位置,執行start winrar x -y xxx.tar.gz命令,即可成功

      注意2:使用對應平臺下編譯后的hadoop源碼包,即win7系統使用在win7下編譯后的源碼包,win10同理。

      2)進入share文件夾,查找所有jar包,并把jar包拷貝到_lib文件夾下

      3)在全部jar包中查找.source.jar,并剪切到_source文件夾。

      4)在全部jar包中查找tests.jar,并剪切到_test文件夾。

      1.2 IDEA準備

      1)配置HADOOP_HOME環境變量

      2)建立工程并且添加依賴

      注意:Eclipse全選Jar包右鍵Add Build Path

      3)編寫代碼測試

      
      

      4)執行程序

      客戶端去操作hdfs時,是有一個用戶身份的。默認情況下,hdfs客戶端api會從jvm中獲取一個參數來作為自己的用戶身份:-DHADOOP_USER_NAME=atguigu,atguigu為用戶名稱。

      5)驗證

      2 通過API操作HDFS

      2.1 HDFS獲取文件系統
      @Test
      public void getFileSystem() {
          // 1 創建配置對象
          Configuration conf = new Configuration();
          // 2 獲取文件系統
          FileSystem fs = null;
          try {
              fs = FileSystem.get(new URI("hdfs://hadoop102:8020"), conf, "intflag");
      
              // 3 打印文件系統
              System.out.println(fs);
          } catch (IOException e) {
              e.printStackTrace();
          } catch (InterruptedException e) {
              e.printStackTrace();
          } catch (URISyntaxException e) {
              e.printStackTrace();
          } finally {
              if (fs != null) {
                  try {
                      fs.close();
                  } catch (IOException e) {
                      e.printStackTrace();
                  }
              }
          }
      }
      

      2.2 HDFS文件上傳
      @Test
      public void putFileToHDFS() {
          // 1 獲取文件系統
          FileSystem fs = getFileSystem();
          // 2 上傳文件
          try {
              fs.copyFromLocalFile(true,new Path("D:/test/x3.000"), new Path("/user/intflag/input/x3.000"));
          } catch (IOException e) {
              e.printStackTrace();
          } finally {
              // 3 關閉資源
              closeFileSystem(fs);
          }
      }
      
      2.3 HDFS文件下載
      @Test
      public void getFileFromHDFS() {
          // 1 獲取文件系統
          FileSystem fs = getFileSystem();
          // 2 下載文件
          try {
              fs.copyToLocalFile(new Path("/user/intflag/input/x3.000"),new Path("D:/test/x3.000"));
          } catch (IOException e) {
              e.printStackTrace();
          } finally {
              // 3 關閉資源
              closeFileSystem(fs);
          }
      }
      
      2.4 HDFS目錄創建
      /**
       * 在HDFS上創建文件夾
       */
      @Test
      public void mkdirAtHDFS() {
          // 1 獲取文件系統
          FileSystem fs = getFileSystem();
          // 2 創建文件夾
          try {
              fs.mkdirs(new Path("/user/intflag/test"));
          } catch (IOException e) {
              e.printStackTrace();
          } finally {
              // 3 關閉資源
              closeFileSystem(fs);
          }
      }
      
      2.5 HDFS文件夾刪除
      /**
       * 刪除HDFS上的文件夾
       */
      @Test
      public void deleteDirAtHDFS() {
          // 1 獲取文件系統
          FileSystem fs = getFileSystem();
          // 2 刪除文件夾
          try {
              //fs.delete(new Path("/user/intflag/test"));
              fs.delete(new Path("/user/intflag/test"),true);
          } catch (IOException e) {
              e.printStackTrace();
          } finally {
              // 3 關閉資源
              closeFileSystem(fs);
          }
      }
      
      2.6 HDFS文件名更改
      /**
       * 重命名HDFS上的文件夾
       */
      @Test
      public void renameDirAtHDFS() {
          // 1 獲取文件系統
          FileSystem fs = getFileSystem();
          // 2 重命名文件夾
          try {
              fs.rename(new Path("/user/intflag/test"), new Path("/user/intflag/test22"));
          } catch (IOException e) {
              e.printStackTrace();
          } finally {
              // 3 關閉資源
              closeFileSystem(fs);
          }
      }
      
      2.7 HDFS文件詳情查看
      /**
       * 讀取HDFS上的文件信息
       */
      @Test
      public void readFileAtHDFS() {
          // 1 獲取文件系統
          FileSystem fs = getFileSystem();
          // 2 讀取文件信息
          try {
              RemoteIterator<LocatedFileStatus> listFiles = fs.listFiles(new Path("/"), true);
              while (listFiles.hasNext()) {
                  LocatedFileStatus status = listFiles.next();
                  System.out.println("-----------------------------------");
                  System.out.println("文件名稱:"+status.getPath().getName());
                  System.out.println("塊的大小:"+status.getBlockSize());
                  System.out.println("內容長度:"+status.getLen());
                  System.out.println("文件權限:"+status.getPermission());
              }
          } catch (IOException e) {
              e.printStackTrace();
          } finally {
              // 3 關閉資源
              closeFileSystem(fs);
          }
      }
      
      -----------------------------------
      文件名稱:asd.txt
      塊的大小:134217728
      內容長度:34
      文件權限:rw-r--r--
      -----------------------------------
      文件名稱:hadoop-2.7.2.tar.gz
      塊的大小:134217728
      內容長度:197657687
      文件權限:rw-r--r--
      -----------------------------------
      文件名稱:liugx.txt
      塊的大小:134217728
      內容長度:64
      文件權限:rw-r--r--
      -----------------------------------
      文件名稱:x3.000
      塊的大小:134217728
      內容長度:592
      文件權限:rw-r--r--
      
      Process finished with exit code 0
      
      2.8 HDFS文件夾查看
      /**
       * 讀取文件夾信息
       */
      @Test
      public void readFfolderAtHDFS() {
          // 1 獲取文件系統
          FileSystem fs = getFileSystem();
          // 2 讀取文件夾信息
          try {
              FileStatus[] listStatus = fs.listStatus(new Path("/user/intflag/"));
              for (FileStatus status : listStatus) {
                  if (status.isFile()) {
                      System.out.println("f----"+status.getPath().getName());
                  } else {
                      System.out.println("d----"+status.getPath().getName());
                  }
              }
          } catch (IOException e) {
              e.printStackTrace();
          } finally {
              // 3 關閉資源
              closeFileSystem(fs);
          }
      }
      

      3 通過IO流操作HDFS

      3.1 HDFS文件上傳
      /**
       * 文件上傳到HDFS
       */
      @Test
      public void putFileToHDFS() {
          // 1 獲取HDFS
          FileSystem fs = getFileSystem();
      
          try {
              // 2 獲取輸出流
              FSDataOutputStream fos = fs.create(new Path("/user/intflag/input/x3.000"));
              // 3 獲取輸入流
              FileInputStream fis = new FileInputStream(new File("D:/test/x3.000"));
              // 4 流對接
              IOUtils.copyBytes(fis, fos, new Configuration());
              // 5 關閉流
              IOUtils.closeStream(fis);
              IOUtils.closeStream(fos);
          } catch (IOException e) {
              e.printStackTrace();
          } finally {
              // 5 關閉資源
              closeFileSystem(fs);
          }
      }
      
      3.2 HDFS文件下載
      /**
       * 下載文件
       */
      @Test
      public void getFileFromHDFS() {
          // 1 獲取HDFS
          FileSystem fs = getFileSystem();
      
          try {
              // 2 獲取輸入流
              FSDataInputStream fis = fs.open(new Path("/user/intflag/input/liugx.txt"));
      
              // 3 獲取輸出流
              FileOutputStream fos = new FileOutputStream(new File("D:/test/liugx.txt"));
      
              // 4 流對接
              IOUtils.copyBytes(fis, fos, new Configuration());
              // 5 關閉流
              IOUtils.closeStream(fis);
              IOUtils.closeStream(fos);
          } catch (IOException e) {
              e.printStackTrace();
          } finally {
              // 5 關閉資源
              closeFileSystem(fs);
          }
      }
      
      3.3 定位文件讀取

      下載第一塊

      /**
       * 下載大文件-下載第一塊
       */
      @Test
      public void getFileFromHDFSSeek1() {
          // 1 獲取HDFS
          FileSystem fs = getFileSystem();
      
          try {
              // 2 獲取輸入流
              FSDataInputStream fis = fs.open(new Path("/user/intflag/input/hadoop-2.7.2.tar.gz"));
      
              // 3 獲取輸出流
              FileOutputStream fos = new FileOutputStream(new File("D:/test/hadoop-2.7.2.tar.gz.part1"));
      
              // 4 流對接(只讀取128m)
              byte[] buff = new byte[1024];
              //1024 * 1024 * 128
              int len = 1024 * 128;
              for (int i = 0; i < len; i++) {
                  fis.read(buff);
                  fos.write(buff);
              }
              // 5 關閉流
              IOUtils.closeStream(fis);
              IOUtils.closeStream(fos);
          } catch (IOException e) {
              e.printStackTrace();
          } finally {
              // 5 關閉資源
              closeFileSystem(fs);
          }
      }
      

      下載第二塊

      /**
       * 下載大文件-下載第二塊
       */
      @Test
      public void getFileFromHDFSSeek2() {
          // 1 獲取HDFS
          FileSystem fs = getFileSystem();
      
          try {
              // 2 獲取輸入流
              FSDataInputStream fis = fs.open(new Path("/user/intflag/input/hadoop-2.7.2.tar.gz"));
      
              // 3 獲取輸出流
              FileOutputStream fos = new FileOutputStream(new File("D:/test/hadoop-2.7.2.tar.gz.part2"));
      
              // 4 流對接(只讀取128m)
              // 定位到128m
              int len = 1024 * 1024 * 128;
              fis.seek(len);
              IOUtils.copyBytes(fis,fos,new Configuration());
      
              // 5 關閉流
              IOUtils.closeStream(fis);
              IOUtils.closeStream(fos);
          } catch (IOException e) {
              e.printStackTrace();
          } finally {
              // 5 關閉資源
              closeFileSystem(fs);
          }
      }
      

      合并文件

      打開DOS窗口,定位到下載后的位置,輸入以下命令合并文件
      type hadoop-2.7.2.tar.gz.part2 >> hadoop-2.7.2.tar.gz.part1
      然后重命名文件hadoop-2.7.2.tar.gz.part1,將文件.part1去掉
      打開文件驗證
      
      posted @ 2018-12-10 16:58  云端笑猿  閱讀(285)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 午夜免费无码福利视频麻豆| 国产电影无码午夜在线播放| 日本一卡2卡3卡四卡精品网站| 亚洲国产日韩一区三区| 熟女人妻视频| 欧美成人va免费大片视频| 蜜臀av在线一区二区三区| 国产精品无码专区| 国产中文字幕日韩精品| 日韩精品不卡一区二区三区| 国产亚洲情侣一区二区无| 99热国产成人最新精品| 无码人妻精品一区二区三区下载| 国产日产亚洲系列av| 成人午夜在线观看刺激| 欧美最猛黑人xxxx| 国产成人免费永久在线平台| 国产三级精品三级在线区| 狠狠色丁香婷婷综合尤物| 亚洲精品男男一区二区| 久久av无码精品人妻出轨| 国产亚洲综合欧美视频| 国产精品毛片无遮挡高清| 精品久久精品久久精品久久| 欧美白妞大战非洲大炮| 亚洲色丰满少妇高潮18p| av新版天堂在线观看| 日韩女同一区二区三区久久| 久久国产精99精产国高潮| 国产精品成人午夜福利| 人妻va精品va欧美va| 亚洲国产日韩精品久久| 亚洲情A成黄在线观看动漫尤物| 亚洲日本欧美日韩中文字幕| 国产精品午夜福利精品| 日本丰满护士bbw| 91精品亚洲一区二区三区| 国产午夜影视大全免费观看| 少妇精品导航| 伊人天天久大香线蕉av色| 亚洲国产精品成人无码区|