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 menjalankan tugas BigQuery, berikan peran Pengguna Tugas BigQuery (
roles/bigquery.jobUser
).Untuk membaca set data BigQuery, berikan peran BigQuery Data Viewer (
roles/bigquery.dataViewer
).Untuk membuat bucket sementara, berikan peran Storage Admin (
roles/storage.admin
).Untuk membuat set data atau tabel BigQuery, berikan peran BigQuery Data Editor (
roles/bigquery.dataEditor
).
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:
Dapatkan setiap project ID tempat cluster dibuat:
Pada argumen runtime pipeline, periksa apakah project ID Dataproc disesuaikan untuk dijalankan.
Jika project ID Dataproc tidak ditentukan secara eksplisit, tentukan penyedia mana yang digunakan, lalu periksa project ID:
Di argumen runtime pipeline, periksa nilai
system.profile.name
.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.
Untuk setiap project:
Buka project di Konsol Google Cloud, lalu buka halaman Clusters Dataproc.
Urutkan cluster berdasarkan tanggal pembuatannya, dari yang terlama hingga terbaru.
Jika panel info disembunyikan, klik Tampilkan panel info, lalu buka tab Label.
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.
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:
- Buka pipeline Anda di antarmuka web Cloud Data Fusion.
- Di argumen runtime pipeline, tetapkan
system.profile.properties.secondaryWorkerNumNodes
ke0
. - Klik Simpan.
- Jika Anda menggunakan namespace, nonaktifkan pekerja sekunder dalam namespace:
- Klik System Admin > Namespace, lalu pilih namespace.
- Klik Preferensi > Edit.
- Tetapkan nilai untuk
system.profile.properties.secondaryWorkerNumNodes
ke0
. - Klik Save and Close.
Jika Anda menggunakan penyedia Dataproc yang ada, atasi error tersebut dengan langkah-langkah berikut:
Di Konsol Google Cloud, buka halaman Cluster Dataproc.
Pilih cluster, lalu klik
Edit.Di kolom Secondary worker node, masukkan
0
.Klik Simpan.