Apache Flume - Mengambil Data Twitter

Menggunakan Flume, kita dapat mengambil data dari berbagai layanan dan mengirimkannya ke penyimpanan terpusat (HDFS dan HBase). Bab ini menjelaskan cara mengambil data dari layanan Twitter dan menyimpannya dalam HDFS menggunakan Apache Flume.

Seperti yang dibahas dalam Arsitektur Flume, server web menghasilkan data log dan data ini dikumpulkan oleh agen di Flume. Saluran menyangga data ini ke wastafel, yang akhirnya mendorongnya ke penyimpanan terpusat.

Dalam contoh yang diberikan di bab ini, kita akan membuat aplikasi dan mendapatkan tweet darinya menggunakan sumber twitter eksperimental yang disediakan oleh Apache Flume. Kami akan menggunakan saluran memori untuk menyangga tweet ini dan wastafel HDFS untuk mendorong tweet ini ke HDFS.

Untuk mengambil data Twitter, kita harus mengikuti langkah-langkah yang diberikan di bawah ini -

  • Buat Aplikasi twitter
  • Instal / Mulai HDFS
  • Konfigurasi Flume

Membuat Aplikasi Twitter

Untuk mendapatkan tweet dari Twitter maka perlu dibuat aplikasi Twitter. Ikuti langkah-langkah yang diberikan di bawah ini untuk membuat aplikasi Twitter.

Langkah 1

Untuk membuat aplikasi Twitter, klik tautan berikut https://apps.twitter.com/. Masuk ke akun Twitter Anda. Anda akan mendapatkan jendela Manajemen Aplikasi Twitter tempat Anda dapat membuat, menghapus, dan mengelola Aplikasi Twitter.

Langkah 2

Klik pada Create New Apptombol. Anda akan diarahkan ke jendela di mana Anda akan mendapatkan formulir aplikasi di mana Anda harus mengisi detail Anda untuk membuat Aplikasi. Saat mengisi alamat situs web, berikan pola URL lengkap, misalnya,http://example.com.

LANGKAH 3

Isi detailnya, terima Developer Agreement setelah selesai, klik Create your Twitter application buttonyang ada di bagian bawah halaman. Jika semuanya berjalan dengan baik, Aplikasi akan dibuat dengan detail yang diberikan seperti yang ditunjukkan di bawah ini.

LANGKAH 4

Dibawah keys and Access Tokens tab di bagian bawah halaman, Anda dapat melihat tombol bernama Create my access token. Klik di atasnya untuk menghasilkan token akses.

LANGKAH 5

Terakhir, klik file Test OAuthtombol yang ada di sisi kanan atas halaman. Ini akan mengarah ke halaman yang menampilkan fileConsumer key, Consumer secret, Access token, dan Access token secret. Salin detail ini. Ini berguna untuk mengkonfigurasi agen di Flume.

Memulai HDFS

Karena kami menyimpan data di HDFS, kami perlu menginstal / memverifikasi Hadoop. Mulai Hadoop dan buat folder di dalamnya untuk menyimpan data Flume. Ikuti langkah-langkah yang diberikan di bawah ini sebelum mengkonfigurasi Flume.

Langkah 1: Instal / Verifikasi Hadoop

Pasang Hadoop . Jika Hadoop sudah diinstal di sistem Anda, verifikasi penginstalan menggunakan perintah versi Hadoop, seperti yang ditunjukkan di bawah ini.

$ hadoop version

Jika sistem Anda berisi Hadoop, dan jika Anda telah menyetel variabel jalur, maka Anda akan mendapatkan keluaran berikut -

Hadoop 2.6.0 
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 
e3496499ecb8d220fba99dc5ed4c99c8f9e33bb1 
Compiled by jenkins on 2014-11-13T21:10Z 
Compiled with protoc 2.5.0 
From source with checksum 18e43357c8f927c0695f1e9522859d6a 
This command was run using /home/Hadoop/hadoop/share/hadoop/common/hadoop-common-2.6.0.jar

Langkah 2: Memulai Hadoop

Jelajahi sbin direktori Hadoop dan mulai benang dan Hadoop dfs (sistem file terdistribusi) seperti yang ditunjukkan di bawah ini.

cd /$Hadoop_Home/sbin/ 
$ start-dfs.sh 
localhost: starting namenode, logging to
   /home/Hadoop/hadoop/logs/hadoop-Hadoop-namenode-localhost.localdomain.out 
localhost: starting datanode, logging to 
   /home/Hadoop/hadoop/logs/hadoop-Hadoop-datanode-localhost.localdomain.out 
Starting secondary namenodes [0.0.0.0] 
starting secondarynamenode, logging to 
   /home/Hadoop/hadoop/logs/hadoop-Hadoop-secondarynamenode-localhost.localdomain.out
  
$ start-yarn.sh 
starting yarn daemons 
starting resourcemanager, logging to 
   /home/Hadoop/hadoop/logs/yarn-Hadoop-resourcemanager-localhost.localdomain.out 
localhost: starting nodemanager, logging to 
   /home/Hadoop/hadoop/logs/yarn-Hadoop-nodemanager-localhost.localdomain.out

Langkah 3: Buat Direktori di HDFS

Di Hadoop DFS, Anda dapat membuat direktori menggunakan perintah mkdir. Jelajahi dan buat direktori dengan namatwitter_data di jalur yang diperlukan seperti yang ditunjukkan di bawah ini.

$cd /$Hadoop_Home/bin/ 
$ hdfs dfs -mkdir hdfs://localhost:9000/user/Hadoop/twitter_data

Konfigurasi Flume

Kita harus mengkonfigurasi sumber, saluran, dan wastafel menggunakan file konfigurasi di confmap. Contoh yang diberikan dalam bab ini menggunakan sumber eksperimental yang disediakan oleh Apache Flume bernamaTwitter 1% Firehose Saluran memori dan HDFS sink.

Sumber Api 1% Twitter

Sumber ini sangat eksperimental. Ini menghubungkan ke 1% sampel Twitter Firehose menggunakan streaming API dan terus mengunduh tweet, mengubahnya menjadi format Avro, dan mengirim peristiwa Avro ke sink Flume hilir.

Kami akan mendapatkan sumber ini secara default bersama dengan instalasi Flume. Itujar file yang sesuai dengan sumber ini dapat ditemukan di lib folder seperti yang ditunjukkan di bawah ini.

Menyetel jalur kelas

Mengatur classpath variabel ke lib folder Flume masuk Flume-env.sh file seperti yang ditunjukkan di bawah ini.

export CLASSPATH=$CLASSPATH:/FLUME_HOME/lib/*

Sumber ini membutuhkan detail seperti Consumer key, Consumer secret, Access token, dan Access token secretdari aplikasi Twitter. Saat mengonfigurasi sumber ini, Anda harus memberikan nilai ke properti berikut -

  • Channels

  • Source type : org.apache.flume.source.twitter.TwitterSource

  • consumerKey - Kunci konsumen OAuth

  • consumerSecret - Rahasia konsumen OAuth

  • accessToken - Token akses OAuth

  • accessTokenSecret - Rahasia token OAuth

  • maxBatchSize- Jumlah maksimum pesan twitter yang harus ada dalam kelompok twitter. Nilai defaultnya adalah 1000 (opsional).

  • maxBatchDurationMillis- Jumlah maksimum milidetik untuk menunggu sebelum menutup batch. Nilai defaultnya adalah 1000 (opsional).

Saluran

Kami menggunakan saluran memori. Untuk mengkonfigurasi saluran memori, Anda harus memberikan nilai pada jenis saluran.

  • type- Ini memegang jenis saluran. Dalam contoh kami, jenisnya adalahMemChannel.

  • Capacity- Ini adalah jumlah maksimum acara yang disimpan di saluran. Nilai defaultnya adalah 100 (opsional).

  • TransactionCapacity- Ini adalah jumlah maksimum acara yang diterima atau dikirim saluran. Nilai defaultnya adalah 100 (opsional).

HDFS Sink

Wastafel ini menulis data ke dalam HDFS. Untuk mengonfigurasi sink ini, Anda harus memberikan detail berikut.

  • Channel

  • type - hdfs

  • hdfs.path - jalur direktori di HDFS tempat penyimpanan data.

Dan kami dapat memberikan beberapa nilai opsional berdasarkan skenario. Diberikan di bawah ini adalah properti opsional dari sink HDFS yang kita konfigurasikan dalam aplikasi kita.

  • fileType - Ini adalah format file yang diperlukan dari file HDFS kami. SequenceFile, DataStream dan CompressedStreamadalah tiga jenis yang tersedia dengan aliran ini. Dalam contoh kami, kami menggunakanDataStream.

  • writeFormat - Bisa berupa teks atau dapat ditulis.

  • batchSize- Ini adalah jumlah peristiwa yang ditulis ke file sebelum di-flush ke HDFS. Nilai defaultnya adalah 100.

  • rollsize- Ini adalah ukuran file untuk memicu gulungan. Nilai defaultnya adalah 100.

  • rollCount- Ini adalah jumlah kejadian yang ditulis ke dalam file sebelum digulung. Nilai defaultnya adalah 10.

Contoh - File Konfigurasi

Diberikan di bawah ini adalah contoh file konfigurasi. Salin konten ini dan simpan sebagaitwitter.conf di folder conf Flume.

# Naming the components on the current agent. 
TwitterAgent.sources = Twitter 
TwitterAgent.channels = MemChannel 
TwitterAgent.sinks = HDFS
  
# Describing/Configuring the source 
TwitterAgent.sources.Twitter.type = org.apache.flume.source.twitter.TwitterSource
TwitterAgent.sources.Twitter.consumerKey = Your OAuth consumer key
TwitterAgent.sources.Twitter.consumerSecret = Your OAuth consumer secret 
TwitterAgent.sources.Twitter.accessToken = Your OAuth consumer key access token 
TwitterAgent.sources.Twitter.accessTokenSecret = Your OAuth consumer key access token secret 
TwitterAgent.sources.Twitter.keywords = tutorials point,java, bigdata, mapreduce, mahout, hbase, nosql
  
# Describing/Configuring the sink 

TwitterAgent.sinks.HDFS.type = hdfs 
TwitterAgent.sinks.HDFS.hdfs.path = hdfs://localhost:9000/user/Hadoop/twitter_data/
TwitterAgent.sinks.HDFS.hdfs.fileType = DataStream 
TwitterAgent.sinks.HDFS.hdfs.writeFormat = Text 
TwitterAgent.sinks.HDFS.hdfs.batchSize = 1000
TwitterAgent.sinks.HDFS.hdfs.rollSize = 0 
TwitterAgent.sinks.HDFS.hdfs.rollCount = 10000 
 
# Describing/Configuring the channel 
TwitterAgent.channels.MemChannel.type = memory 
TwitterAgent.channels.MemChannel.capacity = 10000 
TwitterAgent.channels.MemChannel.transactionCapacity = 100
  
# Binding the source and sink to the channel 
TwitterAgent.sources.Twitter.channels = MemChannel
TwitterAgent.sinks.HDFS.channel = MemChannel

Eksekusi

Jelajahi direktori home Flume dan jalankan aplikasi seperti yang ditunjukkan di bawah ini.

$ cd $FLUME_HOME 
$ bin/flume-ng agent --conf ./conf/ -f conf/twitter.conf 
Dflume.root.logger=DEBUG,console -n TwitterAgent

Jika semuanya berjalan dengan baik, streaming tweet ke HDFS akan dimulai. Diberikan di bawah ini adalah snapshot dari jendela command prompt saat mengambil tweet.

Memverifikasi HDFS

Anda dapat mengakses UI Web Administrasi Hadoop menggunakan URL yang diberikan di bawah ini.

http://localhost:50070/

Klik pada dropdown bernama Utilitiesdi sisi kanan halaman. Anda dapat melihat dua opsi seperti yang ditunjukkan pada snapshot yang diberikan di bawah ini.

Klik Browse the file systemdan masukkan jalur direktori HDFS tempat Anda menyimpan tweet. Dalam contoh kita, jalurnya adalah/user/Hadoop/twitter_data/. Kemudian, Anda dapat melihat daftar file log twitter yang disimpan dalam HDFS seperti yang diberikan di bawah ini.