Javaアプリを使ってHFSを操作する過程の詳細解


タイトル党はJavaAppを使ってHFSを操作しています。MAVENを使っています。操作環境はLinuxです。
まず、Mavenの環境を整えたいです。すでにある倉庫を使っています。もしあなたがダウンロードしたjarのカバンの速度が遅いなら、Mavenのダウンロードjarのカバンの鏡像駅をアリ雲に変えられます。
pom.xmlを貼ってください
使用したjarバッグ

<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.10</version>
    </dependency>
    
    <!-- hadoop Client -->
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-client</artifactId>
      <version>${hadoop.version}</version>
    </dependency>
    
</dependencies>
そしてHFSを操作するコードです。

package com.zuoyan.hadoop.hdfs;

import java.io.File;
import java.io.FileInputStream;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;

/**
 * use java api operate hdfs
 * 
 * @author beifeng
 * 
 */
public class HdfsApp {

  // get FileSystem
  public static FileSystem getFileSystem() throws Exception {
    Configuration conf = new Configuration();
    FileSystem fileSystem = FileSystem.get(conf);
    return fileSystem;
  }

  public static void read(String fileName) throws Exception {

    FileSystem fileSystem = getFileSystem();

    // read Path
    Path readPath = new Path(fileName);

    FSDataInputStream inStream = fileSystem.open(readPath);

    try {

      IOUtils.copyBytes(inStream, System.out, 4096, false);

    } catch (Exception e) {
      // TODO: handle exception
      e.printStackTrace();
    } finally {
      // if Exception close Stream
      IOUtils.closeStream(inStream);
    }
  }

  public static void main(String[] args) throws Exception{
      
      //String fileName = "/user/beifeng/mapreduce/wordcount/input/wc.input";
      //read(fileName);
    
      FileSystem fileSystem = getFileSystem();
      //write path
      String putFileName = "/user/beifeng/put-wc.input";
      
      Path writePath = new Path(putFileName);
      
      FSDataOutputStream outputStream = fileSystem.create(writePath);
      
      FileInputStream inputStream = new FileInputStream(
          new File("/opt/modules/hadoop-2.5.0/wc.input"));
      
      try {
        IOUtils.copyBytes(inputStream, outputStream, 4096,false);
      } catch (Exception e) {
        // TODO: handle exception
        inputStream.close();
        outputStream.close();
      }    
  }
}
考え方
Javaを使ってhdfsのアプリを操作して、HFSに基づく雲盤を作ってもいいです。ファイルをアップロード、削除、モバイルディレクトリ、ディレクトリを見てもいいですが、ファイルの内容を修正してはいけません。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。