Anda dapat menggunakan Insight Dataflow untuk membantu mengoptimalkan performa tugas.
Topik ini menunjukkan cara berinteraksi dengan Insight Dataflow menggunakan gcloud atau REST API. Anda juga dapat meninjau Insight di
Konsol Dataflow. Untuk mengetahui informasi selengkapnya tentang cara meninjau Insight di Konsol, lihat Rekomendasi.
Ringkasan
Insight Dataflow memberikan
insight tentang cara meningkatkan performa
tugas, mengurangi biaya, dan memecahkan masalah error. Insight Dataflow adalah
bagian dari layanan Recommender dan tersedia
melalui jenis google.dataflow.diagnostics.Insight.
Saat Anda menggunakan Insight Dataflow, perlu diingat bahwa beberapa rekomendasi mungkin tidak relevan dengan kasus penggunaan Anda.
Sebelum memulai
Sebelum dapat mulai menggunakan Insight Dataflow, Anda harus menyelesaikan langkah-langkah berikut.
- Aktifkan Recommender API.
Menyiapkan autentikasi.
Select the tab for how you plan to use the samples on this page:
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
REST
Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.
Instal Google Cloud CLI. Setelah penginstalan, inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:
gcloud initJika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
Untuk mengetahui informasi selengkapnya, lihat Melakukan autentikasi untuk menggunakan REST dalam dokumentasi autentikasi Google Cloud .
Pastikan akun Anda memiliki izin berikut:
recommender.dataflowDiagnosticsInsights.getrecommender.dataflowDiagnosticsInsights.listrecommender.dataflowDiagnosticsInsights.update
Anda dapat memberikan izin ini satu per satu, atau Anda dapat memberikan salah satu peran berikut:
roles/recommender.dataflowDiagnosticsViewerroles/recommender.dataflowDiagnosticsAdminroles/dataflow.viewerroles/dataflow.developerroles/dataflow.admin
Meminta insight Dataflow
Anda dapat membuat daftar insight Dataflow seperti yang ditunjukkan di bawah. Untuk jenis interaksi insight lainnya, lihat panduan insight untuk Recommender API.
Mencantumkan insight Dataflow
Untuk mencantumkan semua insight Dataflow untuk project Anda di region tertentu, gunakan salah satu metode berikut:
gcloud
Anda dapat menggunakan perintah
gcloud recommender insights listuntuk melihat semua insight Dataflow untuk project Anda di region tertentu.Sebelum menjalankan perintah, ganti nilai berikut:
- PROJECT_ID: ID project yang ingin Anda lihat daftar insight-nya.
- REGION: Region tempat tugas Dataflow Anda berjalan. Contoh:
us-west1.
gcloud recommender insights list --insight-type=google.dataflow.diagnostics.Insight \ --project=PROJECT_ID \ --location=REGION
Output mencantumkan semua insight Dataflow untuk project Anda di region yang ditentukan.
REST
Anda dapat menggunakan metode insights.list Recommender API untuk mencantumkan semua insight Dataflow untuk project Anda di region yang ditentukan.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: ID project yang ingin Anda lihat daftar insight-nya.
- REGION: Region tempat tugas Dataflow Anda berjalan. Contoh:
us-west1.
Metode HTTP dan URL:
GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/insightTypes/google.dataflow.diagnostics.Insight/insights
Untuk mengirim permintaan menggunakan curl (Linux, macOS, atau Cloud Shell), jalankan perintah berikut:
curl -X GET \ -H "Authorization: Bearer "$(gcloud auth print-access-token) \ "https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/insightTypes/google.dataflow.diagnostics.Insight/insights"
Mendapatkan satu insight Dataflow
Untuk mendapatkan informasi selengkapnya tentang satu insight, termasuk deskripsi, status, dan rekomendasi yang terkait dengannya, gunakan salah satu metode berikut:
gcloud
Gunakan perintah
gcloud recommender insights describedengan ID insight Anda untuk melihat informasi tentang satu insight. Sebelum menjalankan perintah, ganti nilai berikut:- INSIGHT_ID: ID insight yang ingin Anda lihat.
- PROJECT_ID: ID project yang ingin Anda lihat daftar insight-nya.
- REGION: Region tempat tugas Dataflow Anda berjalan. Contoh:
us-west1.
gcloud recommender insights describe INSIGHT_ID \ --insight-type=google.dataflow.diagnostics.Insight \ --project=PROJECT_ID \ --location=REGION
Output menampilkan insight secara mendetail.
REST
Metode insights.get Recommender API mendapatkan satu insight. Sebelum menggunakan data permintaan apa pun, lakukan penggantian berikut:
- PROJECT_ID: ID project yang ingin Anda lihat daftar insight-nya.
- REGION: Region tempat tugas Dataflow Anda berjalan. Contoh:
us-west1. - INSIGHT_ID: ID insight yang ingin Anda lihat.
Metode HTTP dan URL:
GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/insightTypes/google.dataflow.diagnostics.Insight/insights/INSIGHT_ID
Untuk mengirim permintaan menggunakan curl (Linux, macOS, atau Cloud Shell), jalankan perintah berikut:
curl -X GET \ -H "Authorization: Bearer "$(gcloud auth print-access-token) \ "https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/insightTypes/google.dataflow.diagnostics.Insight/insights/INSIGHT_ID"
Menafsirkan insight Dataflow
Setelah mendapatkan insight, Anda dapat meninjau kontennya untuk memahami pola penggunaan resource yang ditandainya. Selain atribut insight standar, Insight Dataflow menyediakan subjenis berikut:
AUTOSCALING_NOT_ENABLED: Penskalaan otomatis dapat diaktifkan. Tugas memiliki pemakaian CPU yang tinggi dan menggunakan jumlah maksimum pekerja yang ditetapkan. Mengaktifkan penskalaan otomatis dapat meningkatkan performa.HIGH_FAN_OUT: Pemecahan penggabungan dapat disisipkan setelah satu atau beberapa transformasi untuk meningkatkan paralelisme.MAX_NUM_WORKERS: Penskalaan otomatis: Jumlah maksimum pekerja dapat ditingkatkan. Tugas menggunakan penskalaan otomatis, memiliki penggunaan CPU yang tinggi, dan menggunakan jumlah maksimum pekerja yang ditetapkan. Meningkatkan jumlah maksimum pekerja dapat meningkatkan performa.WORKER_OUT_OF_MEMORY: Beberapa pekerja untuk tugas gagal karena kehabisan memori, yang dapat memperlambat tugas atau menyebabkan tugas gagal.PREBUILD_NOT_UTILIZED: Gunakan alur kerja pra-pembuatan image pekerja untuk meningkatkan waktu mulai pekerja dan keandalan penskalaan otomatis.ACTIVE_KEYS(Pratinjau): Jumlah total kunci aktif kurang dari jumlah total core dan penskalaan ke atas tidak akan membantu.LONG_WORK_ITEM: Pemrosesan pekerjaan dalam tahap gabungan memerlukan waktu terlalu lama, yang menunjukkan operasi berjalan lambat atau macet.
Untuk mempelajari lebih lanjut cara mengurangi masalah yang diidentifikasi oleh Insight Dataflow, lihat Insight.
Insight Dataflow juga menyediakan kolom
contentkhusus yang berisi sub-kolom dengan informasi dan metadata tambahan tentang insight. Bergantung pada kasus penggunaan Anda, sub-bidangcontentberikut mungkin berguna:jobName: Nama tugas Dataflow.description: Deskripsi insight dalam bahasa Inggris.title: Judul insight dalam bahasa Inggris.
Insight
Fan-out tinggi terdeteksi
Jika Dataflow mendeteksi bahwa tugas memiliki satu atau beberapa transformasi dengan fan-out tinggi, pesan berikut akan muncul:
High fan-out detectedPesan ini ditampilkan saat ParDo yang memiliki rasio jumlah elemen output terhadap input yang tinggi digabungkan dengan ParDo berikutnya. Dalam situasi ini, ParDo kedua berjalan secara berurutan dengan yang pertama, yang memaksa semua elemen output dari input tertentu ke pekerja yang sama dan mengurangi paralelisme serta memperlambat performa.
Untuk menyelesaikan masalah ini:
- Masukkan
GroupByKeydan pisahkan setelah ParDo pertama Anda. Layanan Dataflow tidak pernah menggabungkan operasi ParDo di seluruh agregasi. Untuk mengetahui informasi selengkapnya, lihat Pengoptimalan Fusion - Teruskan PCollection perantara sebagai input samping ke ParDo lain. Layanan Dataflow selalu mewujudkan input samping.
- Sisipkan langkah Acak Ulang. Pengacakan mencegah penggabungan, memeriksa data, dan mengonfigurasi ulang strategi windowing sehingga tidak ada data yang dihapus. Pengacakan ulang didukung oleh Dataflow meskipun ditandai tidak digunakan lagi dalam dokumentasi Apache Beam (perhatikan bahwa mengacak ulang data dapat meningkatkan biaya menjalankan pipeline Anda).
Penskalaan otomatis: Jumlah maksimum pekerja dapat ditingkatkan
Saat Dataflow mendeteksi bahwa tugas menggunakan jumlah maksimum worker yang diizinkan,
maxNumWorkers(ataumax_num_workers), dan tugas tersebut mungkin menggunakan lebih banyak worker jika jumlah maksimum ini ditingkatkan, pesan berikut akan muncul:maximum number of workers could be increasedMisalnya, rekomendasi ini muncul untuk tugas batch atau streaming yang memiliki
maxNumWorkersditetapkan ke 50 saat semua 50 pekerja digunakan dengan pemanfaatan CPU pekerja rata-rata di atas 80%. Rekomendasi ini juga muncul untuk tugas streaming yang memilikimaxNumWorkersyang ditetapkan ke 50 saat semua 50 pekerja digunakan dengan penggunaan CPU pekerja rata-rata di atas 50% dan tugas memiliki perkiraan waktu pemrosesan lebih dari 2 menit.Biasanya, peningkatan
maxNumWorkersakan meningkatkan throughput pipeline. Pipeline batch dapat diselesaikan dalam waktu yang lebih singkat, dan pipeline streaming dapat menangani lonjakan data yang lebih besar dan memproses lebih banyak elemen per detik. Namun, hal ini mungkin memerlukan biaya yang lebih tinggi. Untuk mengetahui informasi selengkapnya, lihat Harga resource worker. Untuk mengetahui detail tentang cara kerja algoritma Penskalaan otomatis dan cara mengonfigurasinya, lihat Panduan penskalaan otomatis.Untuk menyelesaikan masalah ini:
- Tambahkan atau hapus opsi pipeline
maxNumWorkers. Tanpa opsi ini, Dataflow akan menggunakan nilai default yang tercantum dalam Panduan penskalaan otomatis. - Tidak apa-apa untuk tidak melakukan apa pun jika performa pipeline sudah memadai.
- Untuk pipeline batch, pastikan total waktu berjalan memenuhi persyaratan Anda.
- Untuk pipeline streaming, periksa grafik Keaktualan data di tab Metrik Tugas pada halaman tugas. Pastikan nilai dalam grafik tidak terus meningkat dan berada dalam batas yang dapat diterima.
Penskalaan otomatis: Menetapkan jumlah pekerja awal dapat meningkatkan performa tugas
Jika Dataflow mendeteksi bahwa tugas menggunakan sejumlah pekerja tertentu selama lebih dari 50% waktu berjalan, menetapkan jumlah pekerja awal ke nilai yang direkomendasikan dapat meningkatkan performa tugas dengan mengurangi waktu berjalan untuk tugas batch atau mencegah backlog bertambah saat memperbarui tugas streaming.
Worker gagal dengan error OutOfMemory
Saat Dataflow mendeteksi bahwa pekerja untuk suatu tugas gagal karena error Kehabisan Memori, pesan berikut akan muncul:
Some workers are out of memoryBeberapa pekerja untuk tugas gagal karena kehabisan memori. Meskipun tugas dapat diselesaikan, error ini juga dapat mencegah tugas diselesaikan dengan berhasil atau memperlambat performa.
Coba saran berikut:
- Tingkatkan jumlah memori yang tersedia untuk pekerja secara manual.
- Kurangi jumlah memori yang diperlukan, dengan membuat profil penggunaan memori. Untuk mengetahui informasi selengkapnya, lihat Memecahkan masalah error kehabisan memori Dataflow.
Alur kerja pra-bangun tidak digunakan
Jika Dataflow mendeteksi pipeline yang tidak menggunakan alur kerja pra-pembuatan image pekerja, pesan berikut akan muncul:
pre-build workflow not utilizedJika alur kerja pra-pembuatan image pekerja tidak digunakan, pipeline memiliki dependensi yang diinstal berulang kali saat runtime. Konfigurasi ini memperlambat waktu mulai worker, yang menurunkan throughput tugas dan menyebabkan perilaku penskalaan otomatis yang tidak andal.
Untuk mengatasi masalah ini, gunakan alur kerja pra-build image pekerja saat meluncurkan pipeline. Untuk mengetahui informasi selengkapnya, lihat Membangun dependensi Python terlebih dahulu.
Jika container bawaan yang disesuaikan sudah digunakan, untuk menghindari penginstalan yang tidak perlu, tambahkan opsi '--sdk_location=container', dan hapus opsi berikut:
- '--setup_file'
- '--requirements_file'
- '--extra_package(s)'
Kunci aktif rendah
Jika Dataflow mendeteksi bahwa suatu tugas tertinggal karena jumlah kunci aktif kurang dari jumlah total core dan penskalaan tidak akan membantu, pesan berikut akan muncul:
Active keys can be increasedUntuk menjalankan kode pengguna dalam tugas, Dataflow menggunakan pekerja. Setiap thread dipetakan ke kunci yang bertanggung jawab atas sekumpulan data yang akan diproses dan kunci hanya dapat dijalankan pada satu core dalam satu waktu karena alasan kebenaran.
Dalam beberapa kasus, beberapa core bekerja terlalu keras sementara yang lain tidak digunakan. Untuk mengatasi masalah ini, tingkatkan jumlah kunci, yang juga akan meningkatkan jumlah thread aktif.
Solusi potensial untuk menambah kunci: - Anda dapat menambah jumlah kunci dengan menggunakan jenis kunci yang lebih spesifik. Misalnya, jika jenis kunci adalah
IP address, lebih sedikit kunci yang tersedia. Namun, jika Anda mengubah jenis kunci menjadiIP + [user identifier], lebih banyak kunci yang tersedia, sehingga meningkatkan paralelisme. - Untuk pipeline yang menulis ke BigQuery yang berpotensi mengalami hambatan di sink, lihat artikel ini. - Untuk sumber/tujuan lain, periksa apakah memiliki parameternumShardsdan tingkatkan. Secara umum, satu shard dipetakan ke satu kunci. - Untuk panduan yang lebih umum tentang model eksekusi kami, lihat artikel ini. - Fanout dapat digunakan untuk mengambil satu kunci input dan menambahkan hash ke kunci tersebut untuk menghasilkan beberapa kunci output. ReferensiMenghabiskan terlalu banyak waktu untuk bekerja
Saat Dataflow mendeteksi bahwa pekerjaan sering kali memerlukan waktu terlalu lama untuk menyelesaikan pemrosesan, pesan berikut akan muncul:
Stage spending too long on workDataflow mengirimkan tugas ke tahap gabungan dalam paket elemen yang akan diproses, dan setiap paket dianggap selesai setelah semua elemen dan outputnya diproses untuk tahap tersebut. Pipeline streaming dioptimalkan di sekitar kumpulan tugas yang memerlukan waktu kurang dari satu menit untuk diproses sepenuhnya, sehingga waktu pemrosesan yang lama dapat menyebabkan masalah performa lebih lanjut dalam pipeline.
Masalah ini dapat disebabkan oleh transformasi pengguna yang macet atau lambat. Transformasi ini dapat diidentifikasi melalui peringatan yang dikeluarkan di Cloud Logging dan tab Diagnostiknya, dengan frasa utama "Operasi sedang berlangsung" atau "Pemrosesan macet". Untuk mendiagnosis apakah masalah ini disebabkan oleh transformasi pengguna, gunakan Cloud Profiler untuk memeriksa performa transformasi pengguna. Kemudian, lacak kode yang menyebabkan perlambatan dan seberapa sering. Untuk mengetahui informasi selengkapnya, lihat Memecahkan Masalah Error Umum Dataflow.
Jika penyelidikan mengungkapkan bahwa waktu pemrosesan yang lama tidak disebabkan oleh transformasi pengguna, sebaiknya hubungi Dukungan Cloud dan jelaskan langkah-langkah yang telah dilakukan untuk menyelidiki.
Pekerjaan macet di item tugas
Saat Dataflow mendeteksi bahwa kunci macet karena satu item kerja gagal berulang kali lalu dicoba lagi, pesan berikut akan muncul:
Job is stuck due to failed and retried work itemDi Dataflow, semua pesan dalam pipeline diproses dengan kunci tertentu. Jika terjadi error saat memproses pesan, pesan tersebut akan dicoba lagi. Pesan dapat dicoba lagi dua atau tiga kali. Namun, jika error terjadi berulang kali, seperti sepuluh kali berturut-turut, biasanya hal ini menunjukkan masalah mendasar pada kode pipeline. Saat pesan tertentu pada kunci dicoba lagi, pesan lain dengan kunci yang sama tidak dapat diproses. Jika pesan gagal dikirim 10 kali atau lebih, masalah ini kemungkinan tidak akan terselesaikan dengan sendirinya. Kegagalan pesan ini dapat menyebabkan masalah pipeline seperti:
- menunda watermark
- backlog yang terakumulasi
- mencegah operasi pengurasan selesai
Untuk men-debug masalah ini, selidiki tahap yang dilaporkan rekomendasi dan tinjau log untuk mengidentifikasi kode yang bermasalah. Kemudian, perbarui tugas dengan kode pipeline baru agar tugas tidak macet.
Streaming Engine tidak diaktifkan
Saat Dataflow mendeteksi bahwa tugas streaming tidak mengaktifkan Streaming Engine, pesan berikut akan muncul:
This job isn't using Streaming Engine. It might benefit from having Streaming Engine enabled.Penggunaan Streaming Engine memiliki berbagai potensi manfaat, termasuk penskalaan otomatis horizontal yang lebih baik, dukungan yang lebih baik, dan pengurangan penggunaan resource CPU, memori, dan penyimpanan Persistent Disk di VM pekerja. Streaming Engine juga mendukung penagihan berbasis resource.
Partisi Kafka rendah
Jika Dataflow mendeteksi bahwa tugas streaming membaca dari Kafka dan kunci tahap baca diidentifikasi sebagai hambatan, pesan berikut akan muncul:
The partition count provided by the Kafka source is too low, consider increasing partitions or redistributing to more keys.Sebaiknya tingkatkan jumlah partisi, atau sertakan transformasi Distribusikan ulang
withRedistribute()dan pertimbangkan mode penghapusan duplikat offsetwithOffsetDeduplication(). Untuk informasi tambahan tentang praktik terbaik paralelisme Kafka Read, lihat Membaca dari Kafka.Biaya persistensi Kafka
Jika Dataflow mendeteksi bahwa tugas streaming membaca dari Kafka dengan Redistribute dan biaya untuk mempertahankan output tinggi, pesan berikut akan muncul:
Redistribute requires persistence of Kafka outputs as part of the shuffle phase, consider reducing latency and cost with offset deduplication mode.Untuk meminimalkan latensi dan biaya pengacakan, gunakan mode penghapusan duplikat offset
withOffsetDeduplication(). Untuk mengetahui informasi tambahan tentang praktik terbaik membaca Kafka untuk paralelisme, lihat Membaca dari Kafka.Kecuali dinyatakan lain, konten di halaman ini dilisensikan berdasarkan Lisensi Creative Commons Attribution 4.0, sedangkan contoh kode dilisensikan berdasarkan Lisensi Apache 2.0. Untuk mengetahui informasi selengkapnya, lihat Kebijakan Situs Google Developers. Java adalah merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-12-04 UTC.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Sulit dipahami","hardToUnderstand","thumb-down"],["Informasi atau kode contoh salah","incorrectInformationOrSampleCode","thumb-down"],["Informasi/contoh yang saya butuhkan tidak ada","missingTheInformationSamplesINeed","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-12-04 UTC."],[],[]]