Tutorial Apache Flume: Apa itu, Archicontoh tekstur & Hadoop
Apa itu Apache Flume di Hadoop?
Flume Apache adalah sistem yang andal dan terdistribusi untuk mengumpulkan, menggabungkan, dan memindahkan data log dalam jumlah besar. Sistem ini memiliki arsitektur yang sederhana namun fleksibel berdasarkan aliran data streaming. Apache Flume digunakan untuk mengumpulkan data log yang ada dalam berkas log dari server web dan menggabungkannya ke dalam HDFS untuk analisis.
Flume di Hadoop mendukung berbagai sumber seperti –
- 'tail' (yang menyalurkan data dari file lokal dan menulis ke HDFS melalui Flume, mirip dengan perintah Unix 'tail')
- Log sistem
- Apache log4j (memungkinkan Java aplikasi untuk menulis acara ke file dalam HDFS melalui Flume).
Mengalir Architekstur
A Agen flume adalah FMV proses yang memiliki 3 komponen –Sumber Flume, Saluran Flume dan Wastafel Flume– melalui mana peristiwa disebarkan setelah dimulai pada sumber eksternal.

- Dalam diagram di atas, peristiwa yang dihasilkan oleh sumber eksternal (WebServer) digunakan oleh Flume Data Source. Sumber eksternal mengirimkan peristiwa ke sumber Flume dalam format yang dikenali oleh sumber target.
- Flume Source menerima acara dan menyimpannya ke dalam satu atau beberapa saluran. Saluran bertindak sebagai penyimpan yang menyimpan acara hingga dikonsumsi oleh flume sink. Saluran ini mungkin menggunakan sistem file lokal untuk menyimpan peristiwa ini.
- Flume sink menghapus acara dari saluran dan menyimpannya ke dalam repositori eksternal seperti misalnya, HDFS. Mungkin ada beberapa agen flume, dalam hal ini flume tenggelam meneruskan kejadian tersebut ke sumber flume dari agen flume berikutnya dalam aliran.
Beberapa fitur penting FLUME
- Flume memiliki desain fleksibel berdasarkan aliran data streaming. Ini toleran terhadap kesalahan dan kuat dengan banyak kegagalan dan mekanisme pemulihan. Flume Big data memiliki tingkat keandalan yang berbeda-beda untuk ditawarkan 'pengiriman upaya terbaik' dan 'pengiriman ujung ke ujung'. Pengiriman dengan upaya terbaik tidak mentolerir kegagalan node Flume apa pun 'pengiriman ujung ke ujung' mode menjamin pengiriman bahkan jika terjadi kegagalan beberapa node.
- Flume membawa data antara sumber dan sink. Pengumpulan data ini dapat dijadwalkan atau berdasarkan peristiwa. Flume memiliki mesin pemrosesan kuerinya sendiri yang memudahkan transformasi setiap kumpulan data baru sebelum dipindahkan ke sink yang diinginkan.
- Mungkin Flume tenggelam memasukkan HDFS dan HBaseFlume Hadoop juga dapat digunakan untuk mengangkut data kejadian termasuk namun tidak terbatas pada data lalu lintas jaringan, data yang dihasilkan oleh situs web media sosial dan pesan email.
Penyiapan Flume, pustaka, dan kode sumber
Sebelum kita memulai proses sebenarnya, pastikan Anda telah menginstal Hadoop. Ubah pengguna menjadi 'hduser' (id yang digunakan saat konfigurasi Hadoop, Anda dapat beralih ke userid yang digunakan selama konfigurasi Hadoop Anda)
Langkah 1) Buat direktori baru dengan nama 'FlumeTutorial'
sudo mkdir FlumeTutorial
- Berikan izin baca, tulis, dan jalankan
sudo chmod -R 777 FlumeTutorial
- Salin file Sumber Twitter Saya.java dan MyTwitterSourceForFlume.java dalam direktori ini.
Periksa izin file dari semua file ini dan jika izin 'baca' tidak ada maka berikan hal yang sama-
Langkah 2) Unduh 'Apache Flume' dari situs- https://flume.apache.org/download.html
Apache Flume 1.4.0 telah digunakan dalam tutorial Flume ini.
Klik Berikutnya
Langkah 3) Salin tarball yang diunduh ke direktori pilihan Anda dan ekstrak isinya menggunakan perintah berikut
sudo tar -xvf apache-flume-1.4.0-bin.tar.gz
Perintah ini akan membuat direktori baru bernama apache-flume-1.4.0-bin dan ekstrak file ke dalamnya. Direktori ini akan disebut sebagai di sisa artikel.
Langkah 4) Penyiapan perpustakaan Flume
Copy twitter4j-core-4.0.1.jar, flume-ng-configuration-1.4.0.jar, flume-ng-core-1.4.0.jar, flume-ng-sdk-1.4.0.jar untuk
/lib/
Ada kemungkinan bahwa salah satu atau semua JAR yang disalin harus menjalankan izin. Hal ini dapat menyebabkan masalah dengan kompilasi kode. Jadi, cabut izin eksekusi pada JAR tersebut.
Dalam hal ini, twitter4j-core-4.0.1.jar tadinya harus menjalankan izin. Saya mencabutnya seperti di bawah ini-
sudo chmod -x twitter4j-core-4.0.1.jar
Setelah perintah ini memberikan izin 'baca' twitter4j-core-4.0.1.jar untuk semua.
sudo chmod +rrr /usr/local/apache-flume-1.4.0-bin/lib/twitter4j-core-4.0.1.jar
Harap dicatat bahwa saya telah mengunduh-
– twitter4j-core-4.0.1.jar dari https://mvnrepository.com/artifact/org.twitter4j/twitter4j-core
- Semua JAR api yaitu, flume-ng-*-1.4.0.jar dari http://mvnrepository.com/artifact/org.apache.flume
Muat data dari Twitter menggunakan Flume
Langkah 1) Masuk ke direktori yang berisi file kode sumber di dalamnya.
Langkah 2) set KELAS mengandung /lib/* dan ~/FlumeTutorial/flume/mytwittersource/*
export CLASSPATH="/usr/local/apache-flume-1.4.0-bin/lib/*:~/FlumeTutorial/flume/mytwittersource/*"
Langkah 3) Kompilasi kode sumber menggunakan perintah-
javac -d . MyTwitterSourceForFlume.java MyTwitterSource.java
Langkah 4)Buat toples
Pertama, buat Manifes.txt file menggunakan editor teks pilihan Anda dan tambahkan baris di bawah ini di dalamnya-
Main-Class: flume.mytwittersource.MyTwitterSourceForFlume
.. Di Sini flume.mytwittersource.MyTwitterSourceForFlume adalah nama kelas utama. Harap dicatat bahwa Anda harus menekan tombol enter di akhir baris ini.
Sekarang, buat JAR'MyTwitterSourceForFlume.jar' sebagai-
jar cfm MyTwitterSourceForFlume.jar Manifest.txt flume/mytwittersource/*.class
Langkah 5) Salin toples ini ke /lib/
sudo cp MyTwitterSourceForFlume.jar <Flume Installation Directory>/lib/
Langkah 6) Buka direktori konfigurasi Flume, /conf
Jika flume.conf tidak ada, salin flume-conf.properties.template dan ganti namanya menjadi flume.conf
sudo cp flume-conf.properties.template flume.conf
If flume-env.sh tidak ada, lalu salin templat flume-env.sh dan ganti namanya menjadi flume-env.sh
sudo cp flume-env.sh.template flume-env.sh
Membuat Aplikasi Twitter
Langkah 1) Buat aplikasi Twitter dengan masuk ke https://developer.twitter.com/
Langkah 2) Pergi ke 'Aplikasi saya' (Opsi ini akan dijatuhkan ketika 'Telur' tombol di sudut kanan atas diklik)
Langkah 3) Buat aplikasi baru dengan mengklik 'Buat Aplikasi Baru'
Langkah 4) Isi detail aplikasi dengan menentukan nama aplikasi, deskripsi, dan situs web. Anda dapat merujuk ke catatan yang diberikan di bawah setiap kotak input.
Langkah 5) Gulir ke bawah halaman dan terima persyaratan dengan menandai 'Ya saya setuju' dan klik tombol'Buat aplikasi Twitter Anda'
Langkah 6) Di jendela aplikasi yang baru dibuat, buka tab, 'Kunci API' gulir ke bawah halaman dan klik tombol 'Buat token akses saya'
Langkah 7) Segarkan halaman.
Langkah 8) Klik 'Uji OAuth'. Ini akan menampilkan 'OAuth' pengaturan aplikasi.
Langkah 9) memodifikasi 'flume.conf' menggunakan ini Pengaturan OAuth. Langkah-langkah untuk memodifikasi 'flume.conf' diberikan di bawah ini.
Kita perlu menyalin kunci Konsumen, Rahasia Konsumen, Token Akses, dan Rahasia Token Akses untuk memperbarui 'flume.conf'.
Catatan: Nilai-nilai ini milik pengguna dan karenanya bersifat rahasia, sehingga tidak boleh dibagikan.
Ubah File 'flume.conf'
Langkah 1) Open 'flume.conf' dalam mode tulis dan tetapkan nilai untuk parameter di bawah ini-
sudo gedit flume.conf
Salin di bawah konten-
MyTwitAgent.sources = Twitter MyTwitAgent.channels = MemChannel MyTwitAgent.sinks = HDFS MyTwitAgent.sources.Twitter.type = flume.mytwittersource.MyTwitterSourceForFlume MyTwitAgent.sources.Twitter.channels = MemChannel MyTwitAgent.sources.Twitter.consumerKey = <Copy consumer key value from Twitter App> MyTwitAgent.sources.Twitter.consumerSecret = <Copy consumer secret value from Twitter App> MyTwitAgent.sources.Twitter.accessToken = <Copy access token value from Twitter App> MyTwitAgent.sources.Twitter.accessTokenSecret = <Copy access token secret value from Twitter App> MyTwitAgent.sources.Twitter.keywords = guru99 MyTwitAgent.sinks.HDFS.channel = MemChannel MyTwitAgent.sinks.HDFS.type = hdfs MyTwitAgent.sinks.HDFS.hdfs.path = hdfs://localhost:54310/user/hduser/flume/tweets/ MyTwitAgent.sinks.HDFS.hdfs.fileType = DataStream MyTwitAgent.sinks.HDFS.hdfs.writeFormat = Text MyTwitAgent.sinks.HDFS.hdfs.batchSize = 1000 MyTwitAgent.sinks.HDFS.hdfs.rollSize = 0 MyTwitAgent.sinks.HDFS.hdfs.rollCount = 10000 MyTwitAgent.channels.MemChannel.type = memory MyTwitAgent.channels.MemChannel.capacity = 10000 MyTwitAgent.channels.MemChannel.transactionCapacity = 1000
Langkah 2) Juga, atur TwitterAgent.sinks.HDFS.hdfs.path seperti di bawah ini,
TwitterAgent.sinks.HDFS.hdfs.path = hdfs:// : / /flume/tweet/
Untuk mengetahui , dan , lihat nilai parameter 'fs.defaultFS' diatur $HADOOP_HOME/etc/hadoop/core-site.xml
Langkah 3) Untuk membuang data ke HDFS, segera hapus entri di bawah ini jika ada,
TwitterAgent.sinks.HDFS.hdfs.rollInterval = 600
Contoh: Streaming Data Twitter menggunakan Flume
Langkah 1) Open 'flume-env.sh' dalam mode tulis dan tetapkan nilai untuk parameter di bawah ini,
JAVA_HOME=<Installation directory of Java>
FLUME_CLASSPATH="<Flume Installation Directory>/lib/MyTwitterSourceForFlume.jar"
Langkah 2) Mulai Hadoop
$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh
Langkah 3) Dua file JAR dari tarball Flume tidak kompatibel dengan Hadoop 2.2.0. Jadi, kita perlu mengikuti langkah-langkah di bawah ini dalam contoh Apache Flume ini agar Flume kompatibel dengan Hadoop 2.2.0.
a. Pindah protobuf-java-2.4.1.jar dari ' /lib'.
Pergi ke ' /lib'
CD /lib
sudo mv protobuf-java-2.4.1.jar ~/
b. Temukan file JAR 'jambu biji' seperti di bawah ini
find . -name "guava*"
Pindah jambu biji-10.0.1.jar dari ' /lib'.
sudo mv guava-10.0.1.jar ~/
c. Unduh jambu biji-17.0.jar dari http://mvnrepository.com/artifact/com.google.guava/guava/17.0
Sekarang, salin file jar yang diunduh ini ke ' /lib'
Langkah 4) Pergi ke ' /tempat sampah' dan mulai Flume sebagai-
./flume-ng agent -n MyTwitAgent -c conf -f <Flume Installation Directory>/conf/flume.conf
Jendela prompt perintah tempat flume mengambil Tweet-
Dari pesan jendela perintah kita dapat melihat bahwa outputnya ditulis /pengguna/hduser/flume/tweets/ direktori.
Sekarang, buka direktori ini menggunakan browser web.
Langkah 5) Untuk melihat hasil pemuatan data, buka menggunakan browser http://localhost:50070/ dan telusuri sistem file, lalu buka direktori tempat data telah dimuat, yaitu-
/flume/tweet/