TERDISTRIBUSI
By.CopyPaste
copyPaste
TUGAS
Riview Materi
(Komputasi Pararel Dan Terdistribusi)
DOSEN PENGAMPUH
Wawan Firgiawan, S. T., M. Kom
Di susun :
Nama : Juhari
Nim : D0221322
Kelas : E Informatika
1
Pemrosesan Paralel dan Komputasi Paralel
1. Komputasi Paralel
Komputasi paralel adalah salah satu teknik melakukan komputasi secara bersamaan
dengan memanfaatkan beberapa komputer independen secara bersamaan. Ini
umumnya diperlukan saat kapasitas yang diperlukan sangat besar, baik karena harus
mengolah data dalam jumlah besar (di industri keuangan, bioinformatika, dll)
ataupun karena tuntutan proses komputasi yang banyak. Kasus kedua umum ditemui
di kalkulasi numerik untuk menyelesaikan persamaan matematis di bidang fisika
(fisika komputasi), kimia (kimia komputasi) dll.
• Algoritma
• Bahasa pemrograman
• Compiler
3
a . Arsitektur Komputer Paralel
Berdasarkan jumlah dan prinsip kerja prosesor pada komputer paralel, A.J.
Van der Steen dan J. Donggara menyebutkan terdapat empat arsitektur utama
komputer paralel menurut Flynn (1972) yaitu:
1) SISD (Single Instruction – Single Data). Komputer ini memiliki hanya satu
prosesor dan satu instruksi yang dieksekusi secara serial. Komputer ini adalah tipe
komputer konvensional. Menurut mereka tipe komputer ini tidak ada dalam praktik
komputer paralel karena bahkan mainframe pun tidak lagi menggunakan satu
prosesor. Klasifikasi ini sekedar untuk melengkapi definisi komputer paralel.
Skema SISD ditunjukkan pada Gambar 1.2.
2) SIMD (Single Instruction – Multiple Data). Komputer ini memiliki lebih dari satu
prosesor, tetapi hanya mengeksekusi satu instruksi secara paralel pada data yang
berbeda pada level lock-step. Komputer vektor adalah salah satu komputer paralel
yang menggunakan arsitektur ini. Skema SIMD ditunjukkan pada Gambar 2.3.
4
3) MISD (Multiple Instructions – Single Data). Teorinya komputer ini memiliki satu
prosesor dan mengeksekusi beberapa instruksi secara paralel tetapi praktiknya
tidak ada komputer yang dibangun dengan arsitektur ini karena sistemnya tidak
mudah dipahami. Skema MISD ditunjukkan pada Gambar 1.4.
4) MIMD (Multiple Instructions – Multiple Data). Komputer ini memiliki lebih dari
satu prosesor dan mengeksekusi lebih dari satu instruksi secara paralel. Tipe
komputer ini yang paling banyak digunakan untuk membangun komputer paralel,
bahkan banyak supercomputer yang menerapkan arsitektur ini. Skema MIMD
ditunjukkan pada Gambar 1.5.
5
Sistem komputer paralel dibedakan dari cara kerja memorinya menjadi shared
memory dan distributed memory. Shared memory berarti memori tunggal diakses
oleh satu atau lebih prosesor untuk menjalankan instruksi sedangkan distributed
memory berarti setiap prosesor memiliki memori sendiri untuk menjalankan
instruksi. Menurut A.J. Van der Steen dan J. Donggara baik sistem shared memory
maupun distributed memory merupakan SIMD atau MIMD.
Pada penelitian ini arsitektur yang digunakan adalah cluster PC multicore yang
merupakan penerapan arsitektur MIMD dengan distributed shared memory. Skema
arsitektur ini ditunjukkan pada Gambar 1.7. Adapun komponen-komponen utama
dari arsitektur komputer paralel cluster PC antara lain :
6
5. Programming Environment dan Software Tools. Software yang
digunakan untuk pemrograman paralel termasuk software
pendukungnya.
6. User Interface. Software yang menjadi perantara hardware dengan
user.
7. Aplikasi. Software berisi program permasalahan yang akan
diselesaikan.
8. Jaringan. Penghubung satu PC (prosesor) dengan PC yang lain
sehingga memungkinkan pemanfaatan sumberdaya secara simultan.
2. Komputer Multicore
Pada saat ini PC secara umum telah menggunakan paralelisme thread-level
dengan berkembangnya teknologi multicore. Teknologi ini menempatkan lebih dari
satu general purpose processor pada satu keping mikroprosesor sehingga
memungkinkan lebih dari satu thread bekerja secara simultan. Prosesor multicore
umumnya menggunakan prinsip shared-memory, dimana masing-masing core
processor terhubung dengan sebuah memori internal (cache memory) yang menjadi
perantara baginya dengan memori eksternal seperti RAM. Hal ini ditunjukkan
dengan Gambar 1.8. Namun demikian adapula prosesor multicore yang
menggunakan prinsip message passing untuk berkomunikasi antar core.
7
Paralelisme fisik pada prosesor multicore sebenarnya tidak serta merta
mendorong peningkatan performansi komputer. Jumlah core yang banyak tidak
akan berpengaruh bila tidak didukung dengan algoritma dan aplikasinya. Program
paralel dengan berbagai level paralelisme dapat diterapkan untuk mengoptimalkan
kinerja prosesor, mulai dari instruction-level parallelism (ILP) hingga thread-level
parallelism (TLP).
3. Algoritma Paralel
Komputasi paralel digunakan untuk menyelesaikan permasalahan komputasi
yang besar atau komplek. Program paralel dibuat khusus atau dimodifikasi dari
8
program serial. Algoritma paralel digunakan untuk menggantikan algoritma serial
menyesuaikan arsitektur komputer yang digunakan. Berdasarkan klasifikasi
arsitektur komputer paralel di atas komputer paralel shared memory dan distributed
memory tentu saja menggunakan algortima paralel yang berbeda.
Pembagian beban pekerjaan adalah hal utama dalam algoritma paralel, karena
tujuan utama komputasi paralel adalah mempercepat proses dengan mengerjakan
permasalahan menggunakan sumberdaya yang dimiliki secara bersamaan.
Berdasarkan obyek yang dibagi, dekomposisi dibedakan menjadi dekomposisi data
(domain) dan dekomposisi fungsi.
9
b. Mapping (pemetaan beban kerja)
Mapping terkait erat dengan arsitektur dan kapasitas komputer paralel yang
digunakan. Mapping juga terkait erat dengan dekomposisi, di mana beban pekerjaan
yang dibagi-bagi akan diberikan pada proses-proses secara paralel.
c. Granularitas
4. Algortima Multithreading
10
Komputasi paralel sangat dipengaruhi oleh perkembangan teknologi komputer,
terutama prosesor. Komputer singlecore telah menggunakan teknik pemrograman
paralel untuk meningkatkan kinerjanya, sebagai contoh penggunaan hyperthreading
pada prosesor Intel. Sedangkan untuk komputer multicore ada beberapa teknik yang
diterapkan, salah satunya adalah multithreading. Bila dalam sistem operasi kita
mengenal task, process dan thread, maka multithreading adalah paralelisme thread-
level sebagaimana penerapan multitasking dan multiprocessing. Sebuah thread
adalah sebuah aliran kendali tunggal di dalam suatu program sehingga teknik
multithreading diartikan sebagai teknik yang memanfaatkan lebih dari satu aliran
kendali di dalam suatu program.
a. Static Threading
Teknik ini biasa digunakan untuk komputer dengan chip multiprocessors dan
jenis komputer shared-memory lainnya. Teknik ini memungkinkan thread berbagi
memori yang tersedia, menggunakan program counter dan mengeksekusi program
secara independen. Sistem operasi menempatkan satu thread pada prosesor dan
menukarnya dengan thread lain yang hendak menggunakan prosesor itu.
Mekanisme ini terhitung lambat, karenanya disebut dengan static. Selain itu
teknik ini tidak mudah diterapkan dan rentan kesalahan. Alasannya, pembagian
pekerjaan yang dinamis di antara thread-thread menyebabkan load balancing-nya
cukup rumit. Untuk memudahkannya programmer harus menggunakan protokol
komunikasi yang kompleks untuk menerapkan scheduler load balancing. Kondisi
ini mendorong pemunculan concurrency platforms yang menyediakan layer untuk
mengkoordinasi, menjadwalkan, dan mengelola sumberdaya komputasi paralel.
Sebagian platform dibangun sebagai runtime libraries atau sebuah bahasa
pemrograman paralel lengkap dengan compiler dan pendukung runtime-nya.
11
b. Dynamic Multithreading
Teknik ini merupakan pengembangan dari teknik sebelumnya yang bertujuan
untuk kemudahan karena dengannya programmer tidak harus pusing dengan
protokol komunikasi, load balancing, dan kerumitan lain yang ada pada static
threading. Concurrency platform ini menyediakan scheduler yang melakukan load
balacing secara otomatis. Walaupun platformnya masih dalam pengembangan
namun secara umum mendukung dua fitur : nested parallelism dan parallel loops.
4. Aplikasi Pengujian
Membahas tentang aplikasi yang digunakan dalam pengujian algortima
paralel yaitu perkalian matrik dan pengurutan data.
a. Perkalian Matriks
Perkalian matriks adalah sebuah operasi dasar pada berbagai aplikasi aljabar
linier. Perkalian matrik digunakan di banyak penelitian yang berhubungan dengan
pengujian kinerja komputasi paralel. Ukuran-ukuran matriks yang digunakan
merupakan range sampel pengujian algoritma paralel.
Sedangkan untuk aplikasi sorting jumlah operasi yang harus diproses adalah
berjumlah n log n (dengan asumsi menggunakan algoritma quick sort).
13
d. Kontribusi Parallel Processing
Parallel Processing umumnya diperlukan saat kapasitas yang diperlukan
sangat besar, baik karena harus mengolah data dalam jumlah besar (di industri
keuangan, bioinformatika, dll) ataupun karena tuntutan proses komputasi yang
banyak. Kasus kedua umum ditemui di kalkulasi numerik untuk menyelesaikan
persamaan matematis di bidang fisika (fisika komputasi), kimia (kimia komputasi)
dan lain lain.
e. Bioinformatika
Bioinformatika adalah ilmu yang mempelajari penerapan teknik
komputasional untuk mengelola dan menganalisis informasi biologis. Bidang ini
mencakup penerapan metode-metode matematika, statistika, dan informatika untuk
memecahkan masalah-masalah biologis, terutama dengan menggunakan sekuens
DNA dan asam amino serta informasi yang berkaitan dengannya. Contoh topik
utama bidang ini meliputi basis data untuk mengelola informasi biologis,
penyejajaran sekuens (sequence alignment), prediksi struktur untuk meramalkan
bentuk struktur protein maupun struktur sekunderRNA, analisis filogenetik, dan
analisis ekspresi gen.
14
komputer muncul sebagai sebuah komputer tunggal yang tangguh dan menyediakan
sumber daya berskala besar untuk menghadapi tantangan yang kompleks.
Agar suatu masalah atau aktivitas tersebar ke beberapa sumber daya komputer,
komputasi terdistribusi terlebih dahulu membaginya menjadi bagian-bagian yang
lebih kecil dan lebih mudah dikelola. Kemudian, setiap node menyelesaikan bagian
tugas tertentu sementara bagian tersebut dikerjakan secara bersamaan. Setelah setiap
komponen selesai, komponen tersebut dikirim kembali ke server pusat atau node,
yang mencampur semuanya untuk membuat produk jadi.
Mengelola sinkronisasi dan koordinasi beberapa node merupakan salah satu kesulitan
utama dalam komputasi terdistribusi. Untuk memastikan bahwa setiap node bekerja
pada bagian pekerjaan yang tepat pada waktu yang tepat, diperlukan perencanaan dan
administrasi yang cermat. Karena tugas dan data rentan terhadap serangan atau akses
ilegal, pengendalian keamanan sistem komputasi terdistribusi sangatlah penting.
15
terbatas. Sebaliknya, server, yang mengontrol sebagian besar data dan sumber daya
lainnya, mendapatkan kueri. Anda mengirimkan pertanyaan ke klien, yang merespons
ke server atas nama Anda. Akses sumber daya dikoordinasikan dan dikelola oleh
sistem server. Menanggapi pertanyaan klien, mereka memberikan statistik atau
pembaruan status. Satu server seringkali mempunyai kapasitas untuk bereaksi
terhadap permintaan yang berasal dari beberapa komputer.
Arsitektur tiga tingkat: Dengan sistem terdistribusi tiga tingkat, mesin klien terus
menjadi lapisan pertama yang Anda temui. Ada dua kategori lagi untuk mesin server
di sisi lain. Komunikasi tingkat menengah dilakukan oleh server aplikasi. Mereka
terdiri dari operasi inti atau logika program yang dirancang untuk sistem
terdistribusi. Server basis data membentuk lapisan ketiga untuk menangani dan
menyimpan data. Mereka bertugas mengambil data dan menjaga integritas
data. Dengan menyebarkan tanggung jawab server, sistem terdistribusi tiga tingkat
mengurangi kemacetan komunikasi dan meningkatkan efektivitas komputasi
terdistribusi.
16
c. penggunaan komputasi terdistribusi
Jasa Keuangan: Sistem terdistribusi digunakan oleh perusahaan jasa keuangan untuk
menjalankan simulasi ekonomi cepat yang membantu menganalisis risiko portofolio,
memprediksi pergerakan pasar, dan mendukung pengambilan keputusan
keuangan. Mereka mungkin merancang aplikasi web yang dapat melakukan tugas-
17
tugas berikut dengan memanfaatkan sistem terdistribusi: Memberikan premi
individual yang terjangkau. Untuk mendukung transaksi keuangan dalam jumlah
besar dengan aman, gunakan database terdistribusi. Pengguna yang diautentikasi
melindungi klien dari penipuan.
Aplikasi yang berpusat pada data: Data kini mengalir dari berbagai perangkat IoT
baru serta sensor, perangkat pintar, peralatan ilmiah, dan sumber lainnya. Ledakan
data melibatkan jaringan secara signifikan. Grid digunakan untuk mengumpulkan,
menyimpan, dan menganalisis data serta mendapatkan pola dari data untuk
menciptakan pengetahuan.
Aplikasi bisnis: Ketika sumber daya yang menuntut komputasi, seperti komputer dan
jaringan penyimpanan, diperlukan, misalnya dalam berbagai aplikasi komersial,
seperti game online dan sektor hiburan, komputasi terdistribusi sangat
membantu. Sumber daya dipilih dalam sistem grid untuk bermain game tergantung
pada kebutuhan komputasi. Ini mempertimbangkan variabel seperti volume lalu lintas
dan jumlah peserta.
Transfer jaringan lambat: Data harus diangkut antar node ketika tersebar di
beberapa node. Jika koneksi jaringan antar node lamban atau padat, hal ini dapat
mengakibatkan kemacetan. Misalkan sebuah bisnis yang memproses transaksi
penjualan menggunakan sistem komputasi terdistribusi sebagai ilustrasi. Pemrosesan
transaksi tertunda atau bahkan dicegah jika koneksi jaringan antar node lambat.
Kompleksitas sistem: Peningkatan kompleksitas sistem dihasilkan dari komputasi
terdistribusi. Melacak dan mengelola semua bagian yang bergerak merupakan
tantangan ketika beberapa sistem beroperasi secara bersamaan. Kegagalan sistem dan
data yang tidak konsisten mungkin diakibatkan oleh hal ini.
Masalah dengan standardisasi: Mungkin sulit menemukan sistem terdistribusi yang
memenuhi kebutuhan unik Anda karena ada begitu banyak jenisnya. Setiap sistem
memiliki serangkaian instruksi dan proses yang unik, sehingga sulit untuk dipahami
dan digunakan.
Biaya pemeliharaan: Biaya pemeliharaan sistem komputasi terdistribusi
tinggi. Memecahkan masalah dan menyelesaikan masalah ketika masalah terjadi
menjadi lebih sulit karena sistem tersebar di beberapa tempat. Selain itu, jumlah
komponen yang lebih tinggi meningkatkan risiko kegagalan fungsi perangkat keras
dan perangkat lunak. Akibatnya, bisnis sering kali perlu mencurahkan sumber daya
tambahan untuk mendukung sistem komputasi terdistribusi mereka.
20
Risiko kegagalan komponen yang disebabkan oleh kesalahan manusia:Kesalahan
manusia selalu mungkin terjadi ketika bekerja dengan banyak bagian dan sistem. Hal
ini terjadi ketika pengguna yang tidak terbiasa dengan sistem melakukan kesalahan
yang menyebabkan komponen gagal. Misalnya, jika seorang programmer secara tidak
sengaja menghapus file penting, seluruh sistem menjadi tidak dapat
digunakan. Ilustrasi lainnya adalah jika konfigurasi jaringan telah salah dikonfigurasi
oleh administrator, sehingga melarang pengguna mengakses sistem. Kegagalan
komponen karena kesalahan manusia mungkin saja terjadi, namun ada prosedur yang
dapat dilakukan untuk mengurangi risiko tersebut. Misalnya, untuk mengurangi
kemungkinan pengguna melakukan kesalahan, pengembang dapat membuat
dokumentasi dan materi pelatihan yang menyeluruh. Anda dapat memasukkan checks
and balances ke dalam desain sistem Anda untuk membantu mencegah kesalahan
seperti penghapusan yang tidak disengaja.
Pembatasan bandwidth: Setiap node dalam sistem harus berbagi sejumlah
bandwidth tertentu agar mereka dapat berinteraksi satu sama lain. Sistem menjadi
terhambat dan kinerja mulai menurun ketika batas ini tercapai. Untuk sistem
terdistribusi skala besar, hal ini sering menjadi masalah karena volume data yang
dibutuhkan mungkin akan melebihi bandwidth. Oleh karena itu, perencanaan dan
desain yang cermat diperlukan untuk menjamin bahwa semua node sistem masih
dapat berinteraksi satu sama lain dengan sukses.
Mengembangkan hambatan: Semua node (komputer) dalam jaringan harus
memiliki konfigurasi yang sama dan dapat berinteraksi satu sama lain agar sistem
terdistribusi dapat berfungsi dengan baik. Organisasi dengan infrastruktur TI yang
lebih rumit mungkin akan mengalami kesulitan jika personel TI mereka tidak
memiliki keterampilan yang diperlukan.
Media sosial: Facebook dengan cepat menampilkan postingan kepada Anda di balik
layar dengan memanfaatkan komputasi terdistribusi. Hal ini menunjukkan bahwa
mereka telah membagi tugas mengawasi postingan menjadi bagian-bagian yang lebih
kecil dan mendistribusikannya ke beberapa komputer di seluruh dunia. Sebuah
komputer memperingatkan kantor perusahaan Facebook ketika menemukan sesuatu
21
yang menarik. Agar Anda dapat melihat postingan di umpan berita Anda, mereka
mengumpulkan semua komunikasi dari berbagai komputer di sana.
Perbankan online: Anda dengan mudah mengelola rekening Anda tanpa pergi ke
lokasi bank sebenarnya dengan menggunakan perbankan online. Namun, pernahkah
Anda bertanya-tanya bagaimana komputer atau ponsel, misalnya, dapat berinteraksi
dengan komputer bank? Komputasi terdistribusi berisi solusinya. Saat Anda
menggunakan perbankan online, perangkat Anda dapat berkomunikasi dengan
komputer bank menggunakan jaringan semacam ini untuk mengirim dan menerima
data. Hal ini memungkinkan Anda untuk memeriksa saldo rekening Anda,
mentransfer uang, dan membayar tagihan, semuanya dari kenyamanan rumah
Anda. Oleh karena itu, perlu diingat bahwa lain kali Anda menggunakan rekening
perbankan online, Anda mendapatkan manfaat dari salah satu dari banyak aplikasi
komputasi terdistribusi.
Membandingkan harga: Saat berbelanja online, harga barang dari banyak pengecer
digabungkan menggunakan metode komputasi terdistribusi. Tawaran terbaik bagi
klien ditentukan dengan membandingkan biaya barang yang sebanding atau
identik. Pelanggan menemukan diskon dan kupon menggunakan metode
ini. Perbandingan ini dipercepat dengan komputasi terdistribusi karena menggunakan
banyak komputer, bukan hanya satu komputer. Hal ini memungkinkan pelanggan
untuk membandingkan biaya dan mengidentifikasi penghematan dengan segera.
Transportasi bersama: Untuk menghubungkan pengemudi dan penumpang,
perusahaan seperti Uber dan Lyft benar-benar menerapkan sistem terdistribusi. Sistem
ini menggunakan ribuan komputer independen, atau "node", untuk menangani
permintaan. Saat Anda meminta tumpangan, komputer Anda mengirimkan sinyal ke
node terdekat, yang kemudian meneruskannya ke node terdekat berikutnya hingga
mencapai pengemudi. Pendekatan ini sangat efektif dan memungkinkan perusahaan
ride-sharing menyediakan layanan mereka di banyak lokasi di seluruh dunia.
Platform streaming: Komputasi terdistribusi mendukung infrastruktur streaming
video yang digunakan oleh Netflix, Amazon Prime Video, HBO GO, dan Hulu. Anda
mungkin terkejut mengetahui bahwa layanan streaming sering kali memanfaatkan
komputasi terdistribusi untuk menawarkan pengalaman yang terukur dan dapat
diandalkan. Layanan streaming menawarkan tingkat skalabilitas dan ketergantungan
yang jauh lebih tinggi dibandingkan dengan satu komputer dengan memanfaatkan
beberapa mesin yang berlokasi di seluruh dunia.
22
Alat pencarian: Pertimbangkan kapan terakhir kali Anda menggunakan mesin
pencari untuk mencari sesuatu secara online. Jaringan komputer global yang luas
menerima permintaan Anda saat Anda mengetikkan kueri dan menekan tombol
"enter". Mesin ini, terkadang disebut sebagai server, memproses permintaan Anda dan
mengembalikan hasilnya. Mesin pencari sangat bergantung pada komputasi
terdistribusi untuk memproses sejumlah besar data yang mereka perlukan untuk
mengindeks dan memberikan hasil pencarian. Mesin pencari dapat mengindeks dan
memberikan hasil kepada pengguna dengan cepat dengan membagi operasi pencarian
di beberapa komputer.
Pertukaran file: Komputer Anda melakukan tugas mengunduh file saat Anda
mengunduh sesuatu dari internet. Meskipun demikian, Anda secara bersamaan
membagikan file tersebut dengan pengguna lain yang mengunduhnya. Oleh karena
itu, Anda semua berbagi pekerjaan dalam arti tertentu.
Email: Komputer Anda mengirimkan email ke server setiap kali Anda
mengirimnya. Meskipun demikian, komputer Anda juga secara bersamaan menerima
email dari pengguna lain. Anda membagi tugas sekali lagi.
g. Kerangka kerja dan alat komputasi terdistribusi apa yang paling populer
Sekarang mari kita bahas beberapa kerangka kerja paling populer untuk komputasi
terdistribusi. Ini hanya segelintir dari sekian banyak kerangka kerja komputasi
terdistribusi yang tersedia.
Hadoop: Kerangka kerja komputasi terdistribusi yang paling terkenal tidak diragukan
lagi adalah Hadoop. Ini adalah proyek sumber terbuka yang dibangun berdasarkan
metodologi pemrograman MapReduce dan dibuat oleh Apache Software
Foundation. Data dalam jumlah besar sering kali diproses secara batch menggunakan
Hadoop.
23
Flink: Flink adalah platform sumber terbuka untuk komputasi jaringan yang dibuat
terutama untuk pemrosesan aliran. Karena kapasitasnya untuk menangani data batch
dan streaming serta pemrosesan data real-time, ini menjadi semakin populer.
Storm: Storm adalah sistem terdistribusi untuk pemrosesan real-time. Ini cocok untuk
kasus penggunaan pemrosesan waktu nyata termasuk analitik, pembelajaran mesin
online, dasbor waktu nyata, dan banyak lagi karena mudah digunakan, dapat
digunakan dengan bahasa pemrograman apa pun, dan lugas.
24