Memecahkan masalah Cloud Data Fusion

Halaman ini menunjukkan cara menyelesaikan masalah pada Cloud Data Fusion.

Memecahkan masalah pipeline batch

Saran berikut ditujukan untuk pipeline batch.

Pipeline serentak terhenti

Di Cloud Data Fusion, menjalankan banyak pipeline batch secara serentak dapat membebani instance, yang menyebabkan tugas macet dalam status Starting, Provisioning, atau Running. Akibatnya, pipeline tidak dapat dihentikan melalui antarmuka web atau panggilan API. Saat Anda menjalankan banyak pipeline secara serentak, antarmuka web dapat menjadi lambat atau tidak responsif. Masalah ini terjadi karena beberapa permintaan UI yang dibuat ke pengendali HTTP di backend.

Rekomendasi

Untuk mengatasi masalah ini, kontrol jumlah permintaan baru menggunakan kontrol alur Cloud Data Fusion, yang tersedia dalam instance yang berjalan dalam versi 6.6 dan yang lebih baru.

Waktu koneksi SSH habis saat pipeline berjalan

Error berikut terjadi saat Anda menjalankan pipeline batch:

`java.io.IOException: com.jcraft.jsch.JSchException:
java.net.ConnectException: Connection timed out (Connection timed out)`

Rekomendasi

Untuk mengatasi error tersebut, periksa masalah berikut:

  • Periksa aturan firewall yang tidak ada (biasanya port 22). Untuk membuat aturan firewall baru, lihat Konfigurasi jaringan cluster Dataproc
  • Pastikan pelaksana Compute Engine mengizinkan koneksi antara instance Cloud Data Fusion dan cluster Dataproc.

Kode respons: 401. Error: error tidak diketahui

Error berikut terjadi saat Anda menjalankan pipeline batch:

`java.io.IOException: Failed to send message for program run program_run:
Response code: 401. Error: unknown error`

Rekomendasi

Untuk mengatasi error ini, Anda harus memberikan peran Cloud Data Fusion Runner (roles/datafusion.runner) ke akun layanan yang digunakan oleh Dataproc.

Pipeline dengan plugin BigQuery gagal dengan Access Denied error

Ada masalah umum saat pipeline gagal dengan error Access Denied saat menjalankan tugas BigQuery. Hal ini memengaruhi pipeline yang menggunakan plugin berikut:

  • Sumber BigQuery
  • Sink BigQuery
  • Sink Multi-Tabel BigQuery
  • Dorongan Transformasi

Contoh error di log (mungkin berbeda, bergantung pada plugin yang Anda gunakan):

POST https://bigquery.googleapis.com/bigquery/v2/projects/PROJECT_ID/jobs
{
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "Access Denied: Project xxxx: User does not have bigquery.jobs.create permission in project PROJECT_ID",
"reason" : "accessDenied"
} ],
"message" : "Access Denied: Project PROJECT_ID: User does not have bigquery.jobs.create permission in project PROJECT_ID.",
"status" : "PERMISSION_DENIED"
}

Dalam contoh ini, PROJECT_ID adalah project ID yang Anda tentukan dalam plugin. Akun layanan untuk project yang ditentukan dalam plugin tidak memiliki izin untuk melakukan setidaknya salah satu hal berikut:

  • Menjalankan tugas BigQuery
  • Membaca set data BigQuery
  • Membuat bucket sementara
  • Membuat set data BigQuery
  • Membuat tabel BigQuery

Rekomendasi

Untuk mengatasi masalah ini, berikan peran yang tidak ada ke project (PROJECT_ID) yang Anda tentukan di plugin:

Untuk mengetahui informasi selengkapnya, lihat dokumentasi pemecahan masalah plugin (Pemecahan Masalah Google BigQuery Multi Table Sink).

Pipeline tidak berhenti pada batas error

Pipeline mungkin tidak berhenti setelah terjadi beberapa error, meskipun Anda menetapkan batas error ke 1.

Batas error ditujukan untuk setiap pengecualian yang dimunculkan dari perintah jika terjadi kegagalan yang tidak ditangani. Jika perintah tersebut sudah menggunakan emitError API, batas error tidak akan diaktifkan.

Rekomendasi

Untuk mendesain pipeline yang gagal saat batas tertentu tercapai, gunakan perintah FAIL.

Setiap kali kondisi yang diteruskan ke perintah FAIL terpenuhi, kondisi tersebut akan dihitung dalam batas error dan pipeline gagal setelah batas tercapai.

Plugin sumber batch Oracle mengonversi NUMBER menjadi string

Dalam sumber batch Oracle versi 1.9.0, 1.8.3, dan yang lebih lama, jenis data NUMBER Oracle, dengan presisi dan skala yang tidak ditentukan, dipetakan ke jenis data decimal(38,0) CDAP.

Plugin versi 1.9.1, 1.8.4, dan 1.8.5 tidak kompatibel dengan versi sebelumnya, dan pipeline yang menggunakan versi sebelumnya mungkin tidak berfungsi setelah mengupgrade ke versi 1.9.1, 1.8.5, dan 1.8.4, jika tahap downstream dalam pipeline bergantung pada skema output sumber karena skema output telah berubah. Jika ada skema output yang ditentukan untuk jenis data NUMBER Oracle yang ditentukan tanpa presisi dan skala dalam versi plugin sebelumnya, setelah mengupgrade ke versi 1.9.1, 1.8.5, atau 1.8.4, plugin sumber batch Oracle akan menampilkan error ketidakcocokan skema berikut untuk jenis tersebut: Schema field '<field name>' is expected to have type 'decimal with precision <precision> and scale <scale> but found 'string'. Change the data type of field <field name> to string.

Versi 1.9.1, 1.8.5, dan 1.8.4 akan berfungsi dengan skema output jenis data string CDAP untuk jenis data NUMBER Oracle yang ditentukan tanpa presisi dan skala. Jika ada jenis data NUMBER Oracle yang ditentukan tanpa presisi dan skala yang ada dalam skema output sumber Oracle, penggunaan plugin Oracle versi lama tidak direkomendasikan karena dapat menyebabkan error pembulatan.

Kasus khususnya adalah ketika Anda menggunakan makro untuk nama database, nama skema, atau nama tabel, dan jika Anda belum menentukan skema output secara manual. Skema terdeteksi dan dipetakan pada runtime. Versi lama plugin sumber batch Oracle memetakan jenis data NUMBER Oracle yang ditentukan tanpa presisi dan skala ke jenis data decimal(38,0) CDAP, sedangkan versi 1.9.1, 1.8.5, dan 1.8.4 dan yang lebih baru memetakan jenis data ke string pada saat runtime.

Rekomendasi

Untuk mengatasi kemungkinan masalah kehilangan presisi saat menggunakan jenis data NUMBER Oracle dengan presisi dan skala yang tidak ditentukan, upgrade pipeline Anda untuk menggunakan plugin sumber batch Oracle versi 1.9.1, 1.8.5, atau 1.8.4.

Setelah upgrade, jenis data NUMBER Oracle yang ditetapkan tanpa presisi dan skala dipetakan ke jenis data string CDAP saat runtime. Jika Anda memiliki tahap downstream atau sink yang menggunakan jenis data decimal CDAP asli (yang mana jenis data NUMBER Oracle yang ditentukan tanpa presisi dan skalanya dipetakan), update data tersebut atau harapkan data tersebut akan menggunakan data string.

Jika Anda memahami risiko kemungkinan kehilangan data karena error pembulatan, tetapi memilih untuk menggunakan jenis data Oracle NUMBER yang ditentukan tanpa presisi dan skala sebagai jenis data decimal(38,0) CDAP, deploy plugin Oracle versi 1.8.6 (untuk Cloud Data Fusion 6.7.3) atau 1.9.2 (untuk Cloud Data Fusion 6.8.1) dari Hub, dan perbarui pipeline agar dapat menggunakannya.

Untuk informasi selengkapnya, lihat referensi Sumber Batch Oracle.

Menghapus cluster Dataproc efemeral

Saat Cloud Data Fusion membuat cluster Dataproc efemeral selama penyediaan operasi pipeline, cluster akan dihapus setelah pipeline dijalankan selesai. Dalam kasus yang jarang terjadi, penghapusan cluster gagal.

Sangat direkomendasikan: Upgrade ke versi Cloud Data Fusion terbaru untuk memastikan pemeliharaan cluster yang tepat.

Tetapkan Waktu Tidak Ada Aktivitas Maks

Untuk mengatasi masalah ini, konfigurasikan opsi Max Idle Time. Hal ini memungkinkan Dataproc menghapus cluster secara otomatis, meskipun panggilan eksplisit pada penyelesaian pipeline gagal.

Max Idle Time tersedia di Cloud Data Fusion versi 6.4 dan yang lebih baru.

Direkomendasikan: Untuk versi sebelum 6.6, setel Max Idle Time secara manual ke 30 menit atau lebih.

Hapus cluster secara manual

Jika Anda tidak dapat mengupgrade versi atau mengonfigurasi opsi Max Idle Time, hapus cluster lama secara manual:

  1. Dapatkan setiap project ID tempat cluster dibuat:

    1. Pada argumen runtime pipeline, periksa apakah project ID Dataproc disesuaikan untuk dijalankan.

      Memeriksa apakah project ID Dataproc disesuaikan untuk dijalankan

    2. Jika project ID Dataproc tidak ditentukan secara eksplisit, tentukan penyedia mana yang digunakan, lalu periksa project ID:

      1. Di argumen runtime pipeline, periksa nilai system.profile.name.

        Mendapatkan nama penyedia dalam argumen runtime

      2. Buka setelan penyedia dan periksa apakah project ID Dataproc sudah ditetapkan. Jika setelan tidak ada atau kolom kosong, project tempat instance Cloud Data Fusion berjalan akan digunakan.

  2. Untuk setiap project:

    1. Buka project di Konsol Google Cloud, lalu buka halaman Clusters Dataproc.

      Buka Cluster

    2. Urutkan cluster berdasarkan tanggal pembuatannya, dari yang terlama hingga terbaru.

    3. Jika panel info disembunyikan, klik Tampilkan panel info, lalu buka tab Label.

    4. Untuk setiap cluster yang tidak digunakan—misalnya, lebih dari satu hari telah berlalu—periksa apakah cluster tersebut memiliki label versi Cloud Data Fusion. Hal tersebut merupakan indikasi bahwa lingkungan dibuat oleh Cloud Data Fusion.

    5. Centang kotak di samping nama cluster, lalu klik Hapus.

Tidak dapat membuat instance Cloud Data Fusion

Saat membuat instance Cloud Data Fusion, Anda mungkin mengalami masalah berikut:

Read access to project PROJECT_NAME was denied.

Rekomendasi

Untuk mengatasi masalah ini, nonaktifkan dan aktifkan kembali Cloud Data Fusion API. Kemudian, buat instance.

Pipeline gagal saat dijalankan di cluster Dataproc dengan pekerja sekunder

Di Cloud Data Fusion versi 6.8 dan 6.9, terjadi masalah yang menyebabkan pipeline gagal jika dijalankan di cluster Dataproc tempat pekerja sekunder diaktifkan:

ERROR [provisioning-task-2:i.c.c.i.p.t.ProvisioningTask@161] - PROVISION task failed in REQUESTING_CREATE state for program run program_run:default.APP_NAME.UUID.workflow.DataPipelineWorkflow.RUN_ID due to
Caused by: io.grpc.StatusRuntimeException: CANCELLED: Failed to read message.
Caused by: com.google.protobuf.GeneratedMessageV3$Builder.parseUnknownField(Lcom/google/protobuf/CodedInputStream;Lcom/google/protobuf/ExtensionRegistryLite;I)Z.

Rekomendasi

Untuk mengatasi masalah ini, upgrade ke revisi patch 6.8.3.1, 6.9.2.1, atau yang lebih baru. Jika tidak dapat mengupgrade, hapus node pekerja sekunder dengan cara berikut.

Jika Anda menggunakan penyedia Dataproc efemeral, atasi error tersebut dengan langkah-langkah berikut:

  1. Buka pipeline Anda di antarmuka web Cloud Data Fusion.
  2. Di argumen runtime pipeline, tetapkan system.profile.properties.secondaryWorkerNumNodes ke 0. Menetapkan argumen runtime.
  3. Klik Simpan.
  4. Jika Anda menggunakan namespace, nonaktifkan pekerja sekunder dalam namespace:
    1. Klik System Admin > Namespace, lalu pilih namespace.
    2. Klik Preferensi > Edit.
    3. Tetapkan nilai untuk system.profile.properties.secondaryWorkerNumNodes ke 0. Menonaktifkan pekerja sekunder di namespace.
    4. Klik Save and Close.

Jika Anda menggunakan penyedia Dataproc yang ada, atasi error tersebut dengan langkah-langkah berikut:

  1. Di Konsol Google Cloud, buka halaman Cluster Dataproc.

    Buka Cluster

  2. Pilih cluster, lalu klik Edit.

  3. Di kolom Secondary worker node, masukkan 0. Mengedit node pekerja sekunder di konsol.

  4. Klik Simpan.