Pengantar Komputasi Grid
BAB I
PENDAHULUAN
Perkembangan teknologi di era ini menggunakan konsep – konsep seperti social networking, open, share, colaborations, mobile, easy maintenance, one click, terdistribusi, scalability, concurency, dan transparan. Sampai saat ini trend teknologi Cloud Computing masih terus diteliti dalam penelitian – penelitian para pakar IT dunia. Dengan berbagai kelebihan dan kekurangan, Cloud Computing hadir dengan memudahkan akses data dari mana saja dan kapan saja, karena dengan memanfaatkan internet dan menggunakan perangkat fixed atau mobile device menggunakan internet cloud sebagai tempat penyimpanan data, aplikasi dan lainya. Teknologi ini akan memberikan banyak keuntungan baik dari sisi pemberi layanan (provider) atau dari sisi user. Penerapan teknologi ini memberikan dampak yang sangat signifikan bagi pengembangan teknologi itu sendiri, baik dari sisi pengguna maupun dari sisi industri.
Pengguna diuntungkan dengan semakin mudahnya memperoleh atau mengunduh data secara cepat dan mudah karena banyak layanan yang dibuka oleh pihak industri. Keuntungan bagi pihak industri pun tidak kalah besar dengan kemudahan yang didapat oleh pengguna, karena dengan semakin majunya teknologi cloud computing akan semakin memudahkan industri untuk memasarkan produk dan menyebarkan informasi secara meluas keseluruh penjuru dunia. Secara umum, definisi cloud computing (komputasi awan) merupakan gabungan pemanfaatan teknologi komputer (komputasi) dalam suatu jaringan dengan pengembangan berbasis internet (awan) yang mempunyai fungsi untuk menjalankan program atau aplikasi melalui komputer – komputer yang terkoneksi pada waktu yang sama, tetapi tak semua yang terkonekasi melalui internet menggunakan cloud computing.
Teknologi komputer berbasis sistem Cloud ini merupakan sebuah teknologi yang menjadikan internet sebagai pusat server untuk mengelola data dan juga aplikasi pengguna. Teknologi ini mengizinkan para pengguna untuk menjalankan program tanpa instalasi dan mengizinkan pengguna untuk mengakses data pribadi mereka melalui komputer dengan akses internet.
BAB II
PEMBAHASAN
Pengantar Komputasi Grid
Komputasi Grid sebenarnya merupakan sebuah aplikasi pengembangan dari jaringan komputer (network). Hanya saja, tidak seperti jaringan komputer konvensional yang berfokus pada komunikasi antar piranti (device), aplikasi pada grid computing dirancang untuk memanfaatkan sumber daya pada terminal dalam jaringannya. Grid Computing biasanya diterapkan untuk menjalankan sebuah fungsi yang terlalu kompleks atau terlalu intensif untuk dikerjakan oleh satu sistem tunggal. Seperti halnya pengguna internet yang mengakses berbagai situs web dan menggunakan berbagai protokol seakan – akan dalam sebuah sistem yang berdiri sendiri, maka pengguna aplikasi Grid Computing seolah – olah akan menggunakan sebuah virtual komputer dengan kapasitas pemrosesan data yang sangat besar.
Menurut definisi Grid Computing atau Komputasi Grid merupakan salah satu dari tipe data komputasi paralel. Karena penggunaan sumber daya nya melibatkan banyak komputer terpisah secara geografis namun tersambung via jalur komunikasi (termasuk internet) untuk memecahkan persoalan komputasi skala besar. Semakin cepat jalur komunikasi terbuka, maka peluang untuk menggabungkan kinerja komputasi dari sumber – sumber komputer yang terpisah menjadi semakin meningkat. Dengan demikian, skala komputasi terdistribusi dapat ditingkatkan secara geografis lebih jauh lagi, melintasi batas – batas domain administrasi yang ada.
Semakin cepat jalur komunikasi terbuka, maka peluang untuk menggabungkan kinerja komputasi dari sumber-sumber komputasi yang terpisah menjadi semakin meningkat. Dengan demikian, skala komputasi terdistribusi dapat ditingkatkan secara geografis lebih jauh lagi, melintasi batas-batas domain administrasi yang ada.
Suatu sistem melakukan komputasi grid yaitu :
Sistem tersebut melakukan koordinasi terhadap sumberdaya komputasi yang tidak berada dibawah suatu kendali terpusat. Seandainya sumber daya yang digunakan berada dalam satu cakupan domain administratif, maka komputasi tersebut belum dapat dikatakan komputasi grid.
Sistem tersebut menggunakan standard dan protokol yang bersifat terbuka (tidak terpaut pada suatu implementasi atau produk tertentu). Komputasi grid disusun dari kesepakatan-kesepakatan terhadap masalah yang fundamental, dibutuhkan untuk mewujudkan komputasi bersama dalam skala besar. Kesepakatan dan standar yang dibutuhkan adalah dalam bidang autentikasi, otorisasi, pencarian sumberdaya, dan akses terhadap sumber daya.Misalnya TCP/IP
Sistem tersebut berusaha untuk mencapai kualitas layanan yang canggih, (nontrivial quality of service) yang jauh diatas kualitas layanan komponen individu dari komputasi grid tersebut.
Beberapa konsep dasar dari Komputasi Grid
Sumber daya dikelola dan dikendalikan secara lokal.
Sumber daya berbeda dapat mempunyai kebijakan dan mekanisme berbeda, mencakup Sumber daya komputasi dikelola oleh sistem batch berbeda, Sistem storage berbeda pada node berbeda, Kebijakan berbeda dipercayakan kepada user yang sama pada sumber daya berbeda pada Grid.
Sifat alami dinamis: Sumber daya dan pengguna dapat sering berubah.
Lingkungan kolaboratif bagi e-community (komunitas elektronik, di internet)
Tiga hal yang di-sharing dalam sebuah sistem grid, antara lain : Resource, Network dan Proses. Kegunaan / layanan dari sistem grid sendiri adalah untuk melakukan high throughput computing dibidang penelitian, ataupun proses komputasi lain yang memerlukan banyak resource komputer.
Secara generik, keuntungan dasar dari penerapan komputasi Grid, yaitu:
Perkalian dari sumber daya: Resource pool dari CPU dan storage tersedia ketika idle.
Lebih cepat dan lebih besar: Komputasi simulasi dan penyelesaian masalah apat berjalan lebih cepat dan mencakup domain yang lebih luas
Software dan aplikasi: Pool dari aplikasi dan pustaka standard, Akses terhadap model dan perangkat berbeda, Metodologi penelitian yang lebih baik.
Data: Akses terhadap sumber data global, dan Hasil penelitian lebih baik
Virtualisasi
Dalam ilmu komputer, virtualisasi (bahasa Inggris: virtualization) adalah istilah umum yang mengacu kepada abstraksi dari sumber daya komputer. Definisi lainnya adalah "sebuah teknik untuk menyembunyikan karakteristik fisik dari sumber daya komputer dari bagaimana cara sistem lain, aplikasi atau pengguna berinteraksi dengan sumber daya tersebut. Hal ini termasuk membuat sebuah sumber daya tunggal (seperti server, sebuah sistem operasi, sebuah aplikasi, atau peralatan penyimpanan terlihat berfungsi sebagai beberapa sumber daya logikal; atau dapat juga termasuk definisi untuk membuat beberapa sumber daya fisik (seperti beberapa peralatan penyimpanan atau server) terlihat sebagai satu sumber daya logikal."
Istilah virtualisasi sudah digunakan secara luas sejak 1960-an, dan telah diaplikasikan kepada beberapa aspek komputer—dari keseluruhan sistem komputer sampai sebuah kemampuan atau komponen individu. Secara umum semua teknologi virtualisasi mengacu kepada "menyembunyikan detail teknis" melalui enkapsulasi.
Menurut Alan Murphy dalam papernya Virtualization Defined – Eight Different Ways, menyebutkan setidaknya terdapat delapan istilah dalam penerapan virtualisasi. Diantaranya adalah operating system virtualization, application server virtualization, application virtualization, management virtualization, network virtualization, hardware virtualization, storage virtualization dan service virtualization.
Fungsi Virtualisasi
Secara umum fungsi virtualisasi data center adalah sebagai berikut.
Pengurangan Biaya Investasi Hardware. Investasi hardware dapat ditekan lebih rendah karena virtualisasi hanya mendayagunakan kapasitas yang sudah ada. Tak perlu ada penambahan perangkat komputer, server dan pheriperal secara fisik. Kalaupun ada penambahan kapasitas harddisk dan memori, itu lebih ditujukan untuk mendukung stabilitas kerja komputer induk, yang jika dihitung secara finansial, masih jauh lebih hemat dibandingkan investasi hardware baru.
Kemudahan Backup & Recovery. Server-server yang dijalankan didalam sebuah mesin virtual dapat disimpan dalam 1 buah image yang berisi seluruh konfigurasi sistem. Jika satu saat server tersebut crash, kita tidak perlu melakukan instalasi dan konfigurasi ulang. Cukup mengambil salinan image yang sudah disimpan, merestore data hasil backup terakhir dan server berjalan seperti sedia kala. Hemat waktu, tenaga dan sumber daya.
Kemudahan Deployment. Server virtual dapat dikloning sebanyak mungkin dan dapat dijalankan pada mesin lain dengan mengubah sedikit konfigurasi. Mengurangi beban kerja para staff IT dan mempercepat proses implementasi suatu sistem
Mengurangi Panas. Berkurangnya jumlah perangkat otomatis mengurangi panasnya ruang server/data center. Ini akan berimbas pada pengurangan biaya pendinginan/AC dan pada akhirnya mengurangi biaya penggunaan listrik
Mengurangi Biaya Space. Semakin sedikit jumlah server berarti semakin sedikit pula ruang untuk menyimpan perangkat. Jika server ditempatkan pada suatu co-location server/data center, ini akan berimbas pada pengurangan biaya sewa
Kemudahan Maintenance & Pengelolaan. Jumlah server yang lebih sedikit otomatis akan mengurangi waktu dan biaya untuk mengelola. Jumlah server yang lebih sedikit juga berarti lebih sedikit jumlah server yang harus ditangani
Standarisasi Hardware. Virtualisasi melakukan emulasi dan enkapsulasi hardware sehingga proses pengenalan dan pemindahan suatu spesifikasi hardware tertentu tidak menjadi masalah. Sistem tidak perlu melakukan deteksi ulang hardware sebagaimana instalasi pada sistem/komputer fisik
Kemudahan Replacement. Proses penggantian dan upgrade spesifikasi server lebih mudah dilakukan. Jika server induk sudah overload dan spesifikasinya tidak mencukupi lagi, kita bisa dengan mudah melakukan upgrade spesifikasi atau memindahkan virtual machine ke server lain yang lebih powerful.
Teknologi Virtualisasi
Untuk mendukung implementasi virtualisasi server , CPU dari sebuah server harus mendukung teknologi virtualisasi, tetapi tidak usa kuatir karena hardware saat ini sudah mendukung teknologi virtualisasi hankan untuk komputer biasa pun sudah mendukung teknilogi virtualisasi.
Dalam teknologi virtualisasi sebuah server dipecah kedalam virtual environment , dan setiap virtual environment dapat diinstall sistem operasi yang berbeda dari sistem operasi server fisik atau sistem operasi dari virtual environment lain nya. Ketiaka Virtual environment berjalan dia tidak tau tentang resource yang digunakan sehingga dalam teknologi virtualisasi diperlukan sebuah Hypervisor yang mengkoordinasi komunikasi dan instruksi antara virtual environment dengan resource fisik / psical resource. Hypervisor inilah yang dipegang oleh administrator dari sebuah server yang mengimplementasikan teknologi virtualisasi untuk mengatur virtual environment.
Ada 2 jenis Hypervisor dalam dunia virtualisasi saat ini :
Hypervisor Type 1 (Bare Metal Hypervisor)
Dikatakan Bare Metal hypervisor karena hypervisor ini mengakses langsung hardaware fisik tanpa bantuan sistem operasi, dan biasnaya untuk menggunakan hypervisor type 1 kita harus menginstal hypervisor sebagai sistem operasi (Bukan diinstal dalam sistem operasi).
Contoh Hypervisor Type 1 diantaranya : KVM, Red hat Enterprise Virtualisation (RHEV), XEN/Citrix XenServer, Hyper-V, VMware vSphere/ESXi
Hypervisor Type 2 (Hosted Hypervisor)
Jenis Hypervisor ini memerlukan sistem operasi untuk berjalan, karena jenis hyper visor ini berjalan diatas sistem operasi.
Contoh Hypervisor Type 2 diantaranya : VMware Work station, VMware Player, Virtual Box
Keuntungan Menggunakan teknologi Virtualisasi
Semakin berkembangnya tuntutan dunia dalam industri komputer untuk memenuhi kebutuhan manusia dan semakin komplex infrastruktur untuk membangun nya maka teknologi virtualisasi dibuat untuk menyederhanakan kerumitan yang ada. dengan menggunakan virtual environment,konfigurasi server dan infrastruktur jaringan lebih gampang dimanage dan dimonitor. Berikut adalah beberapa keuntungan/benefit menggunakan teknologi virtualisasi dalam dunia komputer modern saat ini .
Optimalisasi Server
jika kita mempunyai server fisik dengan kapasitas besar, sedangkan aplikasi server yang akan kita bangun memerlukan resource yang kecil, baiknya server yang akan kita bangun dimasukan ke dalam virtual environment dan mengatur resource VE sesuai dengan kebutuhan aplikasi server yang akan kita bangun, Dengan demikian sisa resource bisa kita manfaatkan untuk membangun server lain diwaktu yang akan datang tanpa harus membeli perangkat baru.
Snapshot
Virtual environment mendukung snapshot yang memungkinkan kita untuk mengembalikan virtual environment (VE) ke kondisi saat snapshot diambil jika terjadi kesalahan konfigurasi/Error. Snapshot akan menyimpan kondisi dari VE dan kita bisa merestore kapanpun kita mau.
Migrasi Mudah
Hypervisor sekarang telah mendukung live migration, dimana kita bisa memindah VE (Server) yang sedang berjalan ke server fisik yang lain tanpa mengalami server down.
Instan Fail Over
Mayoritas Hypervisor telah mendukung clustering sehingga fail over bisa dilakukan secara instan dan otomatis
Flexible
Dengan menggunakan teknologi virtual pengelolaan server akan menjadi lebih mudah ketika kita ingin memindah, merubah resource bahkan ketika kita ingin memindahkan server dalam keadaan hidup tanpa mengalami down (Live Migration). Proses penginstallan dan recovery juga tidak memakan waktu yang lama jika terjadi kerusakan /error pada Hypervisor
Hemat Listrik dan Hardware
Akan sangat berbeda jika kita tidak menggunakan virtualisasi dimana kita menghidupkan banyak server yang masing-masing menggunakan daya sendiri , dengan virtualisasi cukup 1 server besar dan penggunaan resource bisa disesuaikan dengan kebutuhan. Jika Resource kurang tidak perlu beli server baru cukup Upgrade part yang perlu diupgrade saja (misal RAM,CPU,Storage)
Memperpanjang masa hidup aplikasi yang sudah lama
Ketika aplikasi jadul sudah tidak bisa berjalan di modern OS saat ini (Misalnya aplikasi DOS) dengan teknologi virtual kita bisa menjalankan aplikasi jadul tersebut diplatform manapun dengan menggunakan virtualisasi desktop atau virtualisasi aplikasi.
Backup dan Recovery Mudah
Hypervisor menyediakan auto backup untuk setiap container /VE sehingga jika terjadi kerusakan kita bisa merestore backup tersebut ke virtual server yang telah disediakan tanpa harus memakan waktu yang lama, Berbeda sekali jika kita menginstall server pada server fisik yang akan memakan waktu lama untuk mengkonfigurasi ulang jika terjadi kerusakan
Lebih aman
Jika terjadi kasus server di hack dan data penting dalam server dihapus/dirusak maka dengan mudah kita untuk mengembalikan nya dengan fasilitas backup-restore. walau hacker telah masuk kedalam sistem tetapi hacker tidak bisa menembus ke resource fisik dari server yang kita kelola maka dengan mudah kita untuk menghapus backdoor dan malware yang ditinggalkannya, ini akan berbeda jika tidak menggunakan virtualisasi ketika server dijebol hacker maka hacker 100% telah menguasai server fisik kita dan akan sangat repot untuk membersihkan nya.
Sedangkan kekurangannya adalah sebagai berikut :
Potensi risiko keamanan jaringan tidak dikelola dengan baik
Kesulitan aplikasi kompleks (seperti multimedia)
Downtimejaringan akan berakibat fatal dan berdampak ke semua user atau pengguna
Ketergantungan konektivitas jaringan publik.
Gambar Virtualisasi
Distributed Computation dalam Cloud Computing
Kegiatan ini merupakan kumpulan beberapa computer yang terhubung untuk melakukan pendistribusian, seperti mengirim dan menerima data serta melakukan interaksi lain antar computer yang dimana membutuhkan sebuah jaringan agar computer satu dan lainnya bisa saling berhubung dan melakukan interaksi. Hal ini semua dilakukan dengan cloud computing yang seperti kita ketahui memberikan layanan dimana informasinya disimpan di server secara permanen dan disimpan di computer client secara temporary.
Komputasi Terdistribusi merupakan salah satu tujuan dari Cloud Computing, karena menawarkan pengaksesan sumber daya secara parallel, para pengguna juga bisa memanfaatkannya secara bersamaan (tidak harus menunggu dalam antrian untuk mendapatkan pelayanan), terdiri dari banyak sistem sehingga jika salah satu sistem crash, sistem lain tidak akan terpengaruh, dapat menghemat biaya operasional karena tidak membutuhkan sumber daya (resourches)“.
Distribusi komputasi ini memiliki definisi mempelajari penggunaan terkoordinasi dari computer secara fisik terpisah atau terdistribusi. Pada distributed computing ini, program dipisah menjadi beberapa bagian yang dijalankan secara bersamaan pada banyak computer yang terhubung melalui jaringan internet.
Map Reduce
Setiap istilah perlu definisi, dan harus ada kesepakatan akan definisi tersebut biar tidak terjadi salah pengertian ataupun salah paham diantara para pengguna istilah tersebut. MapReduce pun punya definisi. MapReduce adalah model pemrograman rilisan Google yang ditujukan untuk memproses data berukuran raksasa secara terdistribusi dan paralel dalam cluster yang terdiri atas ribuan komputer. Dalam memproses data, secara garis besar MapReduce dapat dibagi dalam dua proses yaitu proses Map dan proses Reduce. Kedua jenis proses ini didistribusikan atau dibagi-bagikan ke setiap komputer dalam suatu cluster (kelompok komputer yang salih terhubung) dan berjalan secara paralel tanpa saling bergantung satu dengan yang lainnya. Proses Map bertugas untuk mengumpulkan informasi dari potongan-potongan data yang terdistribusi dalam tiap komputer dalam cluster. Hasilnya diserahkan kepada proses Reduce untuk diproses lebih lanjut. Hasil proses Reduce merupakan hasil akhir yang dikirim ke pengguna.
Desain dan Struktur, MapReduce itu sederhana.
Dari definisinya, MapReduce mungkin terkesan sangat ribet. Untuk memproses sebuah data raksasa, data itu harus dipotong-potong kemudian dibagi-bagikan ke tiap komputer dalam suatu cluster. Lalu proses Map dan proses Reduce pun harus dibagi-bagikan ke tiap komputer dan dijalankan secara paralel. Terus hasil akhirnya juga disimpan secara terdistribusi. Benar-benar terkesan merepotkan.
Beruntunglah, MapReduce telah didesain sangat sederhana alias simple. Untuk menggunakan MapReduce, seorang programer cukup membuat dua program yaitu program yang memuat kalkulasi atau prosedur yang akan dilakukan oleh proses Map dan Reduce. Jadi tidak perlu pusing memikirkan bagaimana memotong-motong data untuk dibagi-bagikan kepada tiap komputer, dan memprosesnya secara paralel kemudian mengumpulkannya kembali. Semua proses ini akan dikerjakan secara otomatis oleh MapReduce yang dijalankan diatas Google File System (Gambar 1).
Gambar 1. Map dan Reduce
Program yang memuat kalkulasi yang akan dilakukan dalam proses Map disebut Fungsi Map, dan yang memuat kalkulasi yang akan dikerjakan oleh proses Reduce disebut Fungsi Reduce. Jadi, seorang programmer yang akan menjalankan MapReduce harus membuat program Fungsi Map dan Fungsi Reduce.
Fungsi Map bertugas untuk membaca input dalam bentuk pasangan Key/Value, lalu menghasilkan output berupa pasangan Key/Value juga. Pasangan Key/Value hasil fungsi Map ini disebut pasangan Key/Value intermediate. Kemudian, fungsi Reduce akan membaca pasangan Key/Value intermediate hasil fungsi Map, dan menggabungkan atau mengelompokkannya berdasarkan Key tersebut. Lain katanya, tiap Value yang memiliki Key yang sama akan digabungkan dalam satu kelompok. Fungsi Reduce juga menghasilkan output berupa pasangan Key/Value.
Untuk memperdalam pemahaman, mari kita simak satu contoh. Taruhlah kita akan membuat program MapReduce untuk menghitung jumlah tiap kata dalam beberapa file teks yang berukuran besar (Gambar 2). Dalam program ini, fungsi Map dan fungsi Reduce dapat didefinisikan sebagai berikut:
map(String key, String value):
//key : nama file teks.
//value: isi file teks tersebut.
for each word W in value:
emitIntermediate(W,"1");
reduce(String key, Iterator values):
//key : sebuah kata.
//values : daftar yang berisi hasil hitungan.
int result = 0;
for each v in values:
result+=ParseInt(v);
emit(AsString(result));
Hasil akhir dari program ini adalah jumlah dari tiap kata yang terdapat dalam file teks yang dimasukkan sebagai input program ini.
Gambar 2. Menghitung jumlah tiap kata dalam suatu dokumen.
Pengertian hadoop MapReduce
Untuk penyederhanaan saya coba merumuskan definisi hadoop MapReduce ke dalam poin-poin sebagai berikut :
Hadoop MapReduce adalah algoritma atau proses komputasi pada sistem terdistribusi
Ditulis di atas bahasa Java
Mempunyai 2 proses utama, yaitu map dan reduce
Mampu untuk memproses secara pararel data yang sangat besar, karena komputasi bisa berjalan di puluhan, ratusan, atau bahkan ribuan node.
Map mengambil satu set data dan mengubahnya menjadi satu set data, di mana unsur-unsur individu dipecah menjadi tupel. Kemudian, Reduce mengambil output dari hasil proses map sebagai masukan dan menggabungkan/mengelompokkan tupel data ke satu set data yang lebih kecil dari tupel. Sebagai urutan pada penamaan MapReduce menyiratkan, proses reduce selalu dilakukan setelah proses map. Tupel di sini berarti pasangan antara key dan value-nya, dapat digambarkan dengan simbol "(k1, v1)".
Tahapan proses MapReduce
MapReduce terdiri atas tiga tahap, yaitu tahap map, tahap shuffle, dan terakhir tahap reduce. untuk tahapan shuffle dan reduce digabungkan kedalam satu tahap besaran-nya yaitu tahap reduce.
Tahap map, memproses data inputan yang umumnya berupa file yang tersimpan dalan HDFS (dapat di baca di Sistem file terdistribusi), inputan tersebut kemudian diubah menjadi tuple yaitu pasangan antara key dan value-nya.
Tahap reduce, memproses data inputan dari hasil proses map, yang kemudian dilakukan tahap shuffle dan reduce yang hasil data set baru-nya disimpan di HDFS kembali.
Berikut ini ilustrasi untuk mendapatkan gambaran tentang proses map dan reduce :
Contoh kasus map reduce adalah misalnya jika kita ingin menghitung jumlah penggunaan huruf dalam sebuah buku. Misal kita punya satu file teks besar yang berisi seluruh kalimat yang menyusun sebuah buku. Maka yang dilakukan oleh Map Reduce program yang menghitung penggunaan kata dalam buku tersebut kurang lebih sebagai berikut :
Proses Map :
Membaca tiap baris kalimat di dalam file teks tersebut.
Membaca tiap kata yang ada dalam beris tersebut dan membuat sebuah map untuk kata tersebut. Key dari map itu adalah kata tersebut sedangkan value dari map itu adalah 1.
Sampai disini hasil yang kita dapatkan dari dua langkah diatas adalah daftar map untuk semua kata dari file teks tersebut dengan value 1. Karena kita tidak menyatukan perhitungan kata-kata yang sama dalam satu map, maka tersapat map dengan key yang sama. Misal ada map kata ‘Dan’ => 1 berulang kali.
Proses Reduce:
Melakukan sorting atau pengelompokan map dengan kata-kata yang sama.
Menjumlahkan untuk mencari total dari kata-kata yang sama tersebut
Sampai disini maka hasilnya adalah map dengan key yang unik setiap kata berikut dengan jumlah penggunaannya di buku tersebut.
Kesimpulan :
Hadoop MapReduce adalah model komputasi berbasis Java pada sistem terdistribusi dalam rangka mendukung aplikasi Big Data. Diberi nama MapReduce dikarenakan terdiri atas dua proses utama yaitu map dan reduce.
NoSQL (Not Only SQL)
NoSQL (Not Only SQL) merupakan sebuah konsep dimana ketika sebuah software dirancang, terdapat lebih dari satu mekanisme penyimpanan data yang bisa digunakan tergantung kebutuhan software tersebut. Secara sederhana, ketika masalah kompleks harus diselesaikan, masalah akan dipecah menjadi bagian-bagian kecil dan dalam setiap bagian tersebut diterapkan model database yang berbeda. Selanjutnya hasil dari masing-masing bagian digabungkan kedalam sebuah hybrid data storage. Konsep ini juga dikenal sebagai Polyglot Pesistence. Saat ini NoSQL masih belum memiliki definisi tetap.
Mengapa NoSQL?
Developer aplikasi sering berhadapan dengan masalah ketidaksesuaian antara struktur data relasional dengan struktur data in-memory. NoSQL database memungkinkan developer untuk mengembangkan aplikasi tanpa perlu mengubah struktur in-memory ke struktur relasional.
Pada gambar diatas, bagian kanan merupakan gambaran implementasi menggunakan database biasa sedangkan bagian kiri merupakan gambaran implementasi menggunakan database berkonsep NoSQL. Gambar ini menunjukkan perpindahan dari penggunaan database sebagai titik integrasi menjadi integrasi menggunakan services. Database relasional tidak didesain untuk bekerja dengan baik dalam cluster, sedangkan perkembangan web sebagai platform membutuhkan dukungan untuk jumlah data yang besar dengan menjalankan aplikasi dalam cluster.
No SQL Data Base
NOSQL adalah database generasi terbaru yang mengarahkan kepada database yang tidak berelasi (non-relational), dapat disebarkan kepada siapapun (open-source) dan berskala horisontal (horizontal scale). Berbeda dengan basis data SQL dimana meskipun berbeda-beda pembuat namun cara kerja NOSQL maupun cara penggunaannya relatif sama. Contohnya sama-sama menggunakan tabel yang dihubungkan oleh relasi-relasi, manipulasi data dengan bahasa SQL dan sb. Basis data NOSQL bisa sangat berbeda satu sama lain.
Pengelompokan database noSQL
Secara umum, database noSQL dibagi menurut format penyimpanan dokumentnya. Berikut ini adalah pengelompokan database noSQL berdasarkan model (penyimpanan) datanya :
Document Database (disimpan dalam dokumen-dokumen) contohnya MongoDB, seiap satu object data disimpan dalam satu dokumen. Dokumen sendiribisa terdiri dari key-value, dan value sendiri bisa berupa array atau key-value bertingkat.
Graph , (disimpan dalam bentuk graf). Format ini sering dipakai untuk data yang saling berhubungan seperti jejaring social. Contoh database noSQL dengan format ini adalah Neo4J dan FlockDB. FlockDB dipakai oleh twitter.
Key – Value (disimpan dalam bentuk kunci-isi berpasangan), contoh database jenis ini adalah Apache Cassandra.
Object Database (disimpan dalam object object), Object disini sama dengan pengertian object di Pemrograman beroreintasi object , Contoh databasenya adalah Db4o.
7 Basis Data NoSQL Populer
Mongo DB
MongoDB merupakan basis data NoSQL yang document based. Ia menyimpan data-datanya dalam suatu dokumen JSON yang disebut BSON (Binary JSON). MongoDB juga merupakan salah satu basis data yang open source sehingga pengembangan mongoDB sendiri cukup pesat karena setiap orang bisa berpartisipasi untuk mengembangkannya.
Couch DB
Apache CouchDB, biasa disebut dengan CouchDB saja, merupakan basis data NoSQL yang dikembangkan oleh Apache. CouchDB tidak menyimpan datanya dalam tabel melainkan dalam dokumen seperti halnya mongoDB. Basis data ini juga merupakan proyek open source serta dikembangkan dalam pengembangan CouchDB agar basis data ini lebih baik.
Cassandra
Cassandra merupakan sebuah sistem penyimpanan data terdistribusi untuk menangani jumlah data yang sangat besar dan terstruktur dan juga merupakan aplikasi open source yang ditulis dalam bahasa Java dengan lisensi Apache License 2.0. Untuk memproses datanya, Cassandra menggunakan bahasa sendiri yang mirip dengan SQL yaitu Cassandra Query Language (CQL).
Redis
Redis merupakan singkatan dari REmote DIctionary Server dan merupakan basis data berbasis key-valuepaling populer. Redis banyak dipilih karena memiliki fitur in-memory, networked, dan durabilitas tinggi.
Riak
Riak merupakan basis data NoSQL terdistribusi yang menyimpan datanya dalam bentu key-value. iak memiliki dua versi yakni Open source edition dan Enterprise edition. Enterprise edition menawarkan dukungan berbayar intensif dari pengembangnya. Pengguna Open source edition dapat bermigrasi kapan saja ke Enterprise edition jika dibutuhkan.
Neo4J
Neo4j merupakan basis data NoSQL dengan sistem graf. Neo4j menyimpan relasi antar objek dalam struktur seperti graf, dimana setiap objek merujuk ke objek lainnya secara langsung. Dalam menambahkan maupun mengambil data, Neo4j memiliki bahasa sendiri yang disebut Cypher. Neo4j termasuk basis data yang open source.
Orient DB
OrientDB merupakan basis data graf terdistribusi generasi kedua. OrientDB menawrkan dua edisi yakni Community Edition yang tersedia secara gratis dan Enterprise Edition yang merupakan aplikasi komersial dikembangkan oleh tim yang sama yang mengembangkan engine OrientDB. OrientDB dapat digunakan bersama JavaScript, .NET, node.js, php, Scala, Ruby, Python, C, Clojure, Java, dan Perl.
Ulasan Produk Terapan NoSQL
Salah satu produk terapan NOSQL yang terkenal adalah MongoDB. MongoDB adalah database open source berbasis dokumen (Document-Oriented Database) yang awalnya dibuat dengan bahasa C++. MongoDB sendiri sudah dikembangkan oleh 10 gen sejak Oktober 2007, namun baru dipublikasikan pada Februari 2009. Selain karena performanya 4 kali lebih cepat dibandingkan MySQL serta mudah diaplikasikan. Dalam konsep MongoDB tidak ada yang namanya tabel, kolom ataupun baris yang ada hanyalah collection (ibaratnya tabel), document (ibaratnya record). Data modelnya sendiri disebut BSON dengan struktur mirip dengan JSON. Strukturnya cukup mudah dibaca, contohnya seperti ini.
{
“nama” : “Dede Gunawan”,
“kontak” : {
“alamat” : “Kp. Cioray, Ds. Jatiwaras”,
“kota” : “Tasikmalaya”,
“kodepos” : “46191”,
“telp” : “0812xxxxxx”,
}
}
Dengan konsep key-value yang ada pada MongoDB, setiap document otomatis memiliki index id yang unik. Hal ini membantu mempercepat proses pencarian data secara global.
Kelebihan NoSQL di banding Relasional Database
NoSQL bisa menampung data yang terstruktur, semi terstruktur dan tidak terstuktur secara efesien dalam skala besar (big data/cloud).
Menggunakan OOP dalam pengaksesan atau manipulasi datanya.
NoSQL tidak mengenal schema tabel yang kaku dengan format data yang kaku. NoSQL sangat cocok untuk data yang tidak terstruktur, istilah singkat untuk fitur ini adalah Dynamic Schema.
Autosharding, istilah sederhananya, jika database noSQL di jalankandi cluster server (multiple server) maka data akan tersebar secara otomatis dan merata keseluruh server.
Kekurangan dari database NoSQL
Hostingnya mahal. beberapa layanan di luar negeri mencharge biaya 100-200 USD untuk hosting database noSQL. Selain itu, belum ditemukan hosting Cpanel yang mendukung database MongoDB atau database noSQL lainnya.
BAB III
PENUTUP
Kesimpulan
Sistem Cloud bekerja menggunakan internet sebagai server dalam mengolah data. Sistem ini memungkinkan pengguna untuk login ke internet yang tersambung ke program untuk menjalankan aplikasi yang dibutuhkan tanpa melakukan instalasi. Infrastruktur seperti media penyimpanan data dan juga instruksi/perintah dari pengguna disimpan secara virtual melalui jaringan internet kemudian perintah – perintah tersebut dilanjutkan ke server aplikasi. Setelah perintah diterima di server aplikasi kemudian data diproses dan pada proses final pengguna akan disajikan dengan halaman yang telah diperbaharui sesuai dengan instruksi yang diterima sebelumnya sehingga konsumen dapat merasakan manfaatnya.
Contohnya lewat penggunaan email seperti Yahoo ataupun Gmail. Data di beberapa server diintegrasikan secara global tanpa harus mendownload software untuk menggunakannya. Pengguna hanya memerlukan koneksi internet dan semua data dikelola langsung oleh Yahoo dan juga Google. Software dan juga memori atas data pengguna tidak berada di komputer tetapi terintegrasi secara langsung melalui sistem Cloud menggunakan komputer yang terhubung ke internet.
DAFTAR PUSTAKA
Mann, Andi, Virtualization 101, Enterprise Management Associates (EMA), diakses tanggal 2007-10-29
Alan Murphy, Virtualization Defined – Eight Different Ways
http://naufalgholibs.blogspot.co.id/2017/10/pengertian-dan-fungsi-virtualisasi.html
https://azizazkink.wordpress.com/2014/05/09/distributed-computation-dalam-cloud-computing/
https://openbigdata.wordpress.com/2014/09/06/map-reduce-the-algorithm/
http://noviardisyamsuir.blogspot.co.id/2016/03/hadoop-mapreduce-adalah.html
http://seto.citravision.com/berita-39-pengantar-komputasi-cloud--map-reduce-dan-nosql-not-only-sql.html
http://cinoyraz.wordpress.com/2013/05/01/komputasi-cloud-komputasi-grid-virtualisasi-map-reduce-dan-nosql-not-only-sql/
http://no21reason.blogspot.com/2013_04_01_archive.html
https://www.candra.web.id/pengantar-database-nosql-dan-mongodb/
http://irfandudin.blog.uns.ac.id/2015/12/19/nosql-database/
https://www.codepolitan.com/7-basis-data-nosql-populer
https://adhibarfan.wordpress.com/2016/04/21/pengantar-komputasi-cloud/
https://laviniavini.wordpress.com/2015/12/05/not-only-sql-nosql/