Topik ini menjelaskan masalah umum yang mungkin Anda temui saat menggunakan Blink dan Flink dengan Hologres.
Istilah
-
Kinerja Hologres
-
Kinerja penulisan
-
Tabel berorientasi kolom: InsertOrIgnore > InsertOrReplace > InsertOrUpdate
-
Tabel berorientasi baris: InsertOrReplace = InsertOrUpdate > InsertOrIgnore
Parameter
Deskripsi
InsertOrIgnore
Jika tabel sink memiliki primary key dan ditemukan primary key duplikat selama penulisan real-time, catatan yang datang belakangan akan dibuang.
InsertOrReplace
Jika tabel sink memiliki primary key dan ditemukan primary key duplikat selama penulisan real-time, catatan tersebut akan diperbarui berdasarkan primary key. Jika baris baru tidak memuat semua kolom, kolom yang hilang akan diatur ke null.
InsertOrUpdate
Jika tabel sink memiliki primary key dan ditemukan primary key duplikat selama penulisan real-time, catatan tersebut akan diperbarui berdasarkan primary key. Jika baris baru tidak memuat semua kolom, nilai yang ada untuk kolom yang hilang akan dipertahankan.
-
-
Kinerja kueri titik
Penyimpanan berorientasi baris mengungguli penyimpanan hibrida baris-kolom, yang pada gilirannya mengungguli penyimpanan berorientasi kolom.
-
-
Dukungan untuk Blink, Flink (VVR), dan Flink open source
Form factor
Jenis penyimpanan data
Deskripsi
Tabel sumber
Sink table
Tabel dimensi
Binary logging
Hologres Catalog
Fully managed Flink
Mendukung penyimpanan berorientasi baris dan berorientasi kolom.
Mendukung penyimpanan berorientasi baris dan berorientasi kolom.
Gunakan penyimpanan berorientasi baris.
Didukung
Didukung
Tidak ada
Blink Dedicated
Mendukung penyimpanan berorientasi baris dan berorientasi kolom.
Mendukung penyimpanan berorientasi baris dan berorientasi kolom.
Gunakan penyimpanan berorientasi baris.
Hologres V0.8 hanya mendukung penyimpanan berorientasi baris. Hologres V0.9 dan versi selanjutnya mendukung penyimpanan berorientasi baris dan berorientasi kolom. Gunakan penyimpanan berorientasi baris.
Tidak didukung
Produk ini sedang dihentikan. Gunakan fully managed Flink di Alibaba Cloud.
Open source Flink 1.10
Mendukung penyimpanan berorientasi baris dan berorientasi kolom.
Mendukung penyimpanan berorientasi baris dan berorientasi kolom.
Tidak ada
Tidak didukung
Tidak didukung
Tidak ada
Open source Flink 1.11 dan versi selanjutnya
Mendukung penyimpanan berorientasi baris dan berorientasi kolom.
Mendukung penyimpanan berorientasi baris dan berorientasi kolom.
Gunakan penyimpanan berorientasi baris.
Tidak didukung
Tidak didukung
Mulai dari open source Flink 1.11, kode Hologres telah dibuka. Untuk informasi lebih lanjut, lihat GitHub.
-
Contoh berikut menunjukkan cara menggunakan SQL untuk memetakan tabel Flink ke tabel Hologres.
create table holo_source( 'hg_binlog_lsn' BIGINT HEADER, 'hg_binlog_event_type' BIGINT HEADER, 'hg_binlog_timestamp_us' BIGINT HEADER, A int, B int, C timestamp ) with ( type = 'hologres', 'endpoint' = 'xxx.hologres.aliyuncs.com:80', --The Endpoint of the Hologres instance. 'userName' = '', --The AccessKey ID of your Alibaba Cloud account. 'password' = '', --The AccessKey secret of your Alibaba Cloud account. 'dbName' = 'binlog', --The name of the database in the Hologres instance. 'tableName' ='test' --The name of the table in the Hologres instance. 'binlog' = 'true', );Blink, VVR, dan Flink SQL semuanya mendeklarasikan tabel Flink lalu memetakannya ke tabel fisik tertentu di Hologres menggunakan parameter. Oleh karena itu, pemetaan ke tabel eksternal tidak didukung.
Memecahkan masalah penulisan real-time yang lambat
-
Konfirmasi konfigurasi
Periksa informasi konfigurasi berikut.
-
Format penyimpanan tabel tujuan, termasuk tabel berorientasi baris, berorientasi kolom, dan penyimpanan hibrida baris-kolom.
-
Mode insert, termasuk InsertOrIgnore, InsertOrUpdate, dan InsertOrReplace.
-
Table Group dan jumlah shard tabel tujuan.
-
-
Periksa metrik latensi penulisan real-time
Jika latensi penulisan rata-rata tinggi—ratusan milidetik atau bahkan detik—backend kemungkinan besar telah mencapai bottleneck penulisan. Masalah berikut mungkin terjadi.
-
Anda menggunakan InsertOrUpdate untuk tabel berorientasi kolom, yang melakukan pembaruan parsial. Jika trafik tinggi, hal ini dapat menyebabkan beban CPU tinggi dan latensi penulisan tinggi untuk instans.
Solusi: Ubah jenis tabel. Gunakan tabel berorientasi baris. Jika instans Anda V1.1 atau versi selanjutnya, Anda dapat memilih tabel penyimpanan hibrida baris-kolom.
-
Periksa beban CPU instans di Cloud Monitor. Jika penggunaan CPU mendekati 100% tetapi tidak ada pembaruan parsial pada tabel berorientasi kolom, penyebabnya biasanya adalah kueri QPS tinggi atau volume penulisan tinggi.
Solusi: Lakukan scale out instans Hologres.
-
Periksa apakah ada perintah
Insert into select fromberkelanjutan yang memicu penulisan BulkLoad ke tabel. Penulisan BulkLoad saat ini memblokir penulisan real-time.Solusi: Ubah penulisan BulkLoad menjadi penulisan real-time, atau jalankan selama jam sepi.
-
-
Periksa kesenjangan data
Gunakan perintah SQL berikut untuk memeriksa kesenjangan data.
SELECT hg_shard_id, count(1) FROM t1 GROUP BY hg_shard_id ORDER BY hg_shard_id;Solusi: Ubah kunci distribusi agar data tersebar lebih merata.
-
Periksa tekanan backend
Jika langkah-langkah sebelumnya tidak menunjukkan masalah tetapi kinerja penulisan tiba-tiba turun, kluster backend kemungkinan besar sedang mengalami tekanan tinggi dan bottleneck. Hubungi dukungan teknis untuk mengonfirmasi situasi tersebut. Untuk informasi lebih lanjut, lihat Bagaimana cara mendapatkan dukungan online lebih lanjut?.
-
Periksa tekanan balik di sisi Blink/Flink
Jika langkah-langkah sebelumnya tidak menunjukkan masalah jelas di sisi Hologres, klien biasanya lambat, artinya sisi Blink/Flink lambat. Periksa apakah node sink mengalami tekanan balik. Jika pekerjaan hanya memiliki satu node, Anda tidak dapat melihat apakah ada tekanan balik. Dalam kasus ini, pisahkan node sink dan amati lagi. Untuk detailnya, hubungi dukungan teknis Flink.
Memecahkan masalah penulisan data
Masalah ini biasanya disebabkan oleh data yang tidak berurutan. Misalnya, data dengan primary key yang sama didistribusikan ke berbagai task Flink, sehingga urutan penulisan tidak dapat dijamin. Periksa logika Flink SQL untuk memastikan bahwa data di-shuffle berdasarkan primary key tabel Hologres sebelum ditulis ke Hologres.
Memecahkan masalah kueri tabel dimensi
-
Penggabungan tabel dimensi dan penggabungan dua aliran
Saat membaca dari Hologres, pastikan Anda menggunakan penggabungan tabel dimensi dengan benar dan tidak keliru menganggapnya sebagai penggabungan dua aliran. Berikut adalah contoh penggunaan Hologres sebagai tabel dimensi. Jika kata kunci
proctime AS PROCTIME()danhologres_dim FOR SYSTEM_TIME AStidak ada, maka ini menjadi penggabungan dua aliran.CREATE TEMPORARY TABLE datagen_source ( a INT, b BIGINT, c STRING, proctime AS PROCTIME() ) with ( 'connector' = 'datagen' ); CREATE TEMPORARY TABLE hologres_dim ( a INT, b VARCHAR, c VARCHAR ) with ( 'connector' = 'hologres', ... ); CREATE TEMPORARY TABLE blackhole_sink ( a INT, b STRING ) with ( 'connector' = 'blackhole' ); insert into blackhole_sink select T.a,H.b FROM datagen_source AS T JOIN hologres_dim FOR SYSTEM_TIME AS OF T.proctime AS H ON T.a = H.a; -
Kueri tabel dimensi
-
Periksa format penyimpanan tabel dimensi
Periksa apakah tabel dimensi merupakan tabel berorientasi baris, berorientasi kolom, atau penyimpanan hibrida baris-kolom.
-
Latensi tinggi dalam kueri tabel dimensi
Masalah paling umum pada tabel dimensi adalah tekanan balik pada node join di sisi Flink/Blink, yang mengurangi throughput seluruh pekerjaan.
-
Periksa mode join tabel dimensi Flink
Fitur join tabel dimensi dari Hologres Flink Connector mendukung mode sinkron dan asinkron. Mode asinkron memiliki kinerja lebih baik daripada mode sinkron. Anda dapat membedakannya dengan memeriksa Flink SQL. Berikut adalah contoh pernyataan SQL yang mengaktifkan kueri tabel dimensi asinkron.
CREATE TABLE hologres_dim( id INT, len INT, content VARCHAR ) with ( 'connector'='hologres', 'dbname'='<yourDbname>', --The name of the Hologres database. 'tablename'='<yourTablename>', --The name of the table in Hologres that receives data. 'username'='<yourUsername>', --The AccessKey ID of your Alibaba Cloud account. 'password'='<yourPassword>', --The AccessKey secret of your Alibaba Cloud account. 'endpoint'='<yourEndpoint>' --The VPC Endpoint of your Hologres instance. 'async' = 'true'--Asynchronous mode ); -
Periksa latensi kueri backend
Periksa metrik latensi penulisan real-time:
-
Periksa apakah tabel berorientasi kolom digunakan sebagai tabel dimensi. Tabel dimensi dalam format berorientasi kolom memiliki overhead tinggi dalam skenario QPS tinggi.
-
Jika ini adalah tabel berorientasi baris dan latensinya tinggi, beban keseluruhan pada instans biasanya tinggi. Anda perlu melakukan scale out instans.
-
-
-
Periksa apakah kunci gabungan adalah primary key tabel Hologres
Mulai dari Ververica Runtime (VVR) 4.x (Flink 1.13), Hologres Connector mendukung kueri non-primary key pada tabel Hologres berdasarkan Holo Client. Hal ini biasanya menghasilkan kinerja buruk dan beban instans tinggi, terutama jika skema tabel tidak dioptimalkan. Dalam kasus ini, pandu pengguna untuk mengoptimalkan skema tabel. Optimasi paling umum adalah mengatur kunci gabungan sebagai kunci distribusi untuk mengaktifkan pemangkasan shard.
-
Periksa tekanan balik di sisi Blink
Jika langkah-langkah sebelumnya tidak menunjukkan masalah jelas di sisi Hologres, klien biasanya lambat, artinya sisi Blink lambat. Periksa apakah node sink mengalami tekanan balik. Jika pekerjaan hanya memiliki satu node, Anda tidak dapat melihat apakah ada tekanan balik. Dalam kasus ini, pisahkan node sink dan amati lagi. Anda juga dapat memeriksa apakah node join menyebabkan tekanan balik. Untuk detailnya, hubungi dukungan teknis Flink.
-
Catatan tentang koneksi
Hologres Connector menggunakan mode terkait Java Database Connectivity (JDBC) secara default.
-
Mode JDBC_FIXED kini didukung. Mode ini tidak menggunakan koneksi dan tidak dibatasi oleh jumlah maksimum Walsender saat mengonsumsi binary log. Untuk informasi lebih lanjut, lihat Hologres.
-
Mulai dari mesin Flink VVR-8.0.5-Flink-1.17, reuse koneksi diaktifkan secara default dengan
'connectionPoolName' = 'default'. Untuk sebagian besar pekerjaan, ini tidak berdampak. Jika satu pekerjaan memiliki banyak tabel, kinerja mungkin menurun setelah upgrade. Dalam kasus ini, konfigurasikan parameterconnectionPoolNameterpisah untuk tabel hot spot guna mengoptimalkan kinerja. -
Mode JDBC menggunakan sejumlah koneksi tertentu. Penggunaan koneksi default untuk berbagai jenis tabel adalah sebagai berikut.
Jenis tabel
Koneksi default (per konkurensi pekerjaan Flink)
Tabel sumber binary logging
0
Tabel sumber batch
1
Tabel dimensi
3 (dapat disesuaikan dengan parameter
connectionSize)Tabel Sink
3 (dapat disesuaikan dengan parameter
connectionSize)-
Metode perhitungan koneksi
-
Kasus default
Secara default, jumlah maksimum koneksi yang digunakan oleh suatu pekerjaan dapat dihitung menggunakan rumus berikut:
Koneksi maksimum = (Jumlah tabel sumber batch × 1 + Jumlah tabel dimensi × connectionSize + Jumlah tabel sink × connectionSize) × Konkurensi pekerjaan.Misalnya, suatu pekerjaan memiliki satu tabel sumber full dan incremental, dua tabel dimensi, dan tiga tabel sink. Semuanya menggunakan nilai parameter
connectionSizedefault. Konkurensi pekerjaan diatur ke5. Jumlah koneksi akhir yang digunakan adalah(1 × 1 + 2 × 3 + 3 × 3) × 5 = 80. -
Reuse koneksi
Versi Realtime Compute for Apache Flink 1.13-vvr-4.1.12 dan versi selanjutnya mendukung reuse koneksi. Dalam konkurensi yang sama dari suatu pekerjaan, tabel dimensi dan tabel sink dengan
connectionPoolNameyang sama akan menggunakan kolam koneksi yang sama. Dalam contoh default, jika dua tabel dimensi dan tiga tabel sink dikonfigurasi denganconnectionPoolNameyang sama, danconnectionSizeditingkatkan secara tepat menjadi5, jumlah koneksi akhir yang digunakan adalah(1 × 1 + 5) × 5 = 30.CatatanMode reuse koneksi cocok untuk sebagian besar skenario. Namun, dalam beberapa skenario, seperti ketika terdapat banyak tabel dimensi dan mode asinkron maupun caching tidak diaktifkan, kueri titik sinkron akan sangat sering. Dalam kasus ini, reuse koneksi multi-tabel dapat menyebabkan kueri melambat. Anda dapat mengonfigurasi reuse koneksi hanya untuk tabel sink.
-
Skenario lain yang menggunakan koneksi
-
Selama startup pekerjaan, koneksi dibuat untuk validasi metadata tabel dan tugas lainnya. Hal ini mungkin sementara menggunakan 3 hingga 6 koneksi, yang dilepas setelah pekerjaan berjalan normal.
-
Fully managed Flink mendukung fitur seperti Hologres Catalog, CREATE TABLE AS SELECT (CTAS), dan CREATE DATABASE AS (CDAS). Menggunakan fitur-fitur ini juga menggunakan koneksi. Secara default, pekerjaan yang menggunakan katalog akan menggunakan tambahan tiga koneksi untuk operasi DDL seperti membuat tabel.
-
-
-
Diagnosis penggunaan koneksi
Ketika pekerjaan memiliki banyak tabel atau konkurensi tinggi, pekerjaan tersebut dapat menggunakan banyak koneksi, bahkan menghabiskan total koneksi instans Hologres. Gunakan metode berikut untuk memahami dan mendiagnosis penggunaan koneksi saat ini.
-
Gunakan perintah berikut di HoloWeb untuk melihat kueri aktif saat ini di tabel
pg_stat_activity. Untuk informasi lebih lanjut, lihat Kueri tampilan pg_stat_activity. Kueri di mana bidangapplication_namebernilaiververica-connector-hologresmerepresentasikan koneksi baca dan tulis dari Realtime Compute for Apache Flink.SELECT application_name, COUNT (1) AS COUNT FROM pg_stat_activity WHERE backend_type = 'client backend' AND application_name != 'hologres' GROUP BY application_name; -
Kadang-kadang konkurensi pekerjaan diatur terlalu tinggi. Di halaman Informasi Pemantauan untuk instans di daftar Instances Hologres, jumlah koneksi tinggi saat startup lalu turun setelah periode tertentu. Hal ini karena banyak koneksi menganggur dan ditutup. Ini menunjukkan bahwa pekerjaan sebenarnya tidak memerlukan konkurensi atau jumlah koneksi setinggi itu. Rencanakan koneksi tugas secara wajar, kurangi konkurensi atau nilai parameter
connectionSize, atau gunakan mode reuse koneksi. -
Sesuaikan konkurensi node Hologres secara tepat. Secara default, semua operator dalam pekerjaan Flink memiliki konkurensi yang sama. Dalam beberapa skenario, operator dengan logika perhitungan kompleks perlu dikonfigurasi dengan konkurensi lebih tinggi. Namun, konkurensi ini mungkin berlebihan untuk tabel sink Hologres dan dapat menggunakan banyak koneksi. Dalam kasus ini, rujuk konfigurasi resource pekerjaan, pilih mode ahli, dan atur konkurensi yang sesuai dan lebih kecil untuk operator penulisan guna mengurangi penggunaan koneksi total.
-
-
Error umum
Error: ERPC TIMEOUT atau ERPC CONNECTION CLOSED
-
Gejala: Terjadi error
com.alibaba.blink.store.core.rpc.RpcException: request xx UpsertRecordBatchRequest failed on final try 4, maxAttempts=4, errorCode=3, msg=ERPC_ERROR_TIMEOUT. -
Kemungkinan penyebab: Operasi penulisan gagal karena tekanan berlebihan, atau kluster sedang sibuk. Periksa apakah beban CPU instans Hologres mencapai batas maksimum.
CONNECTION CLOSEDmungkin disebabkan oleh crash node backend akibat beban berlebihan, yang mengakibatkan error kehabisan memori (OOM) atau coredump. -
Solusi: Coba ulang operasi penulisan. Jika masalah berlanjut, hubungi dukungan teknis Hologres untuk menyelidiki penyebabnya.
Error: BackPresure Exceed Reject Limit
-
Kemungkinan penyebab: Backend Hologres mengalami tekanan penulisan berlebihan, menyebabkan Memtable gagal melakukan flush ke disk tepat waktu, yang mengakibatkan kegagalan penulisan.
-
Solusi: Jika kegagalan bersifat sesekali, Anda dapat mengabaikannya. Atau, tambahkan parameter rpcRetries = '100' ke sink untuk meningkatkan jumlah retry penulisan. Jika error ini berlanjut, hubungi dukungan teknis Hologres untuk memeriksa status instans backend.
Error: The requested table name xxx mismatches the version of the table xxx from server/org.postgresql.util.PSQLException: An I/O error occurred while sending to the backend.Caused by: java.net.SocketTimeoutException: Read timed out
-
Kemungkinan penyebab: Anda melakukan operasi ALTER TABLE, menyebabkan nomor versi skema tabel yang dibawa oleh penulisan Blink lebih rendah daripada nomor versi sisi server, dan jumlah retry klien telah terlampaui.
-
Solusi: Jika error bersifat sesekali, Anda dapat mengabaikannya. Jika error ini berlanjut, hubungi dukungan teknis Hologres.
Error: Failed to query table meta for table
-
Kemungkinan penyebab: Anda membaca dari atau menulis ke tabel eksternal Hologres. Hologres Connector tidak mendukung pembacaan atau penulisan ke tabel eksternal. Jika bukan itu penyebabnya, mungkin terdapat masalah pada metadata instans Hologres.
-
Solusi: Hubungi dukungan teknis Hologres.
Error: Cloud authentication failed for access id
-
Kemungkinan penyebab: Informasi AccessKey yang dikonfigurasi salah, atau akun belum ditambahkan ke instans Hologres.
-
Solusi:
-
Periksa apakah ID AccessKey dan Rahasia AccessKey akun saat ini dimasukkan dengan benar. Rahasia AccessKey sering kali salah atau mengandung spasi.
-
Jika Anda tidak dapat menemukan penyebabnya, gunakan AccessKey saat ini untuk terhubung ke HoloWeb (login dengan akun dan kata sandi). Periksa pesan error selama uji konektivitas. Jika error-nya sama, berarti terdapat masalah pada AccessKey. Jika error-nya
FATAL: role“ALIYUN$xxxx“Does not exist, akun tersebut tidak memiliki izin untuk instans. Administrator perlu memberikan izin kepada akun tersebut.
-
Data tidak dapat digabungkan dari tabel dimensi Hologres
-
Kemungkinan penyebab: Tabel dimensi Hologres adalah tabel partisi. Tabel partisi tidak didukung sebagai tabel dimensi.
-
Solusi: Ubah tabel partisi menjadi tabel standar.
Error: Modify record by primary key is not on this table
-
Kemungkinan penyebab: Mode update dipilih untuk penulisan real-time, tetapi tabel sink Hologres tidak memiliki primary key.
-
Solusi: Tetapkan primary key.
Error: shard columns count is no match
-
Kemungkinan penyebab: Saat menulis ke Hologres, kolom kunci distribusi lengkap (primary key secara default) tidak ditulis.
-
Solusi: Tulis kolom kunci distribusi lengkap.
Error: Full row is required, but the column xxx is missing
-
Kemungkinan penyebab: Ini adalah pesan error dari versi lama Hologres. Biasanya berarti Anda tidak menulis data ke kolom yang tidak boleh null.
-
Solusi: Berikan nilai ke kolom yang tidak boleh null tersebut.
Lonjakan koneksi JDBC dari akses pengguna VVP ke Hologres
-
Kemungkinan penyebab: Hologres Connector VVR menggunakan mode JDBC untuk membaca dan menulis ke Hologres (kecuali untuk binary logging). Konektor ini menggunakan maksimal
Jumlah tabel Hologres yang dibaca/ditulis × Konkurensi × connectionSize (parameter tabel VVR, default adalah 3)koneksi. -
Solusi: Rencanakan koneksi tugas secara wajar. Kurangi konkurensi atau connectionSize. Jika Anda tidak dapat menurunkan konkurensi atau connectionSize, Anda dapat mengatur parameter useRpcMode = 'true' untuk tabel tersebut guna beralih kembali ke mode RPC.
Pengguna Blink/VVR mendapatkan error yang menunjukkan kegagalan koneksi saat membaca atau menulis ke Hologres
-
Kemungkinan penyebab: Kluster Blink/VVR secara default memiliki akses lambat atau tidak ada akses ke jaringan publik.
-
Solusi: Pastikan kluster berada di wilayah yang sama dengan instans Hologres dan gunakan VPC Endpoint.
Error: Hologres rpc mode dimension table does not support one to many join
-
Kemungkinan penyebab: Tabel dimensi mode RPC untuk Blink dan VVR harus berupa tabel berorientasi baris, dan bidang join harus merupakan primary key. Error ini sering disebabkan oleh tidak terpenuhinya kedua kondisi tersebut.
-
Solusi: Gunakan mode JDBC, dan gunakan tabel berorientasi baris atau penyimpanan hibrida baris-kolom untuk tabel dimensi.
Error: DatahubClientException
-
Gejala: Terjadi error
Caused by: com.aliyun.datahub.client.exception.DatahubClientException: [httpStatus:503, requestId:null, errorCode:null, errorMessage:{"ErrorCode":"ServiceUnavailable","ErrorMessage":"Queue Full"}]. -
Kemungkinan penyebab: Banyak pekerjaan konsumsi binary log restart secara bersamaan karena suatu alasan, menyebabkan kolam thread habis.
-
Solusi: Jalankan pekerjaan konsumsi binary log secara bertahap.
Error: Terjadi error saat membaca data dari datahub
-
Gejala: Terjadi error
Error occurs when reading data from datahub, msg: [httpStatus:500, requestId:xxx, errorCode:InternalServerError, errorMessage:Get binlog timeout.]. -
Kemungkinan penyebab: Setiap data binary log terlalu besar. Setelah batching, ukuran setiap permintaan RPC melebihi batas maksimum.
-
Solusi: Ketika setiap baris data memiliki banyak bidang dan string panjang, Anda dapat mengurangi konfigurasi batching.
Error: Caused by: java.lang.IllegalArgumentException: Column: created_time type does not match: flink row type: TIMESTAMP(6) WITH LOCAL TIME ZONE, hologres type: timestamp
-
Kemungkinan penyebab: Tipe TIMESTAMP(6) digunakan untuk suatu bidang di Flink. Pemetaan tipe ini ke Hologres saat ini tidak didukung.
-
Solusi: Ubah tipe bidang menjadi TIMESTAMP.
Error: Caused by: org.postgresql.util.PSQLException: FATAL: Rejected by ip white list. db = xxx, usr=xxx, ip=xx.xx.xx.xx
-
Kemungkinan penyebab: Daftar putih IP diatur di Hologres, tetapi alamat IP tempat Flink mengakses Hologres tidak termasuk dalam daftar putih, sehingga akses diblokir.
-
Solusi: Tambahkan alamat IP Flink ke daftar putih IP Hologres. Untuk informasi lebih lanjut, lihat Daftar putih IP.
Error: Caused by: java.lang.RuntimeException: shaded.hologres.com.aliyun.datahub.client.exception.DatahubClientException: [httpStatus:400, requestId:xx, errorCode:TableVersionExpired, errorMessage:The specified table has been modified, please refresh cursor and try again
-
Kemungkinan penyebab: Anda melakukan operasi DDL pada tabel sumber, menyebabkan versi tabel berubah dan konsumsi gagal.
-
Solusi: Upgrade Flink ke versi 4.0.16 atau versi selanjutnya, yang akan melakukan retry dalam situasi ini.
Exception: Exception Shard ID does not exist dilemparkan saat pekerjaan binary log dimulai
-
Kemungkinan penyebab: Jumlah shard di tabel yang dikonsumsi telah berubah, mungkin karena penggantian nama tabel atau operasi lainnya. Pekerjaan menggunakan informasi shard tabel lama saat memulihkan dari checkpoint.
-
Solusi: Setelah operasi seperti membuat ulang tabel, informasi checkpoint konsumsi binary log tidak lagi valid. Restart pekerjaan tanpa state.
Error: ERROR,22021,"invalid byte sequence for encoding ""UTF8"": 0x00"
-
Kemungkinan penyebab: Selama kueri titik tabel dimensi, primary key (tipe string) mengandung karakter yang tidak di-encode UTF-8, menyebabkan eksekusi SQL gagal.
-
Solusi: Proses data kotor di hulu.
Error: hologres.org.postgresql.util.PSQLException: ERROR: syntax error
-
Kemungkinan penyebab: Saat mengonsumsi tabel binary log dalam mode JDBC, slot harus ditentukan. Error ini dapat terjadi jika nama slot yang dibuat mengandung karakter yang tidak didukung (hanya huruf kecil, angka, dan garis bawah yang didukung).
-
Solusi: Buat ulang slot, atau gunakan fitur pembuatan slot otomatis di VVR-6.0.7.
Error: create table hologres.hg_replication_progress failed
-
Kemungkinan penyebab: Saat mengonsumsi binary log melalui JDBC, tabel
hg_replication_progressmungkin diperlukan. Jika tabel ini tidak ada di database saat ini, tabel tersebut perlu dibuat. Namun, jumlah shard yang dapat dibuat di instans telah mencapai batas atas, menyebabkan pembuatan gagal. -
Solusi: Bersihkan database yang tidak digunakan.
Exception: Pekerjaan macet selama runtime. thread dump menunjukkan pekerjaan macet di titik pemuatan driver JDBC, biasanya di posisi seperti Class.forName.
-
Kemungkinan penyebab: JDK 8 melakukan beberapa operasi inisialisasi statis saat memuat driver JDBC. Race condition dapat terjadi ketika beberapa thread memuatnya secara bersamaan.
-
Solusi: Anda dapat mencoba ulang, atau gunakan versi 6.0.7 konektor, yang menangani situasi ini.
Exception: Saat mengonsumsi binary log dalam mode JDBC, exception "no table is defined in publication" atau "The table xxx has no slot named xxx" dilemparkan.
-
Kemungkinan penyebab: Saat tabel dihapus dan tabel dengan nama yang sama dibuat ulang, publikasi yang terikat ke tabel tidak dihapus.
-
Solusi: Saat exception ini terjadi, Anda dapat mengeksekusi pernyataan
select * from pg_publication where pubname not in (select pubname from pg_publication_tables);di Hologres untuk mengkueri publikasi yang tidak dibersihkan. Kemudian, eksekusi pernyataandrop publication xx;untuk menghapus publikasi sisa dan restart pekerjaan.
Error: Exception "permission denied for database" dilemparkan saat pekerjaan online.
-
Kemungkinan penyebab: Untuk Hologres V1.3 dan V2.0, mengonsumsi binary log dalam mode JDBC memerlukan konfigurasi izin.
-
Solusi: Upgrade Hologres ke V2.1 dan gunakan konektor VVR-8.0.5 atau versi selanjutnya. Hanya diperlukan izin read-only untuk tabel guna mengonsumsi binary log. Jika tidak memungkinkan untuk upgrade, rujuk operasi pemberian izin di Batasan.
Error: table writer init failed: Fail to fetch table meta from sm
-
Kemungkinan penyebab: Menulis ke tabel setelah operasi truncate atau rename.
-
Solusi: Jika ini terjadi sesekali, Anda dapat mengabaikannya. Pekerjaan akan pulih setelah failover. Di versi Hologres V2.1.1 hingga V2.1.14, waktu cache replay untuk node FE ditingkatkan, yang memperlambat replay DDL setelah DML. Probabilitas exception serupa mungkin meningkat. Upgrade ke versi V2.1 terbaru.
Exception: Saat mengembangkan pekerjaan Datastream secara lokal menggunakan dependensi konektor, terjadi exception seperti java.lang.ClassNotFoundException: com.alibaba.ververica.connectors.hologres.binlog.source.reader.HologresBinlogRecordEmitter.
-
Kemungkinan penyebab: Paket JAR konektor komersial untuk Realtime Compute for Apache Flink tidak menyediakan beberapa kelas runtime.
-
Solusi: Rujuk dokumen Menjalankan dan men-debug pekerjaan yang mengandung konektor secara lokal untuk menyesuaikan dependensi agar debugging dan pengembangan berjalan normal.
Exception: Saat mengonsumsi binary log dalam mode JDBC, terjadi exception Binlog Convert Failed, atau pembacaan data untuk beberapa shard berhenti pada waktu tertentu.
-
Kemungkinan penyebab: Saat gerbang instans Hologres menerima exception timeout dari backend, terdapat masalah dalam proses mengembalikan exception ke klien, menyebabkan pembacaan data macet atau error kegagalan parsing data.
-
Solusi: Hal ini biasanya hanya terjadi saat pekerjaan mengalami backpressure. Jika pekerjaan mengalami masalah stall pembacaan data, Anda dapat restart pekerjaan dan pulihkan dari checkpoint terbaru. Untuk menyelesaikan masalah ini sepenuhnya, upgrade versi Hologres ke 2.2.21 atau versi selanjutnya.