Alibaba Cloud Realtime Compute for Apache Flink adalah platform enterprise-grade berkinerja tinggi untuk pemrosesan big data real-time yang dibangun di atas Apache Flink. Hologres terintegrasi erat dengan Flink, memungkinkan Anda menulis dan mengkueri data streaming secara real time sehingga dapat membangun gudang data real-time secara efisien.
Jenis layanan
Realtime Compute for Apache Flink tidak menyimpan data, melainkan memproses data dari sistem penyimpanan eksternal dan mendukung jenis penyimpanan data berikut:
Tabel Sumber
Tabel sumber menyediakan data masukan untuk pekerjaan Flink. Ketika tabel Hologres digunakan sebagai tabel sumber, data diimpor dalam mode batch, bukan mode streaming. Hologres melakukan pemindaian tabel penuh, mengirimkan data ke tujuan downstream, lalu pekerjaan selesai.
Tabel Dimensi
Tabel dimensi biasanya digunakan untuk pencarian titik berdasarkan kunci. Oleh karena itu, saat menggunakan tabel Hologres sebagai tabel dimensi, kami merekomendasikan penggunaan Row-oriented Storage. Kondisi JOIN harus menggunakan kunci primer lengkap dari tabel tersebut.
Tabel Hasil
Tabel hasil menerima dan menyimpan data keluaran dari komputasi Flink, serta menyediakan antarmuka baca-tulis untuk konsumsi downstream.
Realtime Compute for Apache Flink terintegrasi secara mendalam dengan Hologres untuk menawarkan fitur-fitur enterprise berikut:
Konsumsi Binary Log Hologres
Fitur ini memungkinkan Anda mengonsumsi log perubahan dari tabel Hologres menggunakan pola antrian pesan (message queue).
Flink Catalog
Anda dapat mengimpor metadata Hologres sebagai katalog di Flink, sehingga dapat membaca metadata Hologres langsung dari Konsol Fully Managed Flink tanpa perlu mendaftarkan tabel secara manual. Kemampuan ini meningkatkan efisiensi pengembangan dan memastikan akurasi skema.
Evolusi Skema
Fully Managed Flink mendukung evolusi skema. Saat Flink membaca data JSON, layanan ini dapat secara otomatis mengurai tipe data dan membuat kolom tabel yang sesuai, memungkinkan evolusi model data secara dinamis.
Tabel berikut menjelaskan jenis layanan Flink yang didukung oleh Hologres beserta fitur-fiturnya.
Jenis layanan | Jenis penyimpanan data | Fitur lanjutan | Deskripsi | ||||
Source table | Result table | Dimension table | Hologres binlog | Flink catalog | Schema evolution | ||
Semi-managed Flink | Mendukung Row-oriented Storage dan Column-oriented Storage. Untuk tabel sumber Binary Log, kami merekomendasikan penggunaan Row-oriented Storage atau penyimpanan hibrida baris-kolom. | Mendukung Row-oriented Storage dan Column-oriented Storage. | Kami merekomendasikan penggunaan Row-oriented Storage atau penyimpanan hibrida baris-kolom. | Didukung | Didukung | Didukung | Menggunakan platform pengembangan EMR Studio. |
Blink in exclusive mode (tidak dilanjutkan) | Mendukung Row-oriented Storage dan Column-oriented Storage. Untuk tabel sumber Binary Log, kami merekomendasikan penggunaan Row-oriented Storage atau penyimpanan hibrida baris-kolom. | Mendukung Row-oriented Storage dan Column-oriented Storage. | Kami merekomendasikan penggunaan Row-oriented Storage atau penyimpanan hibrida baris-kolom. | Hologres V0.8 hanya mendukung Row-oriented Storage. Hologres V0.9 dan versi selanjutnya mendukung Row-oriented dan Column-oriented Storage. Kami merekomendasikan penggunaan Row-oriented Storage. | Tidak didukung | Tidak didukung | Menggunakan platform pengembangan Bayes. Kami merekomendasikan penggunaan Fully Managed Flink. |
Apache Flink V1.10 | Tidak didukung | Mendukung Row-oriented Storage dan Column-oriented Storage. | Tidak didukung | Tidak didukung | Tidak didukung | Tidak didukung | - |
Apache Flink V1.11 dan versi selanjutnya | Tidak didukung | Mendukung Row-oriented Storage dan Column-oriented Storage. | Kami merekomendasikan penggunaan Row-oriented Storage. | Tidak didukung | Tidak didukung | Tidak didukung | Kode konektor Hologres telah dibuka sejak Apache Flink V1.11. Untuk detailnya, lihat alibabacloud-hologres-connectors. |
Apache Flink V1.13 dan versi selanjutnya | Didukung | Mendukung Row-oriented Storage dan Column-oriented Storage. | Kami merekomendasikan penggunaan Row-oriented Storage. | Tidak didukung | Tidak didukung | Tidak didukung | Kode konektor Hologres telah dibuka sejak Apache Flink V1.11. Untuk detailnya, lihat alibabacloud-hologres-connectors. |
Catatan rilis konektor Hologres
Versi Flink | Versi VVR | Versi Hologres | Informasi pembaruan | Referensi |
1.20 | 11.6 | 3.2.x 4.0.x 4.1.x | Source table:
Catalog:
Umum:
| |
1.20 | 11.5 | 3.2.x 4.0.x 4.1.x | Source table:
Dimension table:
Umum:
Perbaikan bug:
| |
1.20 | 11.4 | 3.2.x 4.0.x 4.1.x | Sink table:
Dimension table:
Perbaikan bug:
| |
1.20 | 11.3 | 3.1.x 3.2.x 4.0.x | Source table:
Sink table:
Umum:
Perbaikan bug:
| |
1.20 | 11.2 | 3.1.x 3.2.x 4.0.x | Sink table:
Umum:
Perbaikan bug:
| |
1.20 | 11.1 | 3.1.x 3.2.x | Source table:
Sink table:
Dimension table:
Umum:
| |
1.20 | 11.0 | 3.1.x 3.2.x | Umum:
Source table:
| |
1.17 | 8.0.11 | 2.1.x 2.2.x 3.0.x | Source table:
Sink table:
Umum:
Perbaikan bug:
| |
1.17 | 8.0.9~8.0.10 | 2.1.x 2.2.x 3.0.x |
| |
1.17 | 8.0.8 | 2.1.x 2.2.x | Sink table:
| |
1.17 | 8.0.7 | 2.1.x | Dimension table:
Umum:
| |
1.17 | 8.0.6 | 2.1.x | Source table:
Umum:
| |
1.17 | 8.0.5 | 2.0.x 2.1.x | Source table:
Sink table:
Umum:
| |
1.17 | 8.0.4 | 2.0.x 2.1.x | Source table:
Umum:
| |
1.17 | 8.0.3 | 2.0.x 2.1.x | Umum:
| |
1.15 | 6.0.7 |
|
| |
1.15 | 6.0.6 | 1.3.x | Source table:
| |
1.15 | 6.0.5 | 1.3.x |
| |
1.15 | 6.0.3~6.0.4 | 1.3.x | Source table:
Sink table: Menambahkan dukungan untuk menulis data dalam mode Fixed Copy. Fixed Copy adalah fitur baru di Hologres V1.3. Dibanding mode JDBC, mode Fixed Copy memberikan throughput lebih tinggi dan latensi data lebih rendah melalui streaming, serta mengurangi konsumsi memori klien dengan menghilangkan batching. Hologres Catalog:
Parameter sdkMode: Mode berbeda tersedia untuk jenis tabel berbeda di Hologres. Parameter sdkMode kini digunakan untuk mengonsolidasikan pemilihan mode. | |
1.13 | 4.0.18 | 1.1 dan versi selanjutnya | Memperbaiki masalah di mana pelaporan metrik untuk tabel sink menurunkan performa penulisan. | |
1.13 dan 1.15 | 4.0.15 dan 6.0.2 | 1.1 dan versi selanjutnya | Source table:
Dimension table: Menambahkan dukungan untuk mengonfigurasi timeout permintaan asinkron ( Sink table:
| |
1.13 | 4.0.13 | 1.1 dan versi selanjutnya |
| |
1.13 | 4.0.11 | 0.10 dan versi selanjutnya | Menambahkan dukungan untuk CTAS dan CDAS. | |
1.13 | 4.0.8 | 0.10 dan versi selanjutnya | Menambahkan dukungan untuk Hologres Catalog untuk tabel sink, tabel sumber, dan tabel dimensi. | |
1.13 | 3.0.0 | 0.9 dan versi selanjutnya | Menambahkan dukungan untuk konsumsi data real-time dari Hologres. |
Isu yang diketahui dan perbaikannya
Catatan tentang isu dan perbaikan
Versi yang terpengaruh untuk setiap isu telah ditentukan dengan jelas. Versi di luar rentang yang tercantum tidak terpengaruh.
Jika versi yang terpengaruh ditandai sebagai "N/A", isu tersebut kemungkinan merupakan cacat pada mesin Hologres, bukan pada konektor.
Tingkat keparahan
P0 (Kritis): Peningkatan segera direkomendasikan. Memunculkan isu ini dapat memengaruhi operasi produksi, seperti kebenaran kueri atau tingkat keberhasilan penulisan.
P1 (Tinggi): Peningkatan direkomendasikan untuk mencegah potensi masalah.
P2 (Sedang): Peningkatan opsional. Isu-isu ini terjadi secara intermiten dan dapat diselesaikan dengan solusi sementara atau restart pekerjaan.
Tingkat keparahan | Deskripsi | Versi yang terpengaruh | Versi perbaikan | Solusi |
P0 | Saat menulis ke subset kolom dalam tabel hasil, jika bidang yang tidak ditulis memiliki nilai default terkait waktu (seperti current_timestamp atau now()), nilai yang diisi mungkin salah. Hal ini terjadi karena mode FixedFE tidak menangani nilai default terkait waktu dengan benar. | 11.0-11.5 | N/A | Gunakan fungsi now() di sisi Flink untuk meneruskan nilai ke bidang yang sesuai dalam tabel hasil. Atau, atur parameter |
P0 | Saat mengonsumsi Binlog, jika kolom fisik dan kolom metadata memiliki nama yang sama, seperti | 8.0.11, 11.0-11.4 | 11.5 | Tingkatkan ke versi 11.5 atau versi selanjutnya dan atur |
P1 | Saat mengonsumsi Binlog, pemangkasan kolom dapat membaca data ke kolom yang salah. Hal ini terjadi karena holo-client mungkin mengambil kolom yang tidak diharapkan saat menangani pemangkasan kolom. | 11.3-11.5 | Hotfix telah dirilis untuk semua versi yang terpengaruh (11.3-11.5). | Hotfix mengatasi isu ini, sehingga Anda tidak mungkin mengalaminya. Untuk pekerjaan DataStream, gunakan versi konektor terbaru. |
P2 | Pemindai untuk tabel dimensi one-to-many tidak ditutup dengan benar saat Anda menghentikan pekerjaan. Hal ini dapat menyebabkan kebocoran resource atau timeout pekerjaan saat shutdown. Masalah ini disebabkan oleh logika shutdown pemindai internal holo-client yang bermasalah. | Versi sebelum 11.3 | 11.4 | Tingkatkan ke versi 11.4 atau versi selanjutnya. |
P1 | Saat menggunakan fitur check-and-put, memproses catatan hapus melemparkan NullPointerException (NPE) dan menyebabkan pekerjaan gagal. | 8.0.11-11.4 | 11.5 | Tingkatkan ke versi 11.5 atau versi selanjutnya. Atau, hindari menggunakan check-and-put pada stream yang memiliki operasi hapus. |
P2 | Konektor gagal melanjutkan dari checkpoint jika tabel dihapus dan dibuat ulang saat pekerjaan berjalan. | 11.0-11.2 | 11.3 | Di lingkungan pengujian, Anda dapat meningkatkan ke versi 11.3 atau versi selanjutnya untuk menghindari isu ini. Catatan: Menghapus tabel selama konsumsi Binlog memengaruhi kebenaran data. Oleh karena itu, hindari membangun ulang tabel selama konsumsi Binlog di lingkungan produksi. |
P1 | Membaca data RoaringBitmap melalui JDBC Binlog gagal dan melemparkan pengecualian penguraian. | 11.0-11.2 | 11.3 | Tingkatkan ke versi 11.3 atau versi selanjutnya. |
P1 | Saat mengonsumsi dari tabel partisi fisik, jika shard tidak memiliki data, konektor salah menginisialisasi Log Sequence Number (LSN) status ke 0. Hal ini menyebabkan kehilangan data saat pekerjaan dilanjutkan dari status ini. | Versi sebelum 8.0.10, 11.0-11.2 | 8.0.11, 11.3 | Tingkatkan ke versi 8.0.11, atau 11.3 atau versi selanjutnya. |
P1 | Menulis array TEXT yang berisi elemen null melemparkan NPE dan menyebabkan operasi penulisan gagal. | 11.0-11.1 | 11.2 | Tingkatkan ke versi 11.2 atau versi selanjutnya. Atau, pastikan array TEXT upstream tidak berisi elemen null. |
P1 | Konflik antara sufiks pembuatan partisi dan partisi dinamis menyebabkan pembuatan partisi gagal. | 11.0-11.2 | 11.3 | Tingkatkan ke versi 11.3 atau versi selanjutnya. |
P2 | Pengecualian yang tidak terkait data kotor dapat memicu kebijakan data kotor, menyebabkan pengecualian valid ditangani secara salah (misalnya, dibuang diam-diam). | 11.0-11.1 | 11.2 | Tingkatkan ke versi 11.2 atau versi selanjutnya. |
P1 | Untuk tabel sumber Integrasi Lengkap dan Inkremental, JDBC Binlog mulai mengonsumsi di LSN+1. Jika LSN saat ini sudah ada di checkpoint, melanjutkan darinya mungkin melewatkan satu catatan. | 8.0.10 dan versi sebelumnya | 8.0.11 | Tingkatkan ke versi 8.0.11. |
P2 | Dalam skenario CTAS, jika penghapusan kolom dan perubahan tipe terjadi dalam operasi yang sama, kesalahan normalisasi tipe menyebabkan perubahan skema gagal. | 8.0.10 dan versi sebelumnya | 8.0.11 | Tingkatkan ke versi 8.0.11. Atau, hindari menghapus kolom dan mengubah tipe dalam operasi yang sama. |
P2 | Saat menggunakan tabel dimensi katalog, validasi parameter Binlog oleh factory menyebabkan pengecualian positif palsu. | 8.0.10 dan versi sebelumnya | 8.0.11 | Tingkatkan ke versi 8.0.11. |
P2 | Dalam skenario multi-tabel, jumlah permintaan polling JDBC yang berlebihan menyebabkan SQL Gateway timeout. | 11.0-11.5 | 11.6 | Tingkatkan ke versi 11.6. Atau, kurangi jumlah tabel Hologres dalam satu pekerjaan. |
P2 | Saat mode FixedFE dipilih, jika tabel berisi tipe data yang tidak didukung oleh FixedFE, koneksi tidak secara otomatis menurunkan spesifikasi ke koneksi FE, menyebabkan pengecualian penulisan atau kueri. | 11.0-11.2 | 11.3 | Tingkatkan ke versi 11.3 atau versi selanjutnya. Atau, tentukan secara manual mode koneksi FE. |
P1 | Saat mengonsumsi Binlog dalam mode JDBC, pengecualian "Binlog Convert Failed" mungkin terjadi, atau pembacaan data dari beberapa shard bisa macet. Hal ini terjadi karena gateway instans Hologres memiliki masalah saat mengembalikan pengecualian timeout backend ke klien, menyebabkan operasi baca hang atau gagal dengan kesalahan penguraian. | N/A | N/A | Isu ini lebih mungkin terjadi saat tekanan balik pekerjaan tinggi. Jika pembacaan data macet, restart pekerjaan dan lanjutkan dari checkpoint terbaru. Untuk menyelesaikan isu ini sepenuhnya, tingkatkan instans Hologres Anda ke versi 2.2.21 atau versi selanjutnya. |
P2 | Pekerjaan diterapkan dengan lambat atau timeout. Analisis thread dump menunjukkan bahwa proses terjebak di GetTableSchema. | N/A | N/A | Isu ini dapat memiliki berbagai penyebab. Anda dapat melakukan troubleshooting dengan mengikuti langkah-langkah berikut:
|
P0 | Saat menulis data TEXT, JSON, atau JSONB ke Hologres dalam mode FixedFE (yang sesuai dengan mode jdbc_fixed konektor), karakter tidak valid dalam sumber data dapat melemparkan pengecualian tak terduga. Hal ini dapat menyebabkan node FE yang terhubung restart, mengganggu koneksi. | N/A | N/A | Jika Anda tidak dapat menjamin validitas string upstream, Anda harus menulis data dalam mode JDBC dan mengaktifkan pengaturan untuk tabel hasil. Parameter Atau, tingkatkan instans Hologres Anda ke versi 3.0 atau versi selanjutnya untuk terus menggunakan mode jdbc_fixed. |
P1 | Saat melakukan join one-to-many pada tabel dimensi JDBC, tugas Flink mungkin mengalami penggunaan memori tinggi atau kesalahan Out Of Memory (OOM). | N/A | N/A | Di Hologres V1.3, jika Anda menggunakan Untuk menyelesaikan isu ini sepenuhnya, tingkatkan instans Hologres Anda ke V2.0 atau versi selanjutnya. |
P1 | Pekerjaan Binlog melemparkan pengecualian | 8.0.4 | 8.0.9 | Mulai dari versi 8.0.9, pemeriksaan ID tabel tidak lagi diberlakukan. Sebagai gantinya, peringatan dicatat, yang memungkinkan pekerjaan dilanjutkan dari status terbaru. Namun, hindari membangun ulang tabel saat pekerjaan Binlog sedang berjalan, karena operasi ini menyebabkan semua data Binlog sebelumnya hilang. |
P2 | Tekanan balik terjadi saat pekerjaan berjalan. Thread dump menunjukkan bahwa pool eksekusi terjebak di metode close() atau start(). Hal ini dapat terjadi jika beberapa klien berbagi kolam koneksi yang sama, yang mungkin menyebabkan deadlock yang mencegah kolam koneksi ditutup dengan benar. | 8.0.5 | 8.0.9 | Tingkatkan versi konektor. |
P2 | Jika Anda menjalankan pekerjaan untuk konsumsi lengkap dan inkremental setelah melakukan operasi | 8.0.6 dan versi sebelumnya | 8.0.7 | Tingkatkan versi konektor atau tentukan waktu mulai untuk konsumsi inkremental. |
P1 | Jika tabel dimensi berisi banyak bidang, penerapan pekerjaan timeout. | 8.0.6 | 8.0.7 | Tingkatkan versi konektor. |
P0 | Saat parameter Catatan Isu ini tidak memengaruhi tabel sumber untuk Integrasi Lengkap dan Inkremental atau tabel sumber Binlog. | 8.0.5 dan versi sebelumnya | 8.0.6 | Tingkatkan versi konektor. |
P0 | Saat menulis data JSON atau JSONB ke Hologres dalam mode FixedFE (yang sesuai dengan mode | 8.0.5 dan versi sebelumnya | Tidak ada | Jika validitas string JSON atau JSONB upstream tidak dapat dijamin, gunakan mode JDBC untuk menulis data. |
P1 | Saat melakukan join one-to-many pada tabel dimensi JDBC, pengecualian internal seperti kegagalan koneksi tidak dilemparkan dengan benar. Hal ini dapat muncul sebagai tekanan balik pada node join asinkron, menyebabkan aliran data berhenti. Isu ini jarang terjadi. | 6.0.7 dan versi sebelumnya | 8.0.3 | Tingkatkan versi konektor. Anda juga dapat me-restart pekerjaan sebagai solusi sementara. |
P1 | Terjadi kebocoran memori saat mengonsumsi data Binlog dalam mode JDBC. Hal ini mungkin muncul sebagai laju konsumsi tinggi di awal pekerjaan, yang kemudian terus menurun. | 6.0.7 dan versi sebelumnya | 6.0.7 | Tingkatkan versi konektor. Untuk pekerjaan DataStream, Anda harus menggunakan dependensi versi 6.0.7-1. |
P0 | Saat menulis dalam mode JDBC, pengecualian yang ditangkap selama flush terjadwal (dikontrol oleh parameter jdbcWriteFlushInterval) tidak dilemparkan hingga catatan data berikutnya diproses. Jika trafik penulisan rendah, checkpoint mungkin berhasil dibuat meskipun pengecualian telah ditangkap tetapi belum dilemparkan. Jika kegagalan berikutnya terjadi, pekerjaan akan dilanjutkan dari checkpoint tidak valid ini, yang dapat menyebabkan kehilangan data. | 6.0.6 dan versi sebelumnya | 6.0.7 | Isu ini lebih mungkin terjadi dengan trafik rendah. Tingkatkan versi konektor, atau atur jdbcWriteFlushInterval lebih lama dari interval checkpoint. |
P2 | Saat mengonsumsi data Binlog dalam mode JDBC tanpa menyetel nama slot, sistem secara otomatis membuatnya. Jika nama tabel atau skema berisi karakter khusus, nama slot yang dihasilkan secara otomatis tidak valid dan menyebabkan kesalahan sintaks. | 6.0.6 | 6.0.7 | Tingkatkan versi konektor. Untuk pekerjaan DataStream, Anda harus menggunakan dependensi versi 6.0.7-1. |
P1 | Jika instans atau database Hologres berbeda dalam pekerjaan yang sama menggunakan | 6.0.6 dan versi sebelumnya | 6.0.7 | Gunakan |
P1 | NPE dilemparkan jika tabel dimensi berisi bidang string dengan nilai | 6.0.6 | 6.0.7 | Tingkatkan versi konektor. |
P0 | Filter pushdown diaktifkan secara default untuk tabel sumber Hologres. Namun, jika pekerjaan juga menggunakan tabel dimensi Hologres, dan DML penulisan berisi filter pada bidang non-kunci primer tabel dimensi, filter tersebut juga salah didorong ke tabel dimensi. Hal ini dapat menyebabkan hasil join tabel dimensi salah. | 6.0.3-6.0.5 | 6.0.6 | Tingkatkan versi konektor. |
P0 | Jika beberapa tabel hasil memiliki pengaturan | 6.0.2 dan versi sebelumnya | 6.0.3 | Atur |
P1 | NPE dilemparkan jika bidang | 6.0.2 | 6.0.3 | Jangan gunakan bidang ini, atau tingkatkan versi konektor. |
P1 | Pelaporan metrik memengaruhi performa penulisan tabel hasil. | 4.0.15-4.0.17 | 4.0.18 | Gunakan versi yang tidak terpengaruh oleh isu ini. |
P2 | Saat membaca data tipe STRING atau STRING ARRAY dari tabel sumber batch, penguraian gagal jika data berisi karakter khusus. | 4.0.14 dan versi sebelumnya | 4.0.15 | Hapus data kotor dari tabel sumber, atau tingkatkan versi konektor. |
P2 | Jika Anda mendeklarasikan bidang khusus Binlog, seperti | 4.0.13 | 4.0.14 | Hindari menggunakan fitur Integrasi Lengkap dan Inkremental, atau tingkatkan versi konektor. |