1. HIVE dibutuhkan karena dapat mengolah data besar secara terdistribusi di Hadoop. Sedangkan RDBMS biasa hanya dapat mengolah data secara terpusat.
2. Kelebihan HIVE dibandingkan RDBMS biasa antara lain:
- Dapat mengolah data besar secara terdistribusi di kluster Hadoop
- Tidak terikat dengan skema karena menggunakan "schema on read"
- Dapat mengolah data berstruktur, semi struktur, dan tidak berstruktur
Sistem operasi adalah program yang bertindak sebagai perantara antara user de...
Pengenalan Big Data untuk Pemula
1. Introduction to Big Data
with Hadoop
Pelatihan, 23-25 Oktober 2020
Dipersiapkan oleh Dony Riyanto
2. Apa itu Big Data
Benar:
• Sekumpulan data dalam sistem, yang sangat besar jumlahnya,
• sehingga (hampir) tidak mungkin diolah menggunakan infrastruktur/sistem yang ada saat ini (yang dimiliki oleh
perusahaan),
• sehingga (mungkin) dibutuhkan sistem pengolahan data khusus,
• yang dari situ diharapkan suatu saat bisa digali analisa yang lebih dalam, lebih cepat, untuk keperluan
perusahaan/organisasi.
Salah:
• Mengumpulkan data tentang siapapun dan apapun yang penting jumlahnya besar.
• All-in-one solution.
• Pasti lebih baik daripada sistem pengolahan data secara tradisional.
• Sebuah keharusan bagi semua perusahaan/organisasi untuk investasi dan membangun sistem bigdata.
• Hanya dibutuhkan oleh perusahaan/organisasi besar.
6. Apa gunanya Big Data?
• Tempat menyimpan data dalam jumlah besar sekali,
• dan mungkin dalam format yang unstructured/semi-tructured,
• namun harus bisa diolah (dengan cepat/baik).
Tujuan akhir big data:
• Mendapatkan insight yang lebih baik, untuk pengambilan keputusan yang lebih tepat.
• Untuk dapat di lakukan analisa lebih dalam suatu saat nanti.
• Untuk dapat mengambil keputusan secara sistem (bahkan otomatisasi) pada saat bisnis sedang berjalan (daily operation)
Tujuan big data bukan untuk:
• Mengurangi biaya infrastructur pengolahan data
• Secara 'magic' menyelesaikan masalah-masalah/pengambilan keputusan dalam bisnis
7. GIGO vs GIIO
• Sistem Informasi yang baik umumnya dirancang untuk mencegah Garbage In
Garbage Out. Informasi di filter dengan baik didepan sedemikian mungkin,
untuk memastikan bahwa yang tersimpan adalah informasi inti saja.
• Perusahaan minuman air dalam kemasan, menggunakan Sistem Informasi
untuk mencatat, berapa botol yang di produksi tiap pabriknya, berapa yang
didistribusikan per hari, siapa saja distributornya, dimana saja penjualannya,
dsb.
• Tetapi mereka tidak pernah tahu, kenapa pada saat-saat tertentu pembelian
air minum kemasan naik di daerah tertentu (misalnya: ada konser, atau ada
upacara/seremonial di lapangan). Karena mereka tidak pernah mencatat data-
data pendukung, yang mungkin terlalu detail, yang mungkin dianggap tidak
relevan secara langsung dengan produksi air mineral.
• Bagaimana jika dari data 'sampah' bisa didapatkan insight (gargabe in insight
out)? Lalu ada definisi dari data 'sampah' ini?
8. GIGO vs GIIO (2)
• Pada sebuah perusahaan e-commerce platform, tentu data utama yang harus
mereka kelola adalah: data barang, data penjual, data pembeli, data
pemesanan, data pengantaram, data pembayaran, dsb.
• Bagaimana dengan data pemesanan yang batal (sudah dimasukkan ke
keranjang tapi kemudian dihapus, atau tidak diteruskan ke checkout)? Atau
aktifitas penjual memasukkan/menghapus/meng-edit item barang jualan
mereka? (dan data-data lain yang sifatnya temporer)
• Bagaimana dengan data: berapa lama user berada dalam web app tersebut,
scroll/klik kemana, arah pergerakan mouse, dsb?
• Bagaimana dengan data-data dari luar web app: aktifitas iklan di
web/platform lain, aktifitas user di platform lain (socmed misalnya)?
• Apakah itu adalah data sampah? Jika semua data itu dikumpulkan dan
disimpan, apa gunanya, dan bagaimana kita bisa memanfaatkannya?
10. Business Intelligence vs Machine Learning
• Banyak perusahaan sudah menerapkan BI dan membuat Data
Warehouse untuk bisa melakukan analisa lebih dalam terhadap data
yang tersimpan. “Apa yang terjadi?” “Customer kita lebih suka apa?”
“Customer kita lebih mau beli item yang mana?
Back during World War II, the RAF lost a lot
of planes to German anti-aircraft fire. So they
decided to armor them up. But where to put
the armor? The obvious answer was to look
at planes that returned from missions, count
up all the bullet holes in various places, and
then put extra armor in the areas that
attracted the most fire.
11. Business Intelligence vs Machine Learning (2)
• Business Intelligence secara umum bertujuan untuk 'melihat kebelakang' tentang apa
yang terjadi. Pesawat tempur yang kembali dari perang, di-analisa mendalam dan
didapatkan kesimpulan bahwa musuh lebih sering melakukan tembakan ke arah sayap
dan bagian tengah pesawat. Untuk itu kita perlu memperkuat lapisan pesawat pada
bagian itu.
• Jelas kita ketahui bahwa: pesawat yang tertembak di bagian mesin dan/atau bagian kabin,
tidak pulang ke pangkalan dan jatuh di medan tempur. Dan data itu tidak mereka
pertimbangkan.
• Machine Learning membutuhkan data lebih dari itu. Bagaimana pola terbang pesawat
yang berhasil kembali ke pangkalan? Kapan serangan terjadi, berapa banyak pasukan
musuh pada saat terjadi serangan, pesawat terbang ke arah mana dan dalam posisi
bagaimana, profil musuh, spek engine/pesawat, dsb, sehingga bisa didapatkan/dipelajari
pola yang lebih tepat. Yang dibutuhkan mungkin bukan penguatan pada bagian2 pesawat,
tetapi waktu/pola/cara serangannya yang perlu disesuaikan untuk menyelamatkan
pesawat2 berikutnya agar tidak jatuh di pertempuran berikutnya.
12. Contoh Pemakaian Big Data secara umum
• Product Recomendation
• Realtime Prediction/Estimation
• Sentiment Analysis (of product/marketing campaign)
• Personalized Search Result/Services
• Chat bot/ Virtual Assistance
• Location pin-point
• Pattern Recognition (customer behaviour, type of profitable
customer)
13. Apa itu Hadoop?
• Hadoop adalah MR
• Hadoop adalah Distributed File System
(menggunakan MR)
• Hadoop adalah ekosistem
• Tools utk query data
• Tools untuk menghubung antara SQL dan
MR/HDFS
• Tools untuk proses data secara stream
• dsb
• Hadoop dalam distro/appliance (Cloudera,
Hortonworks, MapR, Pivotal)
17. Scale Up vs Scale Out Problem
• Paradigma proses data konvensional adalah centralized/
terkonsentrasi pada satu server atau cluster. Hal ini menyebabkan
apabila kita ingin melakukan peningkatan kapasitas, harus dilakukan
secara horizontal scaling atau sering disebut dengan scale-up
18. Scale Up vs Scale Out Problem (2)
• Ketika konteks pembahasannya adalah data yang bertumbuh menjadi sangat
besar dan datang terus menerus secara cepat dan sulit diprediksi, maka
mekanisme scale-up menjadi terasa sangat berat dan membutuhkan biaya
besar diawal. Karena scale-up harus melalui proses perencanaan yang sangat
matang utk prediksi jangka menengah-panjang, dan biaya timbul di awal. Sulit
juga untuk dilakukan scale-up berkali kali, karena akan menibulkan downtime
yang akan merugikan/menghambat proses di perusahaan/organisasi.
• Teknologi cloud computing dan distributed computing yang semakin canggih
saat ini, memungkinkan kita untuk untuk melakukan peningkatan secara
horisontal atau scale out. Pendekatan scale out mengadosi prinsip:
berkembang secara bertahap sesuai kebutuhan tanpa harus
mengubah/mematikan sistem utama. Prinsip itu juga yang dipakai pada
Hadoop
19. Scale Up vs Scale Out Problem (3)
• Hadoop mengadopsi prinsip Scale
Out. Dimana data node bisa
ditambahkan sewaktu-aktu saat
dibutuhkan dan langsung
join/berkoordinasi dengan data node
yang lain melalui name node.
• Ini yang menyebabkan Hadoop
sangat populer dan ideal untuk
dipakai sebagai proses/penyimpanan
Big Data.
21. Map-Reduce (latihan)
• Install Hadoop (dibutuhkan install dan konfigurasi JAVA, download
dan setting aplikasi Apache Hadoop). Untuk proses instalasi Hadoop
bisa dilihat dari berbagai sumber, salah satunya:
https://www.tutorialspoint.com/hadoop/hadoop_enviornment_setup.htm
• Pastikan Hadoop sudah jalan. Bisa coba dengan ketik hadoop version
• Untuk menjalankan contoh di hadoop (pada saat download dan
extract, ada beberapa contoh bawaan). Contohnya: hadoop jar
share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar grep input
output 'dfs[a-z.]+'
• Lebih jauh bisa dibaca pada beberapa sumber seperti
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html
22. Map-Reduce (latihan wordcount dengan Python)
• Salah satu tutorial yang cukup baik untuk memahami cara kerja
Hadoop MR/HDFS bisa dibaca pada link berikut ini: https://www.michael-
noll.com/tutorials/writing-an-hadoop-mapreduce-program-in-python/
• Contoh app mapper:
Pada contoh ini, tugas mapper
hanya menerima input berupa text,
lalu memisahkan kan berdasarkan
kata, lalu menampilkan dalam
bentuk 2 kolom: <kata> 1
23. Map-Reduce (latihan wordcount dengan Python)
• Contoh app reducer:
Pada contoh ini, tugas reducer adalah memproses
data yang masuk (2 kolom: <kata> 1). Lalu selama
kata berikutnya masih sama dengan sebelumnya,
maka jumlahkan angkanya (1+1+1+1 dst), sampai
semua baris data terproses. Hasilnya seperti ini:
28. HIVE
• Apache HIVE adalah salah satu aplikasi dalam ekosistem Hadoop
• HIVE membutuhkan Hadoop (HDFS dan Hadoop MapReduce) dan RDMS
(untuk menyimpan meta data/metastore) untuk mengolah dan memproses
data
• HIVE menggunakan syntax mirip seperti SQL pada umumnya
• Salah satu perbedaan utama HIVE dengan RDBMS/SQL DB adalah HIVE
menggunakan “Schema on READ only”. Sehingga HIVE tidak ditujukan untuk
update/insert data seperti pada SQL.
• Perintah-perintah HIVE dapat di-eksekusi menggunakan command line
maupun menggunakan Web UI
• HIVE terdiri dari 3 komponen utama yaitu: client, service dan storage (lihat
gambar berikutnya)
30. HIVE
• Client
Berfungsi sebagai antarmuka ke manusia/sistem. Perintah-perintah HIVE diketik dan dimulai dari sini.
• Service
Berfungsi sebagai proses dibelakang layar, yang akan mengeksekusi perintah-perintah yang masuk
dari client, lalu menarik/meyimpan/ menghasilkan data output dari storage
• Storage & Computing
Tempat penyimpanan data dan proses terdistribusi. Data yang ada pada HDFS dipetakan
menggunakan metadata yang tersimpan pada service.
Contoh: Kita memiliki data transaksi harian dari banyak cabang perusahaan yang kemudian di export
menjadi sebuah file besar dengan nama transaction-2020.csv. File ini lalu di upload ke HDFS agar
terdistribusi dan dapat diproses secara paralel. Data ini dalam format comma separated value
(structured) dengan kolom ID, trans_data, trans_amount, customer_id, dsb. Menggunakan HIVE,
struktur data ini disimpan sebagai meta data, sehingga bisa dilakukan query seolah-olah file ini
adalah tabel RDBMS biasa. Misalnya: “SELECT SUM(trans_amount) FROM transaction”
32. HIVE
• Urutan eksekusi perintah pada HIVE digambarkan pada gambar di
atas.
• Perintah yang masuk dari client, dikirimkan ke service, lalu perintah
tersebut diterjemahkan menjadi script khusus, dan dilakukan
kompilasi, lalu verifikasi kolom/data dengan meta data yang
tersimpan di metastore, lalu akan dieksekusi oleh service.
• Dalam eksekusinya, HIVE akan membaca file pada HDFS dan
memproses pengolahan data-nya menggunakan MapReduce.
• Ini berbeda dengan contoh MapReduce yang kita lakukan pada
latihan sebelumnya. Dimana di latihan sebelumnya (tanpa HIVE), kita
harus membuat dulu aplikasi mapper dan reducer, menggunakan
bahasa pemrograman yang didukung, seperti JAVA atau Python.
34. Instalasi HIVE
• HIVE membutuhkan requirement yang hampir sama dengan Hadoop (membutuhkan JAVA dan
konfigurasinya)
• Kemudian kita perlu meng-install database server seperti: Apache Derby, MySQL, PostgreSQL, dsb.
Database ini dibutuhkan HIVE untuk tempat menyimpan meta data (metastores)
• Kemudian download dan extract HIVE
• Lalu lakukan konfigurasi-konfigurasi yang diperlukan untuk menghubung HIVE dengan Hadoop
dan database metastore
• Jalankan service HIVE
• Jalankan client HIVE, baik menggunakan command line (CLI) maupun dengan menggunakan tools
berbasis web agar perintah HIVE bisa dijalankan lewat browser (dibutuhkan instalasi aplikasi
tambahan, seperti Apache Ambari)
• Salah satu sumber untuk melihat contoh langkah-langkah instalasi HIVE bisa dilihat pada link
berikut ini https://www.guru99.com/installation-configuration-hive-mysql.html
35. HIVE CLI
• Jalankan aplikasi HIVE CLI dengan cara mengetik: 'hive' atau
'./bin/hive'
• Lalu ketikkan perintah-perintah HIVE disitu
Contoh:
37. HIVE SQL (HIVEQL)
• Berikut ini beberapa contoh membuat tabel baru dan
mengolah data menggunakan perintah HIVE SQL
38. HIVE SQL (HIVEQL)
• Pada contoh diatas, dibuat sebuah tabel baru dengan nama employess_guru
Create table employees_guru(Id INT, Name STRING, Age
INT, Address STRING, Salary FLOAT, Department STRING)
Row format delimited Fields terminated by ',';
• Lalu untuk mengisi datanya ke tabel baru tersebut, diambil file CSV (bisa dari
local file maupun file yang sudah tersimpan di HDFS). Contoh data local:
load data local inpath '/home/hduser/Employees.txt'
into TABLE employees_guru;
39. HIVE SQL (HIVEQL)
• HIVE juga bisa membaca file yang SEMISTRUCTURED misalnya dalam
format XML. Contoh, buat tabel baru 'xmlsample':
• File XML itu kemudian kita parsing (potong-potong) dan tampilkan,
misalnya seperti ini:
40. Quiz HIVE
1. Mengapa dibutuhkan HIVE, bukan RDBMS biasa?
2. Apa kelebihan pengolahan data dengan HIVE dibandingkan RDBMS
biasa?
3. Kalau sudah ada Hadoop (HDFS/MR) mengapa masih
membutuhkan HIVE?
4. Dari sekian banyak contoh data yang bisa diproses menggunakan
Hadoop, data seperti apa yang lebih cocok diolah menggunakan
HIVE?
41. Petunjuk Jawaban
1. Secara umum memang terlihat pengolahan data di HIVE mirip/sama dengan
RDBMS, sama-sama menggunakan perintah SQL. Namun HIVE memproses
data secara terdistribusi dan eksekusinya bisa dilakukan secara paralel,
sehingga bisa mengolah data yang sangat besar. Hal ini tidak bisa dilakukan
di RDBMS biasa.
2. Sudah dijelaskan sekilas diatas.
3. HIVE adalah abstraksi dari dari Hadoop. Jika menggunakan Hadoop saja,
eksekusi perintah harus menggunakan aplikasi yang kita bikin dengan
bahasa pemrograman yang didukung seperti JAVA, Python, nodejs, dsb.
4. Lebih cocok untuk jenis data STRUCTURED maupun SEMI-STRUCTURED.
Walaupun secara umum bisa juga dipakai untuk jenis data UNSTRUCTURED,
tetapi dibutuhkan konversi agar dapat dikenali sebagai kolom dan baris
42. Batch vs Stream
Batch:
• Data yang ada akan disimpan
terlebih dahulu,
• untuk dilakukan analisa di
kemudian waktu yang lain.
• Ukuran file-nya bisa
diketahui/prediksi sebelumnya.
• Stream:
• Aplikasi stream menunggu data
yang masuk,
• untuk langsung di proses pada
saat itu juga, tanpa disimpan
disimpan. Hasilnya bisa
dilakukan penyimpanan ke HDFS,
atau ke Database, atau tidak
disimpan (hanya di
visualisasikan)
• Ukuran datanya tidak bisa
diketahui, dan tidak berujung.
44. Merancang Data Lake
• Sejauh ini kita sudah mengenal Hadoop, ekosistemnya dan kelebihan-
kelebihan utamanya.
• Dimana letak Hadoop dalam pipeline?
• Contoh:
48. Merancang Data Lake
Data Warehouse:
• Tipe datanya structured
• Row & Collumns
• Tujuan untuk Business
Intelligence
Data Lake:
• All (structured, unstructured,
semistructured)
• Files (CSV, XML, JSON, TXT, MP3,
jpg, etc)
• Big Data Analytics (Machine
Learning/Deep Learning)
49. Merancang Data Lake
1. Identifikasi jenis data yang mau kita simpan dan sumber datanya.
2. Bagaimana kita mau memproses datanya?
1. Data yang akan diproses itu akan dilakukan secara berkala (bulanan,
semester, tahunan, 3 bulanan, dsb)
2. Atau, mau diproses secara langsung saat itu juga (near realtime)
3. Jika dilakukan secara berkala, maka Hadoop bisa ditempatkan di
depan (data ingestion),
4. sebaliknya kalau butuh pemrosesan data secara aktif terus menerus,
maka Hadoop lebih tepat ditempatkan di belakang (lebih sebagai
penyimpanan akhir)
51. Cotoh Batch Proc. Pada Hadoop
Hadoop
Log File, Excel, Word, CSV,
etc
Analisa menggunakan
HIVE, MR, atau lainnya
52. Cotoh Stream Proc. Pada Hadoop
Hadoop
Log File, Excel, Word, CSV,
etc
Spark
(stream processing)
Analisa
lanjutan
Stream app
Python
53. Analytics Tools & Visualization
Selain ekosistem utama dari Hadoop, ada beberapa tools yang bisa
dipakai untuk analisis dan visualisasi big data, antara lain:
• Kibana (free open source)
• Knime (free open source)
• Tableau (ada versi trial)
• Pentaho
• Qlik (ada versi trial)
• Grafana (Free open source)
• dsb