全部产品
Search
文档中心

E-MapReduce:Celeborn

更新时间:Jul 02, 2025

Celeborn adalah layanan yang memproses data perantara dan meningkatkan stabilitas, fleksibilitas, serta performa mesin komputasi data besar. Topik ini menjelaskan cara menggunakan layanan Celeborn.

Informasi latar belakang

Solusi shuffle saat ini memiliki kekurangan berikut:

  • Terjadi overflow data jika ada sejumlah besar data dalam tugas penulisan shuffle, menyebabkan amplifikasi tulis.

  • Banyak paket jaringan berukuran kecil dalam tugas pembacaan shuffle, menyebabkan reset koneksi.

  • Banyak permintaan I/O berukuran kecil dan pembacaan acak dalam tugas pembacaan shuffle, menyebabkan beban disk dan CPU yang tinggi.

  • Jika ribuan mapper (M) dan reducer (N) digunakan, sejumlah besar koneksi dihasilkan, membuat pekerjaan sulit untuk dijalankan. Jumlah koneksi dihitung dengan rumus berikut: M × N.

  • Layanan Spark shuffle berjalan pada NodeManager. Jika jumlah data yang terlibat dalam pengacakan sangat besar, NodeManager akan di-restart, memengaruhi stabilitas penjadwalan tugas berbasis YARN.

Layanan Celeborn mengoptimalkan solusi shuffle dengan keunggulan berikut:

  • Mengurangi tekanan memori yang disebabkan oleh mapper dengan menggunakan shuffle gaya push alih-alih shuffle gaya pull.

  • Mendukung agregasi I/O, mengurangi jumlah koneksi dalam tugas pembacaan shuffle dari M × N menjadi N, serta mengubah pembacaan acak menjadi pembacaan berurutan.

  • Menggunakan mekanisme dua-replika untuk mengurangi kemungkinan kegagalan fetch.

  • Mendukung pemisahan komputasi-penyimpanan. Layanan shuffle dapat diterapkan di lingkungan perangkat keras yang terpisah.

  • Menghilangkan ketergantungan pada disk lokal ketika Spark on Kubernetes digunakan.

Gambar berikut menunjukkan arsitektur Celeborn.Celeborn

Prasyarat

Cluster DataLake E-MapReduce (EMR) atau cluster kustom telah dibuat, dan layanan Celeborn dipilih untuk cluster tersebut. Untuk informasi lebih lanjut tentang cara membuat cluster, lihat Buat Cluster.

Batasan

Topik ini hanya berlaku untuk cluster yang dijelaskan dalam tabel berikut.

Cluster

Versi

Cluster DataLake

EMR V3.45.0 atau versi minor lebih baru, dan EMR V5.11.0 atau versi minor lebih baru

Cluster Kustom

EMR V3.45.0 atau versi minor lebih baru, dan EMR V5.11.0 atau versi minor lebih baru

Prosedur

Parameter Spark

Parameter

Deskripsi

spark.shuffle.manager

  • Untuk Celeborn 0.4.x atau lebih baru, atur nilainya menjadi org.apache.spark.shuffle.celeborn.SparkShuffleManager.

  • Untuk Celeborn 0.3.x atau lebih lama, atur nilainya menjadi org.apache.spark.shuffle.celeborn.RssShuffleManager.

spark.serializer

Atur nilainya menjadi org.apache.spark.serializer.KryoSerializer.

spark.celeborn.push.replicate.enabled

Menentukan apakah fitur dua-replika diaktifkan. Nilai valid:

  • true: mengaktifkan fitur dua-replika. Ini adalah nilai default.

  • false: menonaktifkan fitur dua-replika.

spark.shuffle.service.enabled

Ubah nilai parameter ini menjadi false.

Untuk menggunakan Celeborn, Anda harus menonaktifkan layanan shuffle eksternal. Celeborn tidak memengaruhi penggunaan fitur alokasi dinamis Spark.

Catatan
  • Jika Anda mengatur parameter spark.shuffle.service.enabled menjadi true, Celeborn tidak digunakan.

  • Spark Alibaba Cloud dan Spark sumber terbuka 3.5 adaptif terhadap Celeborn.

spark.celeborn.shuffle.writer

Mode penulisan Celeborn.

  • hash: Sejumlah besar memori dikonsumsi ketika sejumlah partisi yang berlebihan diproses secara paralel. Ini adalah nilai default.

  • sort: Sejumlah tetap memori dikonsumsi ketika sejumlah partisi yang berlebihan diproses secara paralel. Pemrosesan partisi stabil.

spark.celeborn.master.endpoints

Tentukan nilai untuk parameter ini dalam format <celeborn-master-ip>:<celeborn-master-port>.

Parameter:

  • <celeborn-master-ip> menentukan alamat IP publik dari Node master.

  • <celeborn-master-port> menentukan port dari Node master. Atur nilainya menjadi 9097.

Jika Anda membuat cluster dengan ketersediaan tinggi, kami sarankan Anda mengonfigurasi alamat IP dari semua node master.

spark.sql.adaptive.enabled

Anda dapat mengaktifkan eksekusi adaptif untuk layanan Celeborn. Anda dapat menonaktifkan pembaca shuffle lokal untuk memastikan performa shuffle yang tinggi.

Anda harus mengatur parameter spark.sql.adaptive.enabled menjadi true, parameter spark.sql.adaptive.localShuffleReader.enabled menjadi false, dan parameter spark.sql.adaptive.skewJoin.enabled menjadi true.

spark.sql.adaptive.localShuffleReader.enabled

spark.sql.adaptive.skewJoin.enabled

Anda dapat mengaktifkan layanan Celeborn di Spark dengan satu klik.

  • Cluster EMR V5.11.1 atau versi minor lebih baru dan EMR V3.45.1 atau versi minor lebih baru

    Pada bagian Service Overview tab Status halaman layanan Spark, aktifkan enableCeleborn.

  • Cluster EMR V5.11.0 dan EMR V3.45.0

    Pada bagian Components tab Status halaman layanan Spark, temukan komponen SparkThriftServer, arahkan pointer ke ikon more di kolom Actions, lalu pilih enableCeleborn. Setelah Anda mengklik enableCeleborn, parameter Spark yang dijelaskan dalam tabel sebelumnya dimodifikasi secara otomatis, dan komponen SparkThriftServer di-restart. File konfigurasi spark-defaults.conf dan spark-thriftserver.conf juga dimodifikasi secara otomatis.

    • Jika Anda mengklik enableCeleborn,, semua pekerjaan Spark di cluster menggunakan layanan Celeborn.

    • Jika Anda mengklik disableCeleborn, semua pekerjaan Spark di cluster tidak menggunakan layanan Celeborn.

Parameter Celeborn

Anda dapat melihat atau memodifikasi konfigurasi semua parameter Celeborn di tab Configure halaman layanan Celeborn. Tabel berikut menjelaskan parameter-parameter tersebut.

Penting

Nilai-nilai parameter bervariasi berdasarkan grup node.

Parameter

Deskripsi

Nilai default

celeborn.worker.flusher.threads

Jumlah thread ketika data ditulis ke hard disk (HDD) atau solid-state disk (SSD).

  • Nilai default untuk HDD adalah 1.

  • Nilai default untuk SSD adalah 8.

CELEBORN_WORKER_OFFHEAP_MEMORY

Ukuran memori off-heap dari node worker.

Nilai default dihitung berdasarkan pengaturan cluster.

celeborn.application.heartbeat.timeout

Periode timeout heartbeat aplikasi Anda. Unit: detik. Setelah periode timeout heartbeat berakhir, sumber daya terkait aplikasi dibersihkan.

120s

celeborn.worker.flusher.buffer.size

Ukuran buffer flush. Jika ukuran buffer flush melebihi batas atas, flushing dipicu.

256K

celeborn.metrics.enabled

Menentukan apakah pemantauan diaktifkan. Nilai valid:

  • true: mengaktifkan pemantauan.

  • false: menonaktifkan pemantauan.

true

CELEBORN_WORKER_MEMORY

Ukuran memori heap dari node inti.

1g

CELEBORN_MASTER_MEMORY

Ukuran memori heap dari Node master.

2g

Restart komponen CelebornMaster

  1. Di tab Status halaman layanan Celeborn, temukan komponen CelebornMaster, arahkan pointer ke ikon more di kolom Actions, lalu pilih restart_clean_meta.

    Catatan

    Jika cluster adalah cluster non-ketersediaan tinggi, Anda dapat mengklik Restart di kolom Actions komponen CelebornMaster.

  2. Dalam kotak dialog yang muncul, matikan Rolling Execution, konfigurasikan parameter Alasan Eksekusi, lalu klik OK.

  3. Dalam Pesan Konfirmasi, klik OK.