すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:Hadoop と JindoSDK を使用した OSS-HDFS へのアクセス

最終更新日:Apr 21, 2026

OSS-HDFS は、データレイク向けのクラウドネイティブストレージプロダクトです。統一されたメタデータ管理と Hadoop 分散ファイルシステム (HDFS) API との完全な互換性を備え、POSIX (Portable Operating System Interface) のユースケースを強力にサポートします。これにより、OSS-HDFS はビッグデータや AI コンピューティングのシナリオに適しています。このトピックでは、JindoSDK を使用して Hadoop から OSS-HDFS にアクセスする方法について説明します。

前提条件

バケットに対して OSS-HDFS を有効にし、それにアクセスするために必要な権限を持っていること。詳細については、「OSS-HDFS の有効化」をご参照ください。

OSS-HDFS とは

既存の Hadoop および Spark アプリケーションを変更することなく、OSS-HDFS を使用できます。HDFS でデータを管理するのと同じように、OSS-HDFS を簡単に設定してデータにアクセスし、管理できます。また、無制限のストレージ容量、弾力的なスケーラビリティ、高いセキュリティ、信頼性、可用性といった Object Storage Service (OSS) の特徴も活用できます。

クラウドネイティブデータレイクは OSS-HDFS をベースにしています。OSS-HDFS を使用して、エクサバイト規模のデータや数億のオブジェクトを管理し、テラバイト級のスループットを実現できます。OSS-HDFS は、ビッグデータストレージの要件を満たすために、フラットな名前空間機能と階層的な名前空間機能を提供します。階層的な名前空間機能を使用して、階層的なディレクトリ構造でオブジェクトを管理できます。OSS-HDFS は、フラットな名前空間と階層的な名前空間の間でストレージ構造を自動的に変換し、オブジェクトのメタデータを一元的に管理するのに役立ちます。従来の HDFS における NameNode のアクティブ/スタンバイ冗長アーキテクチャと比較して、OSS-HDFS はメタデータ管理のためにマルチノードのアクティブ/アクティブ冗長メカニズムを実装しており、信頼性とスケーラビリティを大幅に向上させています。Hadoop ユーザーは、オブジェクトのフォーマットをコピーしたり変換したりすることなく、OSS-HDFS 内のオブジェクトにアクセスできます。これにより、ジョブのパフォーマンスが向上し、メンテナンスコストが削減されます。

OSS-HDFS のユースケース、特徴、機能の詳細については、「OSS-HDFS とは」をご参照ください。

ステップ 1: VPC と ECS インスタンスの作成

  1. OSS-HDFS への内部アクセスを許可する Virtual Private Cloud (VPC) を作成します。

    1. VPC コンソールにログインします。

    2. VPC ページで、VPC の作成 をクリックします。

      VPC を作成する際は、OSS-HDFS を有効にするバケットと同じリージョンにあることを確認してください。VPC の作成方法の詳細については、「VPC と vSwitch の作成」をご参照ください。

  2. Elastic Compute Service (ECS) インスタンスを追加します。

    1. 作成した VPC の ID をクリックし、リソース タブをクリックします。

    2. 含まれている基本的なクラウドリソース セクションで、ECS の右側にある 序号 アイコンをクリックします。

    3. [インスタンス] ページで、ECS インスタンスを作成します。

      ECS インスタンスを作成する際は、VPC と同じリージョンにあることを確認してください。詳細な手順については、「ウィザードを使用したインスタンスの作成」をご参照ください。

ステップ 2: Hadoop 環境のセットアップ

  1. Java 環境をインストールします。

    1. 作成した ECS インスタンスを見つけて 接続 をクリックします。

      ECS インスタンスへのリモート接続を確立する方法の詳細については、「接続方法」をご参照ください。

    2. JDK のバージョンを確認します。

      java -version
    3. 任意: ご利用の JDK バージョンが 1.8.0 より前の場合は、アンインストールします。それ以外の場合は、このステップをスキップしてください。

      rpm -qa | grep java | xargs rpm -e --nodeps
    4. Java をインストールします。

      sudo yum install java-1.8.0-openjdk* -y
    5. 次のコマンドを実行して設定ファイルを開きます。

      vim /etc/profile
    6. 環境変数を追加します。

      JDK パスが存在しないというメッセージが表示された場合は、`/usr/lib/jvm/` ディレクトリに移動して `java-1.8.0-openjdk` を見つけてください。

      export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
      export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar
      export PATH=$PATH:$JAVA_HOME/bin
    7. 環境変数の設定を適用します。

      source /etc/profile
  2. SSH サービスを有効にします。

    1. SSH サービスをインストールします。

      sudo yum install -y openssh-clients openssh-server
    2. SSH サービスを有効にします。

      systemctl enable sshd && systemctl start sshd
    3. SSH キーを生成し、公開鍵を `authorized_keys` のリストに追加します。

      ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
      cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
      chmod 0600 ~/.ssh/authorized_keys
  3. Hadoop をインストールします。

    1. Hadoop インストールパッケージをダウンロードします。

      この例では Hadoop 3.4.0 を使用します。異なるバージョンを使用する場合は、パッケージ名を適宜置き換えてください。Hadoop インストールパッケージを見つけるには、「Apache Hadoop Releases」をご参照ください。

      wget https://downloads.apache.org/hadoop/common/hadoop-3.4.0/hadoop-3.4.0.tar.gz
    2. インストールパッケージを展開します。

      tar xzf hadoop-3.4.0.tar.gz
    3. パッケージを標準のインストールディレクトリに移動します。

      mv hadoop-3.4.0 /usr/local/hadoop
    4. 環境変数を設定します。

      1. Hadoop 環境変数を設定します。

        vim /etc/profile
        export HADOOP_HOME=/usr/local/hadoop
        export PATH=$HADOOP_HOME/bin:$PATH
        source /etc/profile
      2. Hadoop 設定ファイル内の `HADOOP_HOME` を更新します。

        cd $HADOOP_HOME
        vim etc/hadoop/hadoop-env.sh
      3. `${JAVA_HOME}` を実際のパスに置き換えます。

        export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
    5. 任意: 「directory does not exist」エラーが表示された場合は、次のコマンドを実行して Hadoop 設定ディレクトリに移動します。

      cd $HADOOP_HOME/etc/hadoop
    6. `core-site.xml` および `hdfs-site.xml` 設定ファイルを更新します。

      • 次のプロパティを追加して `core-site.xml` ファイルを更新します。

        <configuration>
          <!-- HDFS の NameNode のアドレスを指定します。 -->
          <property>
              <name>fs.defaultFS</name>
              <!-- ホスト名または localhost に置き換えます。 -->
              <value>hdfs://localhost:9000</value>
          </property>
        
          <!-- Hadoop の一時ディレクトリをカスタムディレクトリに変更します。 -->
          <property>
              <name>hadoop.tmp.dir</name>
              <!-- admin ユーザーにディレクトリの管理権限を付与します: sudo chown -R admin:admin /opt/module/hadoop-3.4.0 -->
              <value>/opt/module/hadoop-3.4.0/data/tmp</value>
          </property>
        </configuration>
      • 次のプロパティを追加して `hdfs-site.xml` ファイルを更新します。

        <configuration>
          <!-- HDFS レプリカの数を指定します。 -->
          <property>
              <name>dfs.replication</name>
              <value>1</value>
          </property>
        </configuration>
    7. NameNode をフォーマットします。

      hdfs namenode -format
    8. HDFS を起動します。

      HDFS を起動するには、NameNode、DataNode、および Secondary NameNode デーモンを起動する必要があります。

      1. HDFS を起動します。

        cd /usr/local/hadoop/
        sbin/start-dfs.sh
      2. 実行中のプロセスを確認します。

        jps

        出力は次のようになります。

        hdfs

        これらのステップを完了すると、HDFS デーモンが実行されます。HDFS は、`http://{ip}:9870` でアクセスできる Web UI を提供しており、クラスターの詳細を表示できます。

  4. Hadoop のインストールをテストします。

    `hadoop version` コマンドを実行します。コマンドがバージョン情報を返した場合、Hadoop は正常にインストールされています。

ステップ 3: OSS-HDFS 用の Hadoop の設定

  1. JindoSDK JAR パッケージをダウンロードします。

    1. ターゲットディレクトリに移動します。

      cd /usr/lib/
    2. 最新の JindoSDK JAR パッケージをダウンロードします。ダウンロードリンクについては、「JindoData GitHub」をご参照ください。

    3. JindoSDK JAR パッケージを展開します。

      tar zxvf jindosdk-x.x.x-linux.tar.gz
      説明

      x.x.x は JindoSDK JAR パッケージのバージョン番号を示します。

  2. 環境変数を設定します。

    1. 設定ファイルを編集します。

      vim /etc/profile
    2. `JINDOSDK_HOME` 環境変数を設定します。

      export JINDOSDK_HOME=/usr/lib/jindosdk-x.x.x-linux
    3. `HADOOP_CLASSPATH` を設定します。

      export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:${JINDOSDK_HOME}/lib/*
    4. 次のコマンドを実行して設定を適用します。

      . /etc/profile
  3. JindoSDK 実装クラスと AccessKey ペアを設定します。

    1. JindoSDK 実装クラスを Hadoop の `core-site.xml` ファイルに追加します。

      <configuration>
          <property>
              <name>fs.AbstractFileSystem.oss.impl</name>
              <value>com.aliyun.jindodata.oss.JindoOSS</value>
          </property>
      
          <property>
              <name>fs.oss.impl</name>
              <value>com.aliyun.jindodata.oss.JindoOssFileSystem</value>
          </property>
      </configuration>
    2. OSS-HDFS が有効になっているバケットの AccessKey ID と AccessKey Secret を Hadoop の `core-site.xml` ファイルに追加します。

      <configuration>
          <property>
              <name>fs.oss.accessKeyId</name>
              <value>YOUR_ACCESS_KEY_ID</value>
          </property>
      
          <property>
              <name>fs.oss.accessKeySecret</name>
              <value>YOUR_ACCESS_KEY_SECRET</value>
          </property>
      </configuration>
  4. OSS-HDFS エンドポイントを設定します。

    OSS-HDFS にアクセスするには、エンドポイントを設定する必要があります。次のアクセスパス形式を使用することを推奨します: oss://<Bucket>.<Endpoint>/<Object> (例: oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/exampleobject.txt)。JindoSDK は、アクセスパス内のエンドポイントを使用して、正しい OSS-HDFS API に接続します。

    アクセスパスでエンドポイントを指定するだけでなく、他の方法で設定することもできます。詳細については、「OSS-HDFS のエンドポイントの設定」をご参照ください。

ステップ 4: OSS-HDFS へのアクセス

  • ディレクトリの作成

    `examplebucket` バケットに `dir/` という名前のディレクトリを作成するには、次のコマンドを実行します。

    hdfs dfs -mkdir oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/dir/
  • ファイルのアップロード

    ローカルファイル `examplefile.txt` を `examplebucket` バケットにアップロードするには、次のコマンドを実行します。

    hdfs dfs -put /root/workspace/examplefile.txt oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/examplefile.txt
  • ディレクトリ情報の一覧表示

    `examplebucket` バケット内の `dir/` ディレクトリの情報を表示するには、次のコマンドを実行します。

    hdfs dfs -ls oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/dir/
  • ファイル情報の一覧表示

    `examplebucket` バケット内の `examplefile.txt` ファイルの情報を表示するには、次のコマンドを実行します。

    hdfs dfs -ls oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/examplefile.txt
  • ファイル内容の表示

    `examplebucket` バケット内の `examplefile.txt` ファイルの内容を表示するには、次のコマンドを実行します。

    重要

    このコマンドは、ファイルの内容をプレーンテキストとして画面に出力します。ファイルが特定のフォーマットでエンコードされている場合は、HDFS Java API を使用して内容を読み取り、デコードしてください。

    hdfs dfs -cat oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/examplefile.txt
  • ディレクトリまたはファイルのコピー

    `subdir1/` ディレクトリとその内容を `subdir2/` ディレクトリにコピーするには、次のコマンドを実行します。

    hdfs dfs -cp oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/subdir1/  oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/subdir2/subdir1/
  • ディレクトリまたはファイルの移動

    `srcdir/` ディレクトリとその内容を `destdir/` ディレクトリに移動するには、次のコマンドを実行します。

    hdfs dfs -mv oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/srcdir/  oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/destdir/
  • ファイルのダウンロード

    `examplebucket` バケットから `exampleobject.txt` ファイルをローカルの `/tmp/` ディレクトリにダウンロードするには、次のコマンドを実行します。

    hdfs dfs -get oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/exampleobject.txt  /tmp/
  • ディレクトリまたはファイルの削除

    `examplebucket` バケットから `destfolder/` ディレクトリとそのすべての内容を削除するには、次のコマンドを実行します。

    hdfs dfs -rm -r oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/destfolder/