Presto (juga dikenal sebagai PrestoDB) adalah mesin kueri SQL terdistribusi yang dirancang untuk analitik interaktif berskala besar. Topik ini mencakup fitur utamanya, arsitektur, model data, serta manfaat menjalankannya di E-MapReduce (EMR).
Catatan penting
E-MapReduce (EMR) versi 3.45.0 dan 5.11.0 atau yang lebih baru mendukung Presto, yang biasanya memiliki nomor versi 0.2XX. Pada versi EMR sebelumnya, komponen Presto dengan nomor versi 3XX menggunakan kernel PrestoSQL atau Trino. Untuk informasi selengkapnya, lihat Trino.
Fitur utama
Presto ditulis dalam Java dan dirancang untuk performa tinggi serta skalabilitas horizontal. Presto menyediakan:
Dukungan penuh ANSI SQL.
Konektivitas ke berbagai sumber data, termasuk Hive, Hudi, Iceberg, Delta Lake, MySQL, dan PostgreSQL.
-
Dukungan untuk tipe data lanjutan:
Array dan map
Data JSON
Data Geographic Information System (GIS)
Data warna
-
Ekstensibilitas melalui berbagai mekanisme:
Konektor data yang dapat dipasang (pluggable data connectors)
Tipe data kustom
Fungsi SQL kustom
Pemrosesan pipeline: mengembalikan hasil kueri ke klien secara inkremental saat data diproses, sehingga mempercepat waktu hingga hasil pertama muncul.
-
Observabilitas bawaan:
UI web untuk memvisualisasikan eksekusi kueri secara real time.
Dukungan protokol JMX untuk pengumpulan metrik.
Arsitektur
Gambar berikut menunjukkan arsitektur sistem Presto.
Presto menggunakan arsitektur coordinator/worker. Satu node coordinator mengelola perencanaan kueri dan status kluster; beberapa node worker menangani eksekusi kueri terdistribusi.
Coordinator bertanggung jawab untuk:
Menerima dan menguraikan kueri, menghasilkan rencana eksekusi, serta mendistribusikan fragmen rencana ke node worker.
Memantau kesehatan node worker. Setiap worker mempertahankan koneksi heartbeat dengan coordinator untuk melaporkan statusnya.
Memelihara metadata metastore.
Node worker mengeksekusi tugas kueri terdistribusi. Mereka menggunakan konektor untuk membaca dan memproses data dari sistem penyimpanan eksternal, lalu mengembalikan hasilnya ke coordinator.
Saat ini, Presto belum mendukung arsitektur high availability (HA). Di kluster EMR, coordinator berjalan di node master-1-1. Worker berjalan di semua node Core dan Task.
Kasus penggunaan
Presto dioptimalkan untuk beban kerja analitik pada set data besar. Presto cocok digunakan untuk:
Extract, transform, and load (ETL)
Kueri ad hoc
Analisis skala besar terhadap data terstruktur atau semi-terstruktur
Agregasi data multidimensi dan pembuatan laporan
Presto adalah mesin gudang data. Dukungan transaksinya terbatas, sehingga tidak cocok untuk beban kerja online transactional processing (OLTP).
Manfaat Presto di EMR
Dibandingkan dengan Presto open source yang dikelola sendiri, Presto di EMR menyediakan:
Pengaturan cepat: siapkan kluster Presto dengan ratusan node dalam hitungan menit.
Skalabilitas elastis dengan konfigurasi minimal.
Integrasi native dengan tumpukan perangkat lunak EMR, termasuk Data Lake Formation (DLF), Object Storage Service (OSS), dan OSS-HDFS.
Operasi yang sepenuhnya dikelola: EMR menangani penyediaan kluster dan O&M sehingga Anda dapat fokus pada kueri.
Konsep
Model data
Presto mengorganisasi data dalam hierarki tiga lapis: catalog, schema, dan table.
Catalog: berisi satu atau beberapa schema dan dipetakan ke sumber data eksternal yang dapat diakses oleh konektor. Satu kueri dapat mencakup beberapa catalog.
Schema: setara dengan instansiasi basis data; berisi satu atau beberapa tabel.
Table: tabel relasional standar dalam suatu schema.
Konektor
Konektor merupakan lapisan integrasi antara Presto dan sumber data eksternal. Presto menyertakan konektor bawaan untuk sistem umum dan menyediakan SPI standar yang dapat Anda implementasikan untuk menghubungkan sumber data kustom.
Umumnya, setiap catalog dikaitkan dengan jenis konektor tertentu, yang didefinisikan dalam file properti catalog tersebut.
Informasi lebih lanjut
Untuk melihat dokumentasi open source Presto sesuai versi Anda, ganti XXX pada URL https://prestodb.io/docs/XXX/ dengan nomor versi komponen Presto Anda, lalu buka URL tersebut di browser.
Sebagai contoh, jika versi Presto Anda adalah 0.279, dokumentasinya tersedia di https://prestodb.io/docs/0.279/.