Sunday, August 14, 2016

Kombinasi Apache Nutch, Elasticsearch, dan MongoDB untuk Menyerap Data dari Internet

Membangun Web Crawler, tidak mahal!
Pada artikel "Pentingnya Web Crawling sebagai Cara Pengumpulan Data di Era Big Data" telah dibahas tentang apa itu web crawler, apa itu web crawling, dan bagaimana peranan web crawling sebagai salah satu teknik pengumpulan data di Era Big Data. Banyak dari kita yang mungkin sedang atau pernah punya ide untuk membangun sebuah web crawler untuk menyerap isi website yang kita jadikan target dan merunut tautan yang terdapat padanya. Kemudian, menyimpan data-data yang setengah terstruktur tersebut menjadi data terstruktur dalam suatu database serta membangun mesin pencari tersendiri untuk melakukan full text search dan menganalisa data-data yang telah terkumpul tersebut. Data-data yang telah berstruktur ini bisa digunakan untuk keperluan riset maupun untuk menghasilkan suatu analisis guna menyusun strategi tertentu.

Kini, untuk mewujudkan ide tersebut bukanlah suatu hal yang terlampau sulit, juga bukan merupakan benda yang terlalu mahal. Kita tidak perlu membuatnya dari nol, dan juga dapat membangunnya menggunakan komputer dengan spesifikasi standar desktop. Telah tersedia komponen-komponen open-source dengan dokumentasi yang cukup lengkap yang dapat digunakan secara gratis untuk membangun web crawler dan search engine sesuai kebutuhan. Dalam hal ini kita akan menggunakan kombinasi antara Apache Nutch, Elasticsearch, dan MongoDB.

Apa itu Apache Nutch?
Apache Nutch adalah software WebCrawler open source yang digunakan untuk crawling websites. Disini saya terjemahkan istilah web crawling sebagai pekerjaan menyerap isi webpage dan merunut tautan yang ada padanya. Crawling berarti tindakan menyerap isi dan merunut tautan.

Apache Nutch sudah terkenal handal dan bersifat skalabel, yaitu dapat digunakan dalam berbagai skala kebutuhan, dari skala terkecil dengan satu laptop saja, hingga skala besar dengan ratusan server dalam suatu sistem terdistribusi seperti halnya Apache Hadoop. Apache Nutch memiliki kemampuan parsing, indexing, kemudian memungkinkan kita untuk membangun mesin pencari sendiri dengan pencarian yang dapat dikostumasi sesuai kebutuhan. Kita bisa membangun mesin pencari sendiri layaknya Google jika benar-benar paham menggunakan Apache Nutch. Penggunaannya juga dapat dikembangkan dengan mengkombinasikannya dengan sistem lain seperti halnya Elasticsearch, Solr, MongoDB, maupun Apache Hbase. Dalam konteks artike ini, Apache Nutch akan diintegrasikan dengan Elasticsearch dan MongoDB.

Apa itu Elasticsearch?
Elasticsearch adalah mesin pencari dan analitik open source dengan sistem terdistribusi, memiliki kemampuan pencarian dan analitik yang real time. Elasticsearch memungkinkan kita untuk mengeksplorasi data dengan kecepatan dan skala yang belum pernah dicapai sebelumnya. Pemanfaatan Elasticsearch meliputi pencarian full-text (full-text search), pencarian terstruktur (structured search), analitik, dan kombinasi dari ketiganya. Berikut adalah beberapa contoh penerapan Elasticsearch oleh beberapa institusi ternama:
1. Wikipedia menggunakan Elasticsearch untuk menyediakan kemampuan pencarian full-text dengan fitur: highlighted snippets search, search-as-you-type, dan did-you-mean suggestions.
2. The Guardian menggunakan Elasticsearch untuk mengkombinasikan log data pengunjung dengan data jejaring sosial guna memberikan feedback seketika (real time) kepada para editornya tentang respon publik terhadap suatu artikel baru.
3. Stack Overflow mengkombinasikan pencarian full-text dengan penelisikan lokasi geografis (geolocation queries) dan menggunakan fitur more-like-this untuk menemukan pertanyaan dan jawaban lain yang memiliki korelasi.
4. Github menggunakan Elasticsearch untuk melakukan pencarian terhadap kode program yang terdiri atas 130 miliar baris.

Melihat contoh-contoh tersebut, Elasticsearch terkesan hanya cocok untuk memenuhi kebutuhan institusi-institusi besar yang perlu memberdayakan data dalam jumlah besar pula. Namun, pada kenyataannya Elasticsearch telah memberikan jalan bagi perusahaan startup seperti Datadog dan Klout untuk membuat prototype dari ide-idenya dan kemudian mewujudkannya menjadi solusi yang bersifat skalabel. Elasticsearch dapat dijalankan dalam skala terkecil menggunakan sebuah laptop, atau dalam skala besar hingga menggunakan ratusan servers dan memproses volume data dalam satuan petabytes.

Walaupun Elasticsearch telah dianggap sebagai sistem baru yang revolusioner, tetapi tidak ada satupun bagian individual dari Elasticsearch yang bersifat baru ataupun revolusioner. Pencarian full-text telah ada sebelumnya, demikian juga dengan sistem analitik dan database dengan sistem terdistribusi. Yang dapat dikatakan sebagai suatu revolusi dalam Elasticsearch adalah penggabungan dari fitur-fitur hebat yang telah ada tersebut menjadi satu aplikasi yang koheren dan mampu bekerja secara real-time.

Apa bedanya Elasticsearch dengan sistem database yang telah ada?
Sayang sekali, sebagian besar sistem database yang telah ada ternyata tidak begitu kompeten untuk mengekstrak pengetahuan tertentu guna mengambil suatu aksi dari data yang ada. Sudah tentu, sistem database tersebut dapat memfilter data dengan suatu kriteria maupun nilai tertentu atau dengan timestamp, tapi dapatkah mereka melakukan pencarian full-text, mengatasi sinonim dalam kalimat, dan memberikan nilai/ranking pada tiap dokumen untuk mendapatkan yang paling relevan? Dapatkah mereka menghasilkan analitik dan penggabungan dari data yang sama? Yang paling penting lagi, dapatkah mereka menyelesaikan pekerjaan-pekerjaan tersebut secara real-time tanpa batch-processing berskala besar? Ini lah yang membedakan Elasticsearch dengan sistem yang telah ada: Elasticsearch mengajak kita untuk mengeksplorasi dan memberdayakan data yang kita punya, bukan sekedar membiarkannya membusuk digudang data karena terlalu sulit untuk ditelisik.

Apa itu MongoDB?
MongoDB adalah database NoSQL yang berbasis dokumen yang bersifat cross-platform, open-source, dan dapat digunakan secara gratis. MongoDB telah hadir sebagai salah satu database NoSQL yang sedang naik daun seiring dengan makin populernya penggunaan database NoSQL pada era Big Data sekarang ini. Adapun perusahaan-perusahaan besar yang telah menggunakan MongoDB diantaranya: Adobe, Facebook, eBay, video game FIFA, Foursquare, LinkedIn, McAfee, MetLife dan masih banya lagi.

MongoDB adalah database multi-fungsi yang handal, fleksibel, dan skalabel. MongoDB menggabungkan kemampuan bekerja dalam berbagai skala dengan fitur-fitur seperti secondary indexes (indeks tambahan selain indeks utama), range queries (penelisikan dalam suatu rentang tertentu), sorting (pengurutan data), aggregations (penggabungan dataset), dan geospatial indexes (indeks geospasial). Penjelasan lebih rinci tentang MongoDB dapat disimak pada artikel "MongoDB: Database NoSQL Berbasis Dokumen yang sedang Naik Daun di Era Big Data".

-->Silakan lanjut ke Bagian 2 (Crawling Website dan Membangun Mesin Pencari Menggunakan Apache Nutch, Elasticsearch, dan MongoDB)

Ref:
“Web Crawling and Data Mining with Apache Nutch”, Dr. Zakir Laliwala, Packt Publishing 2013.
“Elasticsearch The Definitive Guide”, Clinton Gormley and Zachary Tong, O'Reilly 2015.
"MongoDB: The Definitive Guide, second Edition", Kristina Chodorow, O'Reilly 2013.
"MongoDB for Java Developers", Francesco Marchioni, Packt Publishing 2015.

No comments: