全部产品
Search
文档中心

Object Storage Service:Hubungkan kluster non-EMR ke OSS-HDFS

更新时间:Jul 06, 2025

OSS-HDFS (JindoFS) sepenuhnya kompatibel dengan operasi API Hadoop Distributed File System (HDFS) dan mendukung operasi tingkat direktori. JindoSDK memungkinkan aplikasi komputasi dan analisis berbasis Apache Hadoop, seperti MapReduce, Hive, Spark, dan Flink, untuk mengakses HDFS. Topik ini menjelaskan cara menerapkan JindoSDK pada instance Elastic Compute Service (ECS) dan melakukan operasi umum terkait OSS-HDFS.

Catatan

Jika Anda menggunakan kluster Alibaba Cloud E-MapReduce (EMR), hubungkan kluster EMR ke OSS-HDFS dengan menggunakan metode yang dijelaskan di Hubungkan kluster EMR ke OSS-HDFS.

Prasyarat

  • Secara default, akun Alibaba Cloud memiliki izin untuk menghubungkan kluster non-EMR ke OSS-HDFS dan melakukan operasi umum terkait OSS-HDFS. Akun Alibaba Cloud atau pengguna RAM yang diberi izin yang diperlukan telah dibuat. Jika Anda ingin menggunakan pengguna RAM untuk menghubungkan kluster non-EMR ke OSS-HDFS, pengguna RAM harus memiliki izin yang diperlukan. Untuk informasi lebih lanjut, lihat Berikan izin kepada pengguna RAM untuk menghubungkan kluster non-EMR ke OSS-HDFS.

Tutorial video

Video berikut memberikan contoh tentang cara menghubungkan kluster non-EMR ke OSS-HDFS dan melakukan operasi umum.

Prosedur

  1. Hubungkan ke instance ECS. Untuk informasi lebih lanjut, lihat Hubungkan ke instance.

  2. Unduh dan ekstrak paket JAR JindoSDK. Untuk mengunduh JindoSDK, kunjungi GitHub.

  3. Jalankan perintah berikut untuk mengekstrak paket JAR JindoSDK:

    Kode sampel berikut memberikan contoh tentang cara mengekstrak paket JAR JindoSDK bernama jindosdk-x.x.x-linux.tar.gz. Jika Anda menggunakan versi lain dari JindoSDK, ganti nama paket dengan nama paket JAR JindoSDK yang sesuai.

    tar zxvf jindosdk-x.x.x-linux.tar.gz
    Catatan

    x.x.x menunjukkan nomor versi paket JAR JindoSDK.

  4. Konfigurasikan variabel lingkungan.

    1. Konfigurasikan JINDOSDK_HOME.

      Kode sampel berikut memberikan contoh tentang cara mengekstrak paket ke direktori /usr/lib/jindosdk-x.x.x-linux:

      export JINDOSDK_HOME=/usr/lib/jindosdk-x.x.x-linux
    2. Konfigurasikan HADOOP_CLASSPATH.

      export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:${JINDOSDK_HOME}/lib/*
      Penting

      Tentukan direktori instalasi paket dan konfigurasikan variabel lingkungan di semua node yang diperlukan.

  5. Konfigurasikan kelas implementasi OSS-HDFS dan tentukan pasangan AccessKey yang ingin Anda gunakan untuk mengakses bucket.

    1. Jalankan perintah berikut untuk masuk ke file konfigurasi Hadoop bernama core-site.xml:

      vim /usr/local/hadoop/etc/hadoop/core-site.xml
    2. Konfigurasikan kelas implementasi DLS JindoSDK dalam file 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>
    3. Dalam file core-site.xml, konfigurasikan pasangan AccessKey dari akun Alibaba Cloud atau pengguna RAM yang memiliki izin yang diperlukan.

      Untuk informasi lebih lanjut tentang izin yang harus dimiliki pengguna RAM dalam skenario ini, lihat Berikan izin kepada pengguna RAM untuk menghubungkan kluster non-EMR ke OSS-HDFS.

      <configuration>
          <property>
              <name>fs.oss.accessKeyId</name>
              <value>xxx</value>
          </property>
      
          <property>
              <name>fs.oss.accessKeySecret</name>
              <value>xxx</value>
          </property>
      </configuration>
  6. Tentukan titik akhir OSS-HDFS.

    Anda harus menentukan titik akhir OSS-HDFS jika Anda ingin menggunakan OSS-HDFS untuk mengakses bucket OSS. Kami merekomendasikan Anda mengonfigurasi jalur akses dalam format berikut: oss://<Bucket>.<Endpoint>/<Object>. Contoh: oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/exampleobject.txt. Setelah Anda mengonfigurasi jalur akses, JindoSDK memanggil operasi OSS-HDFS yang sesuai berdasarkan titik akhir yang ditentukan dalam jalur akses.

    Anda juga dapat mengonfigurasi titik akhir OSS-HDFS dengan menggunakan metode lain. Titik akhir yang dikonfigurasi dengan menggunakan metode berbeda memiliki prioritas berbeda. Untuk informasi lebih lanjut, lihat Lampiran 1: Metode lain yang digunakan untuk mengonfigurasi titik akhir OSS-HDFS.

  7. Jalankan perintah Shell HDFS untuk melakukan operasi umum yang terkait dengan OSS-HDFS.

    • Unggah file lokal

      Jalankan perintah berikut untuk mengunggah file lokal bernama examplefile.txt di direktori root lokal ke bucket bernama examplebucket:

      hdfs dfs -put examplefile.txt oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/
    • Unduh objek

      Jalankan perintah berikut untuk mengunduh objek bernama exampleobject.txt dari bucket bernama examplebucket ke direktori root bernama /tmp di komputer Anda:

      hdfs dfs -get oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/exampleobject.txt  /tmp/

    Untuk informasi lebih lanjut, lihat Gunakan perintah Shell Hadoop untuk mengakses OSS-HDFS.

Lampiran 1: Metode lain yang digunakan untuk mengonfigurasi titik akhir OSS-HDFS

Selain metode sebelumnya yang digunakan untuk mengonfigurasi titik akhir dalam jalur akses, Anda dapat menggunakan metode berikut untuk mengonfigurasi titik akhir:

  • Gunakan titik akhir tingkat bucket

    Jika Anda menggunakan jalur akses dalam format oss://<Bucket>/<Object>, tidak ada titik akhir yang dikonfigurasi. Dalam hal ini, Anda dapat mengonfigurasi titik akhir tingkat bucket dalam file core-site.xml untuk menunjuk ke titik akhir OSS-HDFS.

    <configuration>
        <property>
            <!-- Dalam contoh ini, examplebucket digunakan sebagai nama bucket tempat OSS-HDFS diaktifkan. Tentukan nama bucket aktual Anda.   -->
            <name>fs.oss.bucket.examplebucket.endpoint</name>
            <!-- Dalam contoh ini, titik akhir wilayah China (Hangzhou) digunakan. Tentukan titik akhir aktual Anda.   -->
            <value>cn-hangzhou.oss-dls.aliyuncs.com</value>
        </property>
    </configuration>
  • Gunakan titik akhir OSS default

    Jika Anda menggunakan jalur akses dalam format oss://<Bucket>/<Object> dan tidak menentukan titik akhir tingkat bucket dalam jalur akses, titik akhir OSS default digunakan untuk mengakses OSS-HDFS. Jalankan kode berikut untuk mengonfigurasi titik akhir OSS default dalam file konfigurasi Hadoop bernama core-site.xml:

    <configuration>
        <property>
            <name>fs.oss.endpoint</name>
            <!-- Dalam contoh ini, titik akhir wilayah China (Hangzhou) digunakan. Tentukan titik akhir aktual Anda.   -->
            <value>cn-hangzhou.oss-dls.aliyuncs.com</value>
        </property>
    </configuration>
Catatan

Titik akhir berikut yang dikonfigurasi dengan menggunakan metode berbeda disusun dalam urutan prioritas menurun: titik akhir yang ditentukan dalam jalur akses > titik akhir tingkat bucket > titik akhir OSS default.

Lampiran 2: Penyetelan performa

Anda dapat menambahkan item konfigurasi berikut ke file core-site.xml berdasarkan kebutuhan Anda. Hanya JindoSDK 4.0 dan yang lebih baru yang mendukung item konfigurasi ini.

<configuration>

    <property>
          <!-- Tentukan direktori tempat klien menulis file sementara. Anda dapat mengonfigurasi beberapa direktori yang dipisahkan oleh koma (,). Izin baca dan tulis harus diberikan dalam lingkungan yang melibatkan banyak pengguna. -->
        <name>fs.oss.tmp.data.dirs</name>
        <value>/tmp/</value>
    </property>

    <property>
          <!-- Tentukan jumlah percobaan ulang untuk akses gagal ke OSS. -->
        <name>fs.oss.retry.count</name>
        <value>5</value>
    </property>

    <property>
          <!-- Tentukan periode timeout permintaan akses OSS. Unit: milidetik. -->
        <name>fs.oss.timeout.millisecond</name>
        <value>30000</value>
    </property>

    <property>
          <!-- Tentukan periode timeout koneksi OSS. Unit: milidetik. -->
        <name>fs.oss.connection.timeout.millisecond</name>
        <value>3000</value>
    </property>

    <property>
          <!-- Tentukan jumlah thread konkuren yang dapat digunakan untuk mengunggah satu objek ke OSS. -->
        <name>fs.oss.upload.thread.concurrency</name>
        <value>5</value>
    </property>

    <property>
          <!-- Tentukan jumlah tugas konkuren yang dapat dimulai untuk mengunggah objek ke OSS. -->
        <name>fs.oss.upload.queue.size</name>
        <value>5</value>
    </property>

    <property>
          <!-- Tentukan jumlah maksimum tugas konkuren yang dimulai untuk mengunggah objek ke OSS dalam satu proses. -->
        <name>fs.oss.upload.max.pending.tasks.per.stream</name>
        <value>16</value>
    </property>

    <property>
          <!-- Tentukan jumlah tugas konkuren yang dapat dimulai untuk mengunduh objek dari OSS. -->
        <name>fs.oss.download.queue.size</name>
        <value>5</value>
    </property>

    <property>
          <!-- Tentukan jumlah maksimum tugas konkuren yang dapat dimulai untuk mengunduh objek dari OSS dalam satu proses. -->
        <name>fs.oss.download.thread.concurrency</name>
        <value>16</value>
    </property>

    <property>
          <!-- Tentukan ukuran buffer yang dapat digunakan untuk membaca data secara pramuat dari OSS. -->
        <name>fs.oss.read.readahead.buffer.size</name>
        <value>1048576</value>
    </property>

    <property>
          <!-- Tentukan jumlah buffer yang dapat digunakan untuk membaca data secara pramuat dari OSS secara bersamaan. -->
        <name>fs.oss.read.readahead.buffer.count</name>
        <value>4</value>
    </property>

</configuration>