Video: Apache Sqoop Tutorial | Sqoop: Import & Export Data From MySQL To HDFS | Hadoop Training | Edureka 2024
Sesetengah data yang berakhir pada Sistem Fail Teragih Hadoop (HDFS) mungkin mendarat di sana melalui operasi beban pangkalan data atau lain-lain proses batch, tetapi apa jika anda ingin menangkap data yang mengalir dalam aliran data tinggi, seperti data log aplikasi? Apache Flume adalah cara standard semasa untuk melakukannya dengan mudah, cekap, dan selamat.
Apache Flume , satu lagi projek peringkat atas dari Yayasan Perisian Apache, adalah sistem yang diedarkan untuk mengagregasi dan memindahkan sejumlah besar data streaming dari sumber yang berbeza ke stor data terpusat.
Masukkan cara lain, Flume direka untuk pemanggilan data berterusan ke dalam HDFS. Data ini boleh menjadi jenis data, tetapi Flume amat sesuai untuk mengendalikan data log, seperti data log dari pelayan web. Unit data yang proses Flume dipanggil peristiwa ; contoh peristiwa adalah rekod log.
Untuk memahami bagaimana kerja Flume dalam kumpulan Hadoop, anda perlu tahu bahawa Flume berjalan sebagai satu atau lebih agen, dan setiap ejen mempunyai tiga komponen pluggable: sumber, saluran, dan sinks:
-
Sumber mengambil data dan hantar ke saluran.
-
Saluran memegang beratur data dan berfungsi sebagai saluran antara sumber dan sink, yang berguna apabila kadar aliran masuk melebihi kadar aliran keluar.
-
Sinks data proses yang diambil dari saluran dan menyampaikannya ke destinasi, seperti HDFS.
Agen mesti mempunyai sekurang-kurangnya satu daripada setiap komponen untuk dijalankan, dan setiap ejen terkandung dalam contohnya sendiri dari Java Virtual Machine (JVM).
Acara yang ditulis ke saluran oleh sumber tidak dialih keluar dari saluran tersebut sehinggalah sinki membuangnya dengan cara transaksi. Jika kegagalan rangkaian berlaku, saluran menyimpan acara mereka beratur sehingga tenggelam dapat menulisnya ke kumpulan. Saluran dalam memori boleh memproses peristiwa dengan cepat, tetapi ia tidak menentu dan tidak dapat dipulihkan, sedangkan saluran berasaskan fail menawarkan kegigihan dan boleh ditemui sekiranya berlaku kegagalan.
Setiap agen boleh mempunyai beberapa sumber, saluran, dan sink, dan walaupun sumber boleh menulis ke banyak saluran, sink boleh mengambil data dari hanya satu saluran.
Ejen hanyalah JVM yang menjalankan Flume, dan sinki untuk setiap nod agen dalam cluster Hadoop menghantar data ke nod pengumpul , yang mengagregatkan data dari banyak agen sebelum menulis kepada HDFS, di mana ia boleh dianalisis dengan alat Hadoop yang lain.
Ejen boleh dirantai bersama supaya sink dari satu ejen menghantar data ke sumber dari ejen lain.Avro, kerangka panggilan dan penyegerakan jarak jauh Apache, adalah cara biasa untuk menghantar data merentasi rangkaian dengan Flume, kerana ia berfungsi sebagai alat berguna untuk penyeragaman yang efisien atau transformasi data ke dalam format perduaan yang padat.
Dalam konteks Flume, keserasian adalah penting: Satu peristiwa Avro memerlukan sumber Avro, sebagai contoh, dan tenggelam mesti menyampaikan peristiwa yang sesuai dengan tujuan.
Apa yang menjadikan rantaian sumber, saluran, dan sinki yang hebat ini berfungsi ialah konfigurasi ejen Flume, yang disimpan dalam fail teks tempatan yang berstruktur seperti fail sifat Java. Anda boleh mengkonfigurasi pelbagai ejen dalam fail yang sama. Lihatlah fail sampel, yang dinamakan ejen flume. conf - ia ditetapkan untuk mengkonfigurasi ejen yang bernama dukun:
# Mengenal pasti komponen pada dukun agen: dukun. sumber = netcat_s1 dukun. tenggelam = hdfs_w1 dukun. channel = in-mem_c1 # Konfigurasi sumber: dukun. sumber. netcat_s1. type = netcat dukun. sumber. netcat_s1. mengikat = dalang localhost. sumber. netcat_s1. port = 44444 # Terangkan sinki: dukun. tenggelam. hdfs_w1. type = hdfs dukun. tenggelam. hdfs_w1. hdfs. jalan = hdfs: // shaman. tenggelam. hdfs_w1. hdfs. writeFormat = Dukun teks. tenggelam. hdfs_w1. hdfs. fileType = DataStream # Konfigurasi saluran yang menyusun peristiwa dalam ingatan: dukun. saluran. dalam-mem_c1. jenis = memori dukun. saluran. dalam-mem_c1. kapasiti = 20000 dukun. saluran. dalam-mem_c1. transactionCapacity = 100 # Mengikat sumber dan tenggelam ke saluran: dukun. sumber. netcat_s1. saluran = in-mem_c1 dukun. tenggelam. hdfs_w1. channel = in-mem_c1
Fail konfigurasi termasuk sifat untuk setiap sumber, saluran, dan tenggelam dalam ejen dan menentukan bagaimana ia disambungkan. Dalam contoh ini, agen shaman mempunyai sumber yang mendengarkan data (mesej ke netcat) pada port 44444, sebuah saluran yang menyusun data peristiwa dalam memori, dan sink yang log data peristiwa ke konsol.
Fail konfigurasi ini boleh digunakan untuk menentukan beberapa agen; di sini, anda hanya mengkonfigurasi untuk menjaga perkara yang mudah.
Untuk memulakan ejen, gunakan skrip shell yang disebut flume-ng, yang terletak dalam direktori bin pengedaran Flume. Dari baris arahan, mengeluarkan arahan ejen, menentukan jalan ke fail konfigurasi dan nama ejen.
Perintah contoh berikut bermula dengan ejen Flume:
flume-ng agen -f / -n shaman
Log ejen Flume harus mempunyai entri yang mengesahkan bahawa sumber, saluran, dan sinki dimulakan dengan jayanya.
Untuk menguji konfigurasi selanjutnya, anda boleh telnet ke port 44444 dari terminal lain dan hantar Flume acara dengan memasukkan rentetan teks sewenang-wenangnya. Sekiranya semuanya berjalan lancar, terminal Flume asal akan mengeluarkan acara dalam mesej log yang anda boleh lihat dalam log ejen.