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.

Mengalir Architekstur
Mengalir Architekstur
  1. 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.
  2. 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.
  3. 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)

Pengaturan Flume, Perpustakaan dan Kode Sumber

Langkah 1) Buat direktori baru dengan nama 'FlumeTutorial'

sudo mkdir FlumeTutorial
  1. Berikan izin baca, tulis, dan jalankan
    sudo chmod -R 777 FlumeTutorial
  2. Salin file Sumber Twitter Saya.java dan MyTwitterSourceForFlume.java dalam direktori ini.

Unduh File Masukan Dari Sini

Periksa izin file dari semua file ini dan jika izin 'baca' tidak ada maka berikan hal yang sama-

Pengaturan Flume, Perpustakaan dan Kode Sumber

Langkah 2) Unduh 'Apache Flume' dari situs- https://flume.apache.org/download.html

Apache Flume 1.4.0 telah digunakan dalam tutorial Flume ini.

Pengaturan Flume, Perpustakaan dan Kode Sumber

Klik Berikutnya

Pengaturan Flume, Perpustakaan dan Kode Sumber

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

Pengaturan Flume, Perpustakaan dan Kode Sumber

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

Pengaturan Flume, Perpustakaan dan Kode Sumber

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/*"

Muat Data dari Twitter menggunakan Flume

Langkah 3) Kompilasi kode sumber menggunakan perintah-

javac -d . MyTwitterSourceForFlume.java MyTwitterSource.java

Muat Data dari Twitter menggunakan Flume

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.

Muat Data dari Twitter menggunakan Flume

Sekarang, buat JAR'MyTwitterSourceForFlume.jar' sebagai-

jar cfm MyTwitterSourceForFlume.jar Manifest.txt flume/mytwittersource/*.class

Muat Data dari Twitter menggunakan Flume

Langkah 5) Salin toples ini ke /lib/

sudo cp MyTwitterSourceForFlume.jar <Flume Installation Directory>/lib/

Muat Data dari Twitter menggunakan Flume

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

Muat Data dari Twitter menggunakan Flume

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

Muat Data dari Twitter menggunakan Flume

Membuat Aplikasi Twitter

Langkah 1) Buat aplikasi Twitter dengan masuk ke https://developer.twitter.com/

Membuat Aplikasi Twitter

Membuat Aplikasi Twitter

Langkah 2) Pergi ke 'Aplikasi saya' (Opsi ini akan dijatuhkan ketika 'Telur' tombol di sudut kanan atas diklik)

Membuat Aplikasi Twitter

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.

Membuat Aplikasi Twitter

Langkah 5) Gulir ke bawah halaman dan terima persyaratan dengan menandai 'Ya saya setuju' dan klik tombol'Buat aplikasi Twitter Anda'

Membuat Aplikasi Twitter

Langkah 6) Di jendela aplikasi yang baru dibuat, buka tab, 'Kunci API' gulir ke bawah halaman dan klik tombol 'Buat token akses saya'

Membuat Aplikasi Twitter

Membuat Aplikasi Twitter

Langkah 7) Segarkan halaman.

Langkah 8) Klik 'Uji OAuth'. Ini akan menampilkan 'OAuth' pengaturan aplikasi.

Membuat Aplikasi Twitter

Langkah 9) memodifikasi 'flume.conf' menggunakan ini Pengaturan OAuth. Langkah-langkah untuk memodifikasi 'flume.conf' diberikan di bawah ini.

Membuat Aplikasi Twitter

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

Ubah File 'Flume.conf'

Langkah 2) Juga, atur TwitterAgent.sinks.HDFS.hdfs.path seperti di bawah ini,

TwitterAgent.sinks.HDFS.hdfs.path = hdfs:// : / /flume/tweet/

Ubah File 'Flume.conf'

Untuk mengetahui , dan , lihat nilai parameter 'fs.defaultFS' diatur $HADOOP_HOME/etc/hadoop/core-site.xml

Ubah File 'Flume.conf'

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"

Streaming Data Twitter menggunakan Flume

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 ~/

Streaming Data Twitter menggunakan Flume

b. Temukan file JAR 'jambu biji' seperti di bawah ini

find . -name "guava*"

Streaming Data Twitter menggunakan Flume

Pindah jambu biji-10.0.1.jar dari ' /lib'.

sudo mv guava-10.0.1.jar ~/

Streaming Data Twitter menggunakan Flume

c. Unduh jambu biji-17.0.jar dari http://mvnrepository.com/artifact/com.google.guava/guava/17.0

Streaming Data Twitter menggunakan Flume

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

Streaming Data Twitter menggunakan Flume

Jendela prompt perintah tempat flume mengambil Tweet-

Streaming Data Twitter menggunakan Flume

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/

Streaming Data Twitter menggunakan Flume