全部产品
Search
文档中心

Object Storage Service:Gunakan JindoSDK dengan Flume untuk menulis data ke OSS-HDFS

更新时间:Nov 09, 2025

Apache Flume adalah sistem terdistribusi, andal, dan sangat tersedia yang digunakan untuk mengumpulkan, menggabungkan, dan memindahkan sejumlah besar data log ke penyimpanan terpusat. Flume menggunakan JindoSDK untuk menulis data ke OSS-HDFS dan memastikan penulisan transaksional dengan memanggil `flush()`. Proses ini memastikan bahwa data yang telah di-flush segera terlihat dan tidak ada data yang hilang.

Prasyarat

  • Sebuah Instance ECS telah dibuat untuk lingkungan penerapan. Untuk informasi lebih lanjut, lihat Buat Sebuah Instance.

  • Lingkungan Hadoop telah dibuat. Untuk informasi lebih lanjut, lihat Buat Lingkungan Runtime Hadoop.

  • Apache Flume telah diterapkan. Untuk informasi lebih lanjut, kunjungi Apache Flume.

  • OSS-HDFS telah diaktifkan, dan Anda memiliki izin untuk mengaksesnya. Untuk informasi lebih lanjut, lihat Aktifkan OSS-HDFS.

Prosedur

  1. Sambungkan ke instance ECS. Untuk informasi lebih lanjut, lihat Sambungkan ke Instance.

  2. Konfigurasikan JindoSDK.

    1. Unduh versi terbaru dari paket JAR JindoSDK. Untuk tautan unduhan, lihat GitHub.

    2. Ekstrak paket instalasi yang diunduh.

      Kode contoh berikut menunjukkan cara mengekstrak paket jindosdk-x.x.x-linux.tar.gz. Jika Anda menggunakan versi JindoSDK yang berbeda, ganti nama paket dengan nama aktual paket Anda.

      tar -zxvf jindosdk-x.x.x-linux.tar.gz -C/usr/lib
    3. Konfigurasikan JINDOSDK_HOME.

      export JINDOSDK_HOME=/usr/lib/jindosdk-x.x.x-linux
      export PATH=$JINDOSDK_HOME/bin:$PATH
    4. Konfigurasikan HADOOP_CLASSPATH.

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

      Pada setiap node, terapkan direktori instalasi ke folder `lib` di direktori root Flume dan atur variabel lingkungan.

    5. Konfigurasikan FLUME_CLASSPATH.

      cp ${FLUME_HOME}/conf/flume-env.sh.template ${FLUME_HOME}/conf/flume-env.sh
      echo "FLUME_CLASSPATH=/usr/lib/jindosdk-x.x.x-linux/lib/*" >>  ${FLUME_HOME}/conf/flume-env.sh
  3. Konfigurasikan sink.

    Kode contoh berikut memberikan contoh cara mengonfigurasi sink:

    # Konfigurasikan sink OSS. Atur your_bucket ke bucket tempat OSS-HDFS diaktifkan.
    xxx.sinks.oss_sink.hdfs.path = oss://${your_bucket}/flume_dir/%Y-%m-%d/%H
    
    # Jumlah maksimum event yang dapat ditulis dalam satu transaksi Flume. Kami sarankan Anda flush lebih dari 32 MB data setiap kali. Ini mencegah dampak pada kinerja keseluruhan dan mencegah banyak file staging yang dihasilkan.
    # Parameter batchSize menentukan jumlah event, yaitu jumlah entri log. Sebelum mengonfigurasi parameter ini, Anda harus mengevaluasi ukuran rata-rata event. Misalnya, ukuran rata-rata adalah 200 byte. Jika ukuran data yang di-flush setiap kali adalah 32 MB, nilai parameter batchSize adalah sekitar 160.000 (32 MB / 200 byte).
    xxx.sinks.oss_sink.hdfs.batchSize = 100000
    
    ...
    # Menentukan apakah akan mempartisi file Sistem File Terdistribusi Hadoop (HDFS) berdasarkan waktu. Timestamp dibulatkan ke bawah menjadi bilangan bulat. Nilai default: true.
    xxx.sinks.oss_sink.hdfs.round = true
    # Saat Anda mengatur parameter xxx.sinks.oss_sink.hdfs.round ke true, Anda harus mengonfigurasi parameter xxx.sinks.oss_sink.hdfs.roundUnit. Misalnya, jika Anda mengatur parameter xxx.sinks.oss_sink.hdfs.roundUnit ke minute dan parameter xxx.sinks.oss_sink.hdfs.roundValue ke 60, data ditulis ke file dalam 60 menit, yang setara dengan menghasilkan file setiap 60 menit.
    xxx.sinks.oss_sink.hdfs.roundValue = 15
    # Unit waktu yang digunakan oleh partisi waktu. Nilai default: minute. Nilai valid: second, minute, dan hour.
    xxx.sinks.oss_sink.hdfs.roundUnit = minute
    # Awalan tetap dari file baru yang dihasilkan oleh Apache Flume di folder HDFS.
    xxx.sinks.oss_sink.hdfs.filePrefix = your_topic
    # Ukuran file yang memicu sistem untuk membuat file baru. Setiap kali ukuran file tercapai, sistem membuat file baru. Satuan: byte. Nilai 0 menentukan bahwa file tidak dibagi berdasarkan ukuran file.
    xxx.sinks.oss_sink.rollSize = 3600
    # Jumlah thread, seperti open dan write, yang diaktifkan untuk setiap instance sink untuk melakukan operasi IO HDFS.
    xxx.sinks.oss_sink.threadsPoolSize = 30
    ...

    Untuk informasi lebih lanjut tentang parameter konfigurasi sink, lihat Apache Flume.

FAQ

Apa yang harus saya lakukan jika pesan kesalahan "org.apache.flume.conf.ConfigurationException: Component has no type. Cannot configure.user_sink" dikembalikan?

Untuk menyelesaikan masalah ini, tambahkan konfigurasi berikut ke file konfigurasi core-site.xml Hadoop.

<!-- Konfigurasikan kelas implementasi JindoOSS. -->
fs.AbstractFileSystem.oss.impl com.aliyun.jindodata.oss.OSS 
fs.oss.impl com.aliyun.jindodata.oss.OssFileSystem
<!-- Konfigurasikan Pasangan Kunci Akses dan Titik akhir. -->
fs.oss.credentials.provider com.aliyun.jindodata.auth.SimpleAliyunCredentialsProvider 
fs.oss.accessKeyId LTAI******** 
fs.oss.accessKeySecret KZo1********
fs.oss.endpoint {regionId}.oss-dls.aliyuncs.com