全部产品
Search
文档中心

MaxCompute:FAQ tentang optimalisasi file kecil dan diagnostik pekerjaan

更新时间:Jul 06, 2025

Topik ini memberikan jawaban atas beberapa pertanyaan umum mengenai optimalisasi file kecil dan diagnostik pekerjaan.

Kategori

FAQ

Optimalisasi file kecil

Dalam skenario apa file kecil dibuat untuk MaxCompute? Bagaimana cara menyelesaikan masalah file kecil?

Diagnostik pekerjaan

Dalam skenario apa file kecil dibuat untuk MaxCompute? Bagaimana cara menyelesaikan masalah file kecil?

  • Skenario:

    MaxCompute menggunakan Apsara Distributed File System (Pangu) untuk penyimpanan blok. Umumnya, file dengan ukuran lebih kecil dari ukuran blok dianggap sebagai file kecil. Ukuran blok default adalah 64 MB.

    File kecil dapat dibuat dalam skenario berikut:

    • Sejumlah besar file kecil dibuat pada tahap Reduce.

    • File kecil dibuat selama pengumpulan data berbasis Tunnel.

    • File sementara yang dihasilkan selama eksekusi pekerjaan dan file kedaluwarsa yang disimpan di tempat sampah mungkin merupakan file kecil. File-file tersebut diklasifikasikan menjadi jenis-jenis berikut:

      • TABLE_BACKUP: tabel-tabel yang disimpan di tempat sampah selama lebih dari jumlah hari tertentu.

      • FUXI_JOB_TMP: direktori sementara yang dihasilkan ketika pekerjaan sedang berjalan.

      • TMP_TABLE: tabel sementara yang dihasilkan ketika pekerjaan sedang berjalan.

      • INSTANCE: log yang disimpan di tabel metadata ketika pekerjaan sedang berjalan.

      • LIFECYCLE: tabel atau partisi yang mencapai akhir siklus hidup.

      • INSTANCEPROFILE: informasi profil setelah pekerjaan dikirim dan dieksekusi.

      • VOLUME_TMP: data yang tidak memiliki informasi metadata dan memiliki direktori yang dipetakan pada Apsara Distributed File System (Pangu).

      • TEMPRESOURCE: file sumber daya sementara sekali pakai yang digunakan oleh fungsi yang ditentukan pengguna (UDF).

      • FAILOVER: file sementara yang tersisa ketika terjadi failover sistem.

    Anda dapat menjalankan perintah berikut untuk memeriksa jumlah file kecil dalam sebuah tabel:

    desc extended + Nama Tabel          
  • Dampak:

    Sejumlah besar file kecil memiliki dampak berikut:

    • Pengaktifan instance peta terpengaruh secara negatif. Secara default, satu file kecil sesuai dengan satu instance. Sejumlah besar file kecil mengakibatkan pemborosan sumber daya dan mempengaruhi kinerja eksekusi secara keseluruhan.

    • Sejumlah besar file kecil menyebabkan beban tinggi pada Apsara Distributed File System (Pangu) dan mempengaruhi penggunaan ruang penyimpanan secara efisien. Dalam kasus ekstrem, Apsara Distributed File System (Pangu) mungkin menjadi tidak tersedia.

  • Solusi:

    Berbagai solusi disediakan untuk menangani file kecil yang dihasilkan dalam skenario yang berbeda.

    • File kecil yang dihasilkan pada tahap Reduce: Jalankan pernyataan INSERT OVERWRITE pada tabel atau partisi sumber atau tulis data ke tabel baru dan hapus tabel sumber.

    • File kecil yang dihasilkan selama pengumpulan data berbasis Tunnel:

      • Saat Anda memanggil SDK Tunnel, unggah file setiap kali cache file mencapai 64 MB.

      • Saat menggunakan klien MaxCompute, hindari sering mengunggah file kecil. Kami sarankan Anda mengunggah file pada waktu yang sama ketika sejumlah besar file dikumpulkan.

      • Saat mengimpor data ke tabel berpartisi, konfigurasikan siklus hidup untuk partisi dalam tabel agar data yang kedaluwarsa dapat dibersihkan secara otomatis.

      • Jalankan pernyataan INSERT OVERWRITE pada tabel atau partisi sumber.

      • Jalankan perintah berikut untuk menggabungkan file kecil:

        ALTER TABLE tablename [PARTITION] MERGE SMALLFILES;                         

Apa yang harus saya lakukan jika terjadi kesalahan saat melakukan operasi insert bersamaan?

  • Deskripsi Masalah

    Pesan kesalahan berikut dikembalikan saat operasi insert bersamaan dilakukan:

    ODPS-0110999: Kritis! Terjadi kesalahan internal dalam operasi commit dan rollback gagal, kemungkinan pelanggaran atomicity - Gagal mengganti nama direktori selama DDLTask.       
  • Penyebab yang Mungkin

    MaxCompute tidak mendukung kontrol konkurensi. Beberapa pekerjaan mungkin dilakukan pada saat yang sama untuk memodifikasi tabel. Dalam hal ini, konflik konkurensi terjadi dengan probabilitas rendah ketika operasi pada modul META dilakukan. Akibatnya, pesan kesalahan dikembalikan. Masalah ini juga terjadi ketika operasi ALTER dan INSERT dilakukan pada saat yang sama.

  • Solusi

    Kami sarankan Anda mengubah tabel menjadi tabel berpartisi untuk memastikan bahwa setiap pernyataan SQL memasukkan data ke partisi terpisah. Dengan cara ini, Anda dapat melakukan operasi bersamaan pada tabel.

Apa yang harus saya lakukan jika kesalahan ODPS-0130121 dilaporkan saat pekerjaan sedang berjalan?

  • Deskripsi Masalah

    Saat pekerjaan sedang berjalan, pesan kesalahan berikut dikembalikan:

    GAGAL:ODPS-0130121:Jenis argumen tidak valid - baris 1:7 'testfunc':di dalam fungsi kelas
  • Penyebab yang Mungkin

    Tipe data parameter input untuk fungsi bawaan tidak valid.

  • Solusi

    Kami sarankan Anda memeriksa tipe data parameter input untuk memastikan bahwa tipe data memenuhi persyaratan untuk parameter input fungsi bawaan.

Ketika saya melihat properti tugas di DataWorks Operation Center, status tugas yang ditampilkan adalah ditangguhkan. Mengapa?

Periksa apakah tugas dimulai berdasarkan konfigurasi proyek.

  • Jika tugas dimulai, periksa apakah tugas leluhur dari tugas tersebut gagal.

  • Jika tugas tidak dimulai, klik kanan node pekerja untuk memeriksa apakah node tersebut berjalan dengan benar atau ubah nama tugas dan konfigurasikan properti penjadwalan.

Ketika saya melakukan operasi di DataWorks Data Integration, selalu muncul pesan di pojok kanan atas dan meminta saya memeriksa apakah bidang Order dihapus. Mengapa?

Periksa apakah bidang Order di database dihapus.

Hapus cache, rekonfigurasi atau buat ulang tugas sinkronisasi, dan kemudian verifikasi status tugas lagi.

Ketika saya menjalankan perintah odpscmd -f untuk mengeksekusi file SQL, eksekusi gagal tetapi tidak ada pesan kesalahan yang dikembalikan. Apa yang harus saya lakukan?

Peroleh log runtime atau pesan kesalahan tugas untuk mengidentifikasi penyebab masalah.

Gunakan Shell untuk menjalankan perintah odpscmd -f untuk mencetak log ke Shell. Informasi log menunjukkan bahwa panggilan normal di Shell. Kesalahan dilaporkan dan tidak ada log yang dihasilkan saat panggilan dilakukan di crontab.

Untuk menangani masalah ini, rekam output eksekusi tugas di crontab. Jika terjadi masalah, peroleh log tugas dari file log. Perintah yang Anda jalankan adalah odpscmd -f xxx.sql >> path/to/odpscmd.log 2>&1.

Ketika saya menggunakan DataWorks, sejumlah besar tugas sinkronisasi data berada dalam keadaan menunggu. Mengapa?

Jika tugas sinkronisasi berada dalam keadaan menunggu saat mereka menggunakan sumber daya penjadwalan bersama, optimalkan tugas sinkronisasi batch untuk memaksimalkan kecepatan sinkronisasi.

Anda juga dapat menambahkan sumber daya penjadwalan. Untuk informasi lebih lanjut, lihat Buat dan gunakan grup sumber daya kustom untuk Data Integration.

Ketika tugas Shell dieksekusi, salah satu server yang ditambahkan dengan menggunakan fitur manajemen sumber daya penjadwalan selalu ditampilkan dalam keadaan berhenti. Server tersebut masih dalam keadaan berhenti bahkan setelah re-inisialisasi. Mengapa?

  • Jika jaringan interkoneksi produk cloud digunakan, periksa apakah nama mesin dalam informasi pendaftaran adalah nama asli mesin. Anda dapat menjalankan perintah hostname pada Instance ECS untuk mendapatkan nama mesin. Nama kustom tidak didukung.

  • Jika virtual private cloud (VPC) digunakan, periksa apakah hostname ECS dimodifikasi. Harap diperhatikan bahwa hostname ECS tidak sama dengan nama instance. Jika hostname ECS dimodifikasi, jalankan perintah cat /etc/hosts pada Instance ECS untuk memeriksa apakah binding valid.