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
Sambungkan ke instance ECS. Untuk informasi lebih lanjut, lihat Sambungkan ke Instance.
Konfigurasikan JindoSDK.
Unduh versi terbaru dari paket JAR JindoSDK. Untuk tautan unduhan, lihat GitHub.
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/libKonfigurasikan
JINDOSDK_HOME.export JINDOSDK_HOME=/usr/lib/jindosdk-x.x.x-linux export PATH=$JINDOSDK_HOME/bin:$PATHKonfigurasikan
HADOOP_CLASSPATH.export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:${FLUME_HOME}/lib/*PentingPada setiap node, terapkan direktori instalasi ke folder `lib` di direktori root Flume dan atur variabel lingkungan.
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
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