Pertanyaan umum mengenai penggunaan Trino di EMR.
Trino vs. Presto
Trino, sebelumnya dikenal sebagai PrestoSQL, merupakan proyek open-source dari Starburst—perusahaan yang didirikan oleh pencipta asli Presto setelah mereka meninggalkan Facebook. Proyek ini secara resmi berganti nama menjadi Trino pada tahun 2021. Facebook terus memelihara fork-nya sendiri, yang dikenal sebagai PrestoDB. Meskipun kedua proyek tersebut telah menyimpang, sintaksis dan penggunaannya tetap serupa.
Di EMR 3.44.0 dan EMR 5.10.0 serta versi setelahnya, layanan ini secara resmi bernama Trino. Pada versi sebelumnya, Konsol menampilkan Presto, tetapi mesin yang mendasarinya adalah Trino.
Versi Trino
Untuk informasi mengenai perubahan pada setiap versi Trino, lihat catatan rilis Trino resmi. Versi yang lebih baru mencakup optimasi performa, sehingga kami merekomendasikan Anda memilih versi terbaru yang tersedia.
Penerapan dan ketersediaan tinggi Trino
Trino menggunakan arsitektur standar coordinator-worker. Coordinator diterapkan pada node master-1-1, sedangkan worker diterapkan pada semua node core atau task.
Trino saat ini tidak mendukung ketersediaan tinggi. Pada kluster dengan ketersediaan tinggi, coordinator Trino hanya diterapkan pada node master-1-1. Jika Anda tidak perlu menerapkan komponen Hadoop secara bersamaan, pilih hanya layanan Trino saat membuat kluster.
Jika Anda tidak perlu menerapkan Hadoop secara bersamaan, jangan aktifkan ketersediaan tinggi untuk menghindari biaya yang tidak perlu.
Trino, DLF, dan konektor kustom
Untuk kluster data lake pada versi EMR sebelum 3.45.0 dan 5.11.0, jika Anda memilih layanan Hive dan memilih DLF Unified Metadata saat membuat kluster, konektor seperti Hive, Iceberg, Hudi, dan Delta Lake akan terhubung langsung ke Data Lake Formation (DLF). Jika kluster tidak mencakup layanan Hive, lihat Konfigurasikan pusat penyimpanan metadata untuk data di data lake untuk mengonfigurasi koneksi secara manual. Untuk kluster data lake pada EMR 3.45.0 dan versi setelahnya serta 5.11.0 dan versi setelahnya, Anda dapat memilih DLF Unified Metadata saat membuat kluster Trino.
Setelah DLF diaktifkan, konektor default seperti konektor Hive tidak dapat lagi mengakses metastore. Jika Anda perlu mengonfigurasi beberapa Hive metastore, beberapa instans MySQL, atau menggunakan layanan yang tidak tersedia di konektor default, Anda dapat menggunakan lima konektor placeholder (connector1 hingga connector5) yang disediakan oleh EMR Trino. Atur properti connector.name untuk salah satu placeholder tersebut menjadi hive atau jenis konektor lain yang Anda butuhkan, lalu tambahkan properti konfigurasi lain sesuai dokumentasi konektor spesifik yang mengarah ke alamat layanan yang diinginkan.
Akses Trino ke OSS dan OSS-HDFS
EMR menyertakan JindoSDK secara default dengan akses tanpa password. Anda dapat mengakses OSS secara langsung atau menjalankan kueri pada tabel Hive yang disimpan di OSS.
EMR Trino mendukung OSS-HDFS.
Mengakses UI web Trino
Jika kluster Anda memiliki Knox yang terpasang, Anda dapat menggunakan URL Knox untuk mengakses UI web Trino. Untuk informasi selengkapnya, lihat Knox.
Jika kluster Anda tidak mencakup Knox, Anda dapat mengakses UI melalui URL publik: {Alamat IP publik:Port HTTP}. Port HTTP dapat ditemukan dalam konfigurasi http-server.http.port, yang secara default bernilai 9090. Jika Anda tidak dapat mengakses UI, pastikan port 9090 terbuka di security group Anda.
Jika kluster Anda berjalan dalam mode keamanan tinggi, port HTTP default tidak tersedia. Jika Anda memiliki izin jaringan yang diperlukan, Anda dapat mengakses UI web dengan menambahkan konfigurasi berikut ke file config.properties grup node master, lalu mengakses UI menggunakan metode standar.
web-ui.authentication.type=fixed
web-ui.user=trino
UI web Trino menampilkan kueri yang baru saja dieksekusi, termasuk Pernyataan SQL dan rencana eksekusi. Secara default, Trino menyimpan hingga 100 kueri terbaru. Kueri yang selesai cepat ditimpa oleh entri baru, sedangkan kueri yang gagal dipertahankan lebih lama. Anda dapat menyesuaikan konfigurasi query.max-history (default: 100) untuk meningkatkan jumlah kueri yang disimpan.
Menambahkan Trino ke kluster yang sudah ada
-
Untuk kluster data lake, Anda dapat langsung menambahkan layanan Trino jika kluster memiliki sumber daya yang cukup.
-
Untuk kluster Hadoop, periksa apakah ada layanan yang telah ditingkatkan secara manual. Jika ya, Trino mungkin gagal dimulai setelah instalasi. Dalam kasus ini, ikuti langkah-langkah berikut:
-
Jika JindoSDK ditingkatkan secara terpisah, terutama setelah pembaruan versi utama, Anda harus menjalankan ulang skrip upgrade Presto atau Trino yang relevan dan menyalin secara manual JindoSDK yang telah ditingkatkan ke direktori konektor yang sesuai di jalur instalasi Trino.
-
Untuk EMR-3.39.1, periksa log layanan. Biasanya dilaporkan bahwa kelas terkait Delta tidak ditemukan. Dalam kasus ini, pada setiap node, salin secara manual file
/opt/apps/ecm/service/deltalake/0.6.1-3.3/package/deltalake-0.6.1-3.3/presto-delta/delta-standalone-assembly-0.2.0.jarke path/usr/lib/presto-current/plugin/delta.
-
Perubahan konfigurasi tidak berlaku
File konfigurasi Trino berada di /etc/emr/trino-conf. Periksa apakah file konfigurasi pada node tersebut mencerminkan dengan benar perubahan yang Anda buat di Konsol dan berisi penambahan atau modifikasi sebelumnya:
-
Jika file konfigurasi tidak berisi konten baru atau yang dimodifikasi: Verifikasi bahwa Anda telah menyimpan konfigurasi, menerapkan perubahan, dan cakupan modifikasi sudah benar.
PentingJika Anda memodifikasi properti konfigurasi untuk grup node tertentu atau satu node, konfigurasi kluster default untuk properti tersebut tidak lagi berlaku.
-
Jika file konfigurasi berisi konten baru atau yang dimodifikasi: Verifikasi bahwa semua node Trino telah direstart. Trino hanya menerapkan konfigurasi baru setelah restart.
Kueri macet atau kegagalan node pekerja
Jika Anda melihat pesan error seperti Could not communicate with the remote task. The node may have crashed or be under too much load. This is probably a transient issue, so please retry your query in a few minutes. atau No handle resolver for connector: hive ... Unrecognized token 'io': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false'), hal ini menunjukkan bahwa node pekerja kelebihan beban atau telah melakukan restart otomatis. Sistem mungkin telah menghentikan proses pada node pekerja tersebut. Sesuaikan konfigurasi berdasarkan workload, terutama pengaturan terkait memori, atau batasi jumlah permintaan konkuren.
Melihat log Trino
File log Trino disimpan di /mnt/disk1/log/trino/var/log/ secara default. Output dan jejak stack exception dapat ditemukan di file server.log.
Untuk melihat detail error pada kueri tertentu, tambahkan flag --debug saat Anda memulai client. Ini akan mencetak jejak stack exception.
Coordinator dan worker Trino berkomunikasi melalui HTTP. Jika terjadi exception HTTP pada node coordinator, error tersebut mungkin berasal dari node worker. Jika tidak ada informasi error lain yang jelas, periksa setiap node worker secara individual.
Kegagalan kueri atau hasil kosong
Lakukan pemecahan masalah dengan mengikuti langkah-langkah berikut:
-
Akses atau jalankan kueri pada data menggunakan engine lain, seperti Hive atau Spark. Jika keduanya juga gagal, periksa apakah sumber data dapat dijangkau dan datanya utuh.
-
Jika hanya Trino yang tidak dapat mengakses atau menjalankan kueri, periksa apakah metadata yang dikonfigurasi sudah benar.
-
Jika metadata valid, tetapi kueri pada tabel yang berisi data menghasilkan hasil kosong, periksa apakah Anda memiliki izin akses data yang diperlukan.
-
Jika proxyuser diaktifkan untuk HDFS tempat data disimpan, Anda juga harus mengaktifkan properti hive.hdfs.impersonation.enabled di Trino.
-
Jika Ranger diaktifkan, verifikasi bahwa izin Ranger dikonfigurasi dengan benar.
-
Jika kluster telah diskalakan keluar, periksa apakah grup node atau node baru memiliki izin yang diperlukan untuk mengakses file yang sesuai.
-
Urutan kolom salah untuk kueri Hudi dan Delta Lake
Periksa apakah properti hive.parquet.use-columns-names diatur ke true dalam file hive.properties untuk Trino.
Trino gagal restart setelah perubahan konfigurasi
Jika file Server.log berisi error Error: Configuration property 'xxxxx' was not used, artinya konfigurasi berada di lokasi yang salah atau konfigurasi prasyarat tidak tersedia. Trino melakukan validasi ketat terhadap properti konfigurasinya. Jika suatu properti tidak ada, salah eja, atau ditempatkan di file yang salah, layanan akan gagal dimulai. Verifikasi bahwa konfigurasi baru sudah benar, atau kembalikan perubahan tersebut.
Cannot query xxx table error dengan konektor Hive
Trino menyediakan konektor khusus untuk Iceberg, Hudi, dan Delta Lake. Gunakan konektor khusus untuk masing-masing format tabel. Jika Anda harus menggunakan konektor Hive, gunakan fitur Table Redirection untuk meneruskan kueri ke konektor khusus yang sesuai.
Sebagai contoh, untuk mengonfigurasi konektor Hive agar mengarahkan kueri untuk tabel Iceberg, Delta Lake, dan Hudi, atur parameter berikut:
hive.iceberg-catalog-name=iceberg
hive.delta-lake-catalog-name=delta-lake
hive.hudi-catalog-name=hudi