Saat mendaftarkan kluster E-MapReduce (EMR) DataLake ke ruang kerja DataWorks dan menjalankan node EMR (EMR Hive, EMR MR, EMR Presto, EMR Spark SQL), pengaturan komponen default umumnya tidak mencukupi untuk beban kerja produksi. Topik ini mencakup rekomendasi konfigurasi memori untuk Kyuubi, Spark, dan Hadoop Distributed File System (HDFS), serta menjelaskan cara mengisolasi metadata antara lingkungan pengembangan dan produksi.
Konfigurasikan komponen EMR
Kyuubi
Di lingkungan produksi, atur parameter memori JVM berikut:
| Parameter | Nilai yang direkomendasikan | Deskripsi |
|---|---|---|
kyuubi_java_opts |
10g atau lebih besar | Ukuran heap untuk JVM server Kyuubi. Heap yang lebih besar mengurangi tekanan garbage collection (GC) saat beban kueri konkuren. |
kyuubit_beeline_opts |
2g atau lebih besar | Ukuran heap untuk client Beeline. Tingkatkan nilai ini jika kueri Anda menghasilkan set hasil yang besar. |
Spark
Alokasi memori default Spark bersifat konservatif. Sesuaikan parameter berikut berdasarkan ukuran kluster dan beban kerja Anda:
| Parameter | Ruang lingkup | Deskripsi |
|---|---|---|
spark.driver.memory |
Driver | Ukuran heap untuk driver Spark. Tingkatkan jika driver menangani variabel broadcast yang besar atau mengumpulkan data dalam jumlah signifikan. |
spark.driver.memoryOverhead |
Driver | Memori off-heap yang dicadangkan untuk JVM driver. Sesuaikan berdasarkan skala kluster dan beban kerja Anda. |
spark.executor.memory |
Executor | Ukuran heap untuk setiap executor. Ini merupakan parameter utama untuk menyetel performa executor. |
Teruskan parameter ini melalui spark-submit untuk menerapkannya di tingkat pekerjaan tanpa memengaruhi beban kerja lain di kluster:
spark-submit \
--conf spark.driver.memory=4g \
--conf spark.driver.memoryOverhead=512m \
--conf spark.executor.memory=8g \
...
Untuk daftar lengkap opsi konfigurasi memori Spark, lihat Spark memory management.
Dukungan lineage data
Tidak semua tipe node EMR di DataWorks menghasilkan data lineage. Tinjau batasan berikut sebelum merancang pipeline yang bergantung pada lineage.
| Tipe node | Lineage tingkat tabel | Lineage tingkat kolom |
|---|---|---|
| EMR Hive | Didukung | Didukung |
| EMR Spark | Didukung (hanya Spark 2.x) | Tidak didukung |
| EMR Spark SQL | Didukung (hanya Spark 2.x) | Tidak didukung |
| EMR MR | Tidak didukung | Tidak didukung |
| EMR Presto | Tidak didukung | Tidak didukung |
HDFS
Memori daemon HDFS dikontrol melalui parameter berikut. Sesuaikan parameter ini berdasarkan ukuran kluster Anda—kluster yang lebih besar dengan lebih banyak node data dan beban namespace yang lebih tinggi memerlukan heap yang lebih besar:
| Parameter | Komponen | Deskripsi |
|---|---|---|
hadoop_namenode_heapsize |
NameNode | Ukuran heap untuk JVM NameNode. Tingkatkan untuk kluster dengan jumlah file dan blok yang besar. |
hadoop_datanode_heapsize |
DataNode | Ukuran heap untuk setiap JVM DataNode. |
hadoop_secondary_namenode_heapsize |
Secondary NameNode | Ukuran heap untuk Secondary NameNode, yang menangani checkpoint periodik. |
hadoop_namenode_opts |
NameNode | Opsi JVM tambahan untuk NameNode, seperti flag penyetelan GC. |
Isolasi metadata antar lingkungan
Saat ruang kerja DataWorks berjalan dalam mode standar, Anda harus mendaftarkan dua kluster EMR terpisah—satu untuk lingkungan pengembangan dan satu lagi untuk lingkungan produksi. Daftarkan keduanya pada halaman Data Sources di SettingCenter.
Untuk memenuhi persyaratan isolasi data, gunakan database ApsaraDB RDS terpisah sebagai penyimpanan metadata masing-masing kluster. Penggunaan satu database untuk kedua lingkungan berisiko menyebabkan perubahan di lingkungan pengembangan memengaruhi metadata produksi, yang bertentangan dengan prinsip isolasi lingkungan.
Untuk langkah-langkah pengaturan dan catatan penggunaan tambahan, lihat Catatan penggunaan untuk pengembangan tugas EMR di DataWorks.