Topik ini menjawab beberapa pertanyaan umum tentang Trino.
Apa mode penyebaran Trino pada EMR? Apakah Trino mendukung mode HA?
Bagaimana cara Trino mengakses OSS? Apakah layanan OSS-HDFS didukung oleh Trino?
Bagaimana cara mengakses web UI Trino? Apa itu web UI Trino?
Mengapa saya tidak dapat menjalankan query data? Mengapa query gagal?
Mengapa saya tidak dapat memulai ulang Trino setelah menambahkan item konfigurasi?
Apa perbedaan dan hubungan antara Trino dan Presto?
Trino, sebelumnya dikenal sebagai PrestoSQL, adalah proyek sumber terbuka dari Starburst. Starburst didirikan setelah pendiri asli proyek Presto meninggalkan Facebook. Pada tahun 2021, PrestoSQL berganti merek menjadi Trino. Presto masih dipelihara oleh Facebook dan biasanya disebut sebagai PrestoDB. Pembagian PrestoDB dan PrestoSQL mengarah pada arah pengembangan yang berbeda. Namun, sintaks dasar dan penggunaan kedua layanan ini serupa.
Di E-MapReduce (EMR) V3.44.0 dan V5.10.0, PrestoSQL diubah namanya menjadi Trino. Di versi EMR sebelumnya, PrestoSQL masih ditampilkan di konsol, tetapi sebenarnya Trino yang digunakan.
Apa perbedaan di antara versi-versi Trino?
Untuk informasi lebih lanjut tentang perubahan dalam setiap versi Trino, lihat Catatan Rilis Trino. Kinerja Trino dioptimalkan seiring dengan pembaruan versi. Oleh karena itu, kami sarankan Anda memilih versi yang lebih baru.
Apa mode penyebaran Trino pada EMR? Apakah Trino mendukung mode HA?
Trino memiliki arsitektur master-slave standar. Node koordinator ditempatkan pada node master-1-1, dan node pekerja ditempatkan pada node inti atau tugas.
Trino tidak mendukung ketersediaan tinggi. Dalam kluster ketersediaan tinggi, Trino hanya menyebarkan node koordinator pada node master-1-1. Jika Anda tidak memerlukan penyebaran hybrid dengan Hadoop, pilih hanya Trino saat membuat kluster.
Jika Anda tidak memerlukan penyebaran hybrid dengan Hadoop, jangan aktifkan High Service Availability. Ini membantu mencegah pemborosan sumber daya.
Bagaimana cara Trino terhubung ke DLF? Dapatkah konektor mengakses metastore Hive setelah DLF diaktifkan untuk kluster Anda? Apa yang harus saya lakukan jika konektor yang disediakan oleh EMR tidak mencukupi?
Jika Anda memilih layanan Hive dan memilih Metadata DLF Unified untuk Metadata saat membuat kluster DataLake versi minor yang lebih awal dari EMR V3.45.0 atau V5.11.0, Anda dapat menggunakan konektor seperti Hive, Iceberg, Hudi, atau Delta Lake untuk terhubung ke Data Lake Formation (DLF). Jika Anda tidak memilih layanan Hive untuk kluster, Anda dapat menyelesaikan konfigurasi berdasarkan kebutuhan bisnis Anda. Untuk informasi lebih lanjut, lihat Konfigurasikan pusat penyimpanan metadata untuk data di danau data. Untuk kluster DataLake versi V3.45.0 atau versi minor selanjutnya dan versi V5.11.0 atau versi minor selanjutnya, Anda dapat memilih Metadata DLF Unified untuk Metadata saat membuat kluster Trino.
Jika Anda mengaktifkan DLF untuk kluster, konektor default seperti konektor Hive tidak dapat mengakses metastore Hive. Jika Anda ingin mengonfigurasi beberapa metastore Hive dan instance MySQL atau konektor yang disediakan tidak termasuk konektor yang ingin Anda gunakan, Anda dapat menggunakan konektor placeholder yang disediakan oleh EMR. EMR menyediakan lima konektor placeholder: Konektor 1 hingga Konektor 5. Anda dapat memilih konektor dan mengonfigurasinya sebagai konektor Hive atau jenis konektor lain berdasarkan kebutuhan bisnis Anda dengan mengonfigurasi parameter connector.name. Kemudian, tambahkan item konfigurasi lain dengan merujuk pada topik jenis konektor tertentu. Dengan cara ini, Anda dapat menggunakan konektor untuk mengakses metastore Hive.
Bagaimana cara Trino mengakses OSS? Apakah layanan OSS-HDFS didukung oleh Trino?
Secara default, JindoSDK diinstal di kluster EMR dan mendukung akses tanpa kata sandi. Anda dapat menggunakan mode standar untuk mengakses Object Storage Service (OSS) atau menjalankan query tabel Hive yang disimpan di OSS.
Kluster Trino mendukung layanan OSS-HDFS.
Bagaimana cara saya mengakses web UI Trino? Apa itu web UI Trino?
Jika Knox diinstal di kluster Anda, Anda dapat menggunakan alamat proxy Knox untuk mengakses web UI Trino. Untuk informasi lebih lanjut, lihat Knox.
Jika Knox tidak diinstal di kluster Anda, Anda dapat menggunakan alamat publik dalam format {Alamat IP Publik:Nomor Port HTTP} untuk mengakses web UI Trino. Anda dapat memperoleh nomor port HTTP dari nilai parameter http-server.http.port. Nomor port HTTP default adalah 9090. Jika Anda gagal mengakses web UI Trino, periksa apakah port 9090 diaktifkan untuk grup keamanan tempat kluster Anda berada.
Jika kluster Anda adalah kluster keamanan tinggi, port HTTP default tidak valid. Untuk mengakses web UI Trino, pastikan Anda memiliki izin jaringan yang diperlukan. Kemudian, tambahkan konfigurasi berikut ke file config.properties grup node master dan gunakan metode sebelumnya untuk mengakses web UI Trino.
web-ui.authentication.type=fixed
web-ui.user=trinoPada web UI Trino, Anda dapat memperoleh informasi tentang query yang baru saja dijalankan oleh Trino, termasuk pernyataan SQL dan rencana eksekusi. Trino hanya menyimpan hingga 200 query terbaru. Query dengan hasil eksekusi yang berhasil akan ditimpa oleh query baru. Informasi tentang query abnormal disimpan untuk periode yang lebih lama. Anda dapat memodifikasi parameter query.max-history untuk meningkatkan jumlah pernyataan SQL yang disimpan di Trino. Nilai default parameter query.max-history adalah 100.
Saya tidak memilih layanan Trino saat membuat kluster. Apa yang perlu saya perhatikan ketika ingin menambahkan Trino ke kluster?
Untuk kluster DataLake, Anda dapat langsung menambahkan layanan Trino ke kluster jika sumber daya tersisa di kluster cukup untuk menggunakan Trino.
Untuk kluster Hadoop, periksa apakah Anda telah memutakhirkan layanan tertentu di kluster. Jika Anda memutakhirkan layanan tertentu di kluster, kesalahan mungkin terjadi setelah Anda menambahkan layanan Trino ke kluster. Dalam hal ini, Anda dapat menggunakan metode berikut untuk menyelesaikan masalah:
Jika Anda melakukan pemutakhiran terpisah untuk JindoSDK, terutama pemutakhiran versi utama, Anda harus menjalankan ulang skrip pemutakhiran Presto atau Trino dan menyalin JindoSDK yang ditingkatkan ke konektor yang sesuai di jalur instalasi Trino.
Untuk kluster EMR V3.39.1, periksa log layanan tertentu. Dalam banyak kasus, log menunjukkan bahwa kelas terkait Delta Lake tidak dapat ditemukan. Dalam hal ini, Anda harus menyalin 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.jar ke path /usr/lib/presto-current/plugin/delta di setiap node.
Mengapa konfigurasi yang dimodifikasi tidak berlaku?
File konfigurasi Trino berada di /etc/emr/trino-conf. Anda perlu memeriksa apakah file konfigurasi pada instance Elastic Compute Service (ECS) persis menunjukkan perubahan di konsol EMR dan apakah file konfigurasi berisi item konfigurasi yang ditambahkan atau dimodifikasi. Anda dapat menggunakan metode berikut untuk mendiagnosis masalah:
File konfigurasi tidak berisi item konfigurasi yang ditambahkan atau dimodifikasi: Dalam hal ini, Anda harus memeriksa apakah konfigurasi yang dimodifikasi disimpan, apakah konfigurasi tersebut diterapkan, dan apakah konfigurasi yang dimodifikasi memenuhi kebutuhan Anda.
PentingJika Anda memodifikasi konfigurasi grup node atau node tunggal menggunakan item konfigurasi, konfigurasi default kluster tidak lagi berlaku.
File konfigurasi berisi item konfigurasi yang sebelumnya ditambahkan atau dimodifikasi: Jika file konfigurasi yang dimodifikasi ada di node, periksa apakah semua node Trino telah dimulai ulang. Trino hanya memuat konfigurasi setelah restart selesai.
Mengapa query macet? Mengapa node pekerja saya gagal?
Node pekerja kelebihan beban dan tidak dapat memberikan layanan, atau node pekerja dimulai ulang jika pesan kesalahan berikut dikembalikan: Tidak dapat berkomunikasi dengan tugas remote. Node mungkin telah crash atau sedang kelebihan beban. Ini kemungkinan besar merupakan masalah sementara, jadi silakan coba query Anda lagi dalam beberapa menit. atau Tidak ada resolver handle untuk konektor: hive ... Token tidak dikenali 'io': diharapkan (String JSON, Angka, Array, Objek atau token 'null', 'true' atau 'false'). Proses pada node pekerja mungkin dihentikan oleh sistem. Anda perlu memodifikasi konfigurasi sesuai kebutuhan, terutama konfigurasi terkait memori, atau membatasi jumlah permintaan bersamaan.
Bagaimana cara saya melihat log Trino?
Secara default, file log Trino disimpan di path /mnt/disk1/log/trino/var/log/. Informasi tentang output dan stack abnormal disimpan di file server.log.
Jika Anda hanya ingin melihat detail kesalahan query, Anda dapat menjalankan perintah --debug untuk menampilkan stack abnormal saat Anda mengakses klien Trino.
Node koordinator Trino berkomunikasi dengan node pekerja melalui HTTP. Jika pengecualian HTTP dilaporkan pada node koordinator, kesalahan mungkin terjadi pada node pekerja. Dalam hal ini, jika tidak ada pengecualian lain yang ditemukan, Anda perlu mendiagnosis node pekerja satu per satu.
Mengapa saya tidak dapat menjalankan query data? Mengapa query gagal?
Anda dapat mendiagnosis masalah berdasarkan instruksi berikut:
Gunakan mesin lain seperti Hive dan Spark untuk mengakses atau menjalankan query data. Jika Anda tidak dapat mengakses data seperti yang diharapkan, periksa apakah sumber data terhubung dan apakah data utuh.
Jika Anda tidak dapat mengakses atau menjalankan query data hanya dengan menggunakan Trino, periksa apakah informasi metadata valid.
Jika informasi metadata valid tetapi tidak ada hasil yang dikembalikan saat Anda menjalankan query tabel yang berisi data, periksa apakah Anda memiliki izin akses data terlebih dahulu.
Jika mekanisme proxyuser diaktifkan untuk Sistem File Terdistribusi Hadoop (HDFS) tempat data berada, Anda perlu mengatur parameter hive.hdfs.impersonation.enabled ke true untuk Trino.
Jika Anda mengaktifkan Trino di Ranger, periksa apakah izin terkait dikonfigurasi dengan benar di Ranger.
Jika Anda memperluas kluster, periksa apakah grup node atau node memiliki izin atau kemampuan untuk mengakses file yang diperlukan.
Mengapa kolom-kolom dalam urutan yang salah ketika saya menjalankan query data dalam tabel Hudi atau Delta?
Anda perlu memeriksa apakah parameter hive.parquet.use-columns-names diatur ke true dalam file hive.properties Presto.
Mengapa saya tidak dapat memulai ulang Trino setelah menambahkan item konfigurasi?
Jika file Server.log berisi pesan kesalahan Error: Configuration property 'xxxxx' was not used, item konfigurasi ditambahkan ke lokasi yang salah, atau persyaratan konfigurasi tertentu tidak terpenuhi. Verifikasi untuk item konfigurasi Trino sangat ketat. Misalnya, jika item konfigurasi yang ditambahkan tidak ada, item konfigurasi tidak dikonfigurasi dengan benar, atau item konfigurasi dikonfigurasi di file yang salah, konfigurasi tidak dapat diidentifikasi dan Trino gagal memulai. Periksa apakah konfigurasi baru benar atau lakukan operasi rollback.
Mengapa kesalahan "Cannot query xxx table" dilaporkan ketika saya menggunakan konektor Hive untuk menjalankan query data dalam tabel Iceberg, Hudi, atau Delta Lake?
Trino menyediakan konektor terpisah untuk Iceberg, Hudi, dan Delta Lake. Kami sarankan Anda menjalankan query data dalam tabel Iceberg, Hudi, atau Delta Lake menggunakan konektor Iceberg, Hudi, atau Delta Lake. Jika konektor Hive diperlukan untuk pekerjaan Anda, gunakan fitur Table Redirection untuk meneruskan query ke konektor Iceberg, Hudi, atau Delta Lake.
Sebagai contoh, Anda dapat mengonfigurasi parameter berikut untuk menentukan konektor Hive di Trino. Dengan cara ini, Anda dapat menggunakan konektor yang sesuai untuk menjalankan query data dalam tabel Iceberg, Delta Lake, dan Hudi.
hive.iceberg-catalog-name=iceberg
hive.delta-lake-catalog-name=delta-lake
hive.hudi-catalog-name=hudi