全部产品
Search
文档中心

E-MapReduce:Flume

更新时间:Jun 24, 2025

Apache Flume adalah sistem terdistribusi, andal, dan sangat tersedia yang digunakan untuk mengumpulkan, menggabungkan, dan memindahkan sejumlah besar data log ke penyimpanan terpusat. Berbagai sumber data didukung.

Skenario

Flume umumnya digunakan untuk mengumpulkan data log. Anda juga dapat menyesuaikan sumber Flume untuk mengumpulkan peristiwa dari berbagai sumber data eksternal.

Flume menyimpan data pada platform komputasi real-time, platform komputasi offline, atau sistem penyimpanan untuk analisis dan pembersihan data lebih lanjut. Platform komputasi real-time mencakup Flink, Spark Streaming, atau Storm. Platform komputasi offline mencakup MapReduce, Hive, atau Presto. Sistem penyimpanan mencakup Hadoop Distributed File System (HDFS), Object Storage Service (OSS), Kafka, atau Elasticsearch. Flume 2

Arsitektur

Sebuah agen Flume adalah instance dari Flume, yang merupakan proses Java VM (JVM) yang mengontrol transmisi peristiwa dari produsen ke konsumen. Sebuah agen Flume terdiri dari satu atau lebih sumber, saluran, dan sink. Satu sumber dapat terhubung ke beberapa saluran, dan satu saluran dapat terhubung ke beberapa sink. Flume

Istilah

Istilah

Deskripsi

peristiwa

Satuan dasar data yang mengalir melalui agen Flume. Peristiwa terdiri dari array byte data dan kumpulan atribut string opsional yang ditambahkan sebagai header.

Contoh:

--------------------------------
| Header (Map) | Body (byte[]) |
--------------------------------
               Flume Event

sumber

Pengumpul data. Ini mengumpulkan peristiwa dari sumber data eksternal dan mengirimkan beberapa peristiwa ke satu atau lebih saluran secara bersamaan.

Sumber umum:

  • Avro Source: mendengarkan di port Avro untuk menerima peristiwa dari klien Avro. Avro adalah kerangka serialisasi data yang dikembangkan dalam proyek Apache Hadoop.

  • Exec Source: menjalankan perintah tertentu, seperti tail -f /var/log/messages, untuk mendapatkan keluaran perintah standar.

  • NetCat TCP Source: mendengarkan di port TCP tertentu untuk mendapatkan data. Ini memberikan fungsionalitas serupa dengan Netcat UDP Source.

  • Taildir Source: memantau beberapa file yang disimpan dalam direktori dan mencatat offset. Jika Anda menggunakan Taildir Source, tidak ada data yang hilang. Taildir Source adalah sumber yang sering digunakan.

saluran

Saluran berada di antara sumber dan sink untuk menyimpan peristiwa.

Saluran umum:

  • Memory Channel: berfungsi sebagai antrian dalam memori untuk menyimpan peristiwa. Komponen ini memberikan performa tinggi dan sering digunakan.

  • File Channel: menyimpan peristiwa ke file data dan menulis checkpoint. Komponen ini memberikan keandalan tinggi tetapi memiliki performa buruk.

  • JDBC Channel: menyimpan peristiwa ke database relasional.

  • Kafka Channel: menyimpan peristiwa di Kafka.

sink

Mendapatkan peristiwa dari saluran dan mengirimkan peristiwa sebagai transaksi ke penyimpanan eksternal. Setelah peristiwa dikirim ke penyimpanan eksternal, peristiwa tersebut dihapus dari saluran.

Sink umum:

  • Logger Sink: digunakan untuk pengujian.

  • Avro Sink: mengonversi peristiwa yang diterima menjadi peristiwa Avro dan mengirimkan peristiwa Avro ke sumber agen Flume berikutnya dalam aliran data.

  • HDFS Sink: menulis peristiwa ke HDFS. Komponen ini sering digunakan.

  • Hive Sink: menulis peristiwa sebagai transaksi ke tabel atau partisi Hive.

  • Kafka Sink: menulis peristiwa ke Kafka.