Bagikan melalui


Mengonfigurasi pengaturan penyebaran untuk sumber daya dan layanan Kluster Big Data

Berlaku untuk: SQL Server 2019 (15.x)

Penting

Add-on Kluster Big Data Microsoft SQL Server 2019 akan dihentikan. Dukungan untuk SQL Server 2019 Kluster Big Data akan berakhir pada 28 Februari 2025. Semua pengguna SQL Server 2019 yang ada dengan Jaminan Perangkat Lunak akan didukung sepenuhnya pada platform dan perangkat lunak akan terus dipertahankan melalui pembaruan kumulatif SQL Server hingga saat itu. Untuk informasi selengkapnya, lihat posting blog pengumuman dan Opsi big data di platform Microsoft SQL Server.

Mulai dari serangkaian profil konfigurasi yang telah ditentukan sebelumnya yang disertakan dalam alat manajemen Azure Data CLI (azdata), Anda dapat dengan mudah memodifikasi pengaturan default agar lebih sesuai dengan persyaratan beban kerja BDC Anda. Struktur file konfigurasi memungkinkan Anda memperbarui pengaturan secara terperinci untuk setiap layanan sumber daya.

Catatan

Kluster Big Data versi CU9+ memiliki dukungan untuk fungsionalitas manajemen konfigurasi. Fitur ini memungkinkan konfigurasi pasca-penyebaran dan memberikan peningkatan visibilitas dan konfigurasi kluster. Versi CU8 dan yang lebih rendah tidak memiliki fungsionalitas dan konfigurasi ini hanya dapat dilakukan pada waktu penyebaran.

Tonton video 13 menit ini untuk gambaran umum konfigurasi kluster big data:

Tip

Silakan referensikan artikel tentang cara mengonfigurasi ketersediaan tinggi untuk komponen penting misi seperti master SQL Server atau node nama HDFS, untuk detail tentang cara menyebarkan layanan yang sangat tersedia.

Tip

Referensikan artikel Properti Konfigurasi Kluster Big Data SQL Server untuk melihat pengaturan apa yang dapat dikonfigurasi. Untuk versi CU8 atau yang lebih rendah, referensi Properti Konfigurasi Instans Master SQL Server - Rilis Pra CU9 untuk konfigurasi yang tersedia untuk instans master SQL Server dan properti konfigurasi Apache Spark & Apache Hadoop (HDFS) untuk properti Apache Spark dan Hadoop.

Anda juga dapat mengatur konfigurasi tingkat sumber daya atau memperbarui konfigurasi untuk semua layanan dalam sumber daya. Berikut adalah ringkasan struktur untuk bdc.json:

{
    "apiVersion": "v1",
    "metadata": {
        "kind": "BigDataCluster",
        "name": "mssql-cluster"
    },
    "spec": {
        "resources": {
            "nmnode-0": {...
            },
            "sparkhead": {...
            },
            "zookeeper": {...
            },
            "gateway": {...
            },
            "appproxy": {...
            },
            "master": {...
            },
            "compute-0": {...
            },
            "data-0": {...
            },
            "storage-0": {...
        },
        "services": {
            "sql": {
                "resources": [
                    "master",
                    "compute-0",
                    "data-0",
                    "storage-0"
                ]
            },
            "hdfs": {
                "resources": [
                    "nmnode-0",
                    "zookeeper",
                    "storage-0",
                    "sparkhead"
                ],
                "settings": {...
            },
            "spark": {
                "resources": [
                    "sparkhead",
                    "storage-0"
                ],
                "settings": {...
            }
        }
    }
}

Untuk memperbarui konfigurasi tingkat sumber daya seperti instans dalam kumpulan, Anda akan memperbarui spesifikasi sumber daya. Misalnya, untuk memperbarui jumlah instans di kumpulan komputasi, Anda akan memodifikasi bagian ini dalam bdc.json file konfigurasi:

"resources": {
    ...
    "compute-0": {
        "metadata": {
            "kind": "Pool",
            "name": "default"
        },
        "spec": {
            "type": "Compute",
            "replicas": 4
        }
    }
    ...
}

Demikian pula untuk mengubah pengaturan satu layanan dalam sumber daya tertentu. Misalnya, jika Anda ingin mengubah pengaturan memori Spark hanya untuk komponen Spark di kumpulan Penyimpanan, Anda akan memperbarui storage-0 sumber daya dengan settings bagian untuk spark layanan dalam bdc.json file konfigurasi.

"resources":{
    ...
     "storage-0": {
        "metadata": {
            "kind": "Pool",
            "name": "default"
        },
        "spec": {
            "type": "Storage",
            "replicas": 2,
            "settings": {
                "spark": {
                    "spark-defaults-conf.spark.driver.memory": "2g",
                    "spark-defaults-conf.spark.driver.cores": "1",
                    "spark-defaults-conf.spark.executor.instances": "3",
                    "spark-defaults-conf.spark.executor.memory": "1536m",
                    "spark-defaults-conf.spark.executor.cores": "1",
                    "yarn-site.yarn.nodemanager.resource.memory-mb": "18432",
                    "yarn-site.yarn.nodemanager.resource.cpu-vcores": "6",
                    "yarn-site.yarn.scheduler.maximum-allocation-mb": "18432",
                    "yarn-site.yarn.scheduler.maximum-allocation-vcores": "6",
                    "yarn-site.yarn.scheduler.capacity.maximum-am-resource-percent": "0.3"
                }
            }
        }
    }
    ...
}

Jika Anda ingin menerapkan konfigurasi yang sama untuk layanan yang terkait dengan beberapa sumber daya, Anda akan memperbarui yang sesuai settings di bagian tersebut services . Misalnya, jika Anda ingin mengatur pengaturan yang sama untuk Spark di seluruh kumpulan penyimpanan dan kumpulan Spark, Anda akan memperbarui settings bagian di spark bagian layanan dalam bdc.json file konfigurasi.

"services": {
    ...
    "spark": {
        "resources": [
            "sparkhead",
            "storage-0"
        ],
        "settings": {
            "spark-defaults-conf.spark.driver.memory": "2g",
            "spark-defaults-conf.spark.driver.cores": "1",
            "spark-defaults-conf.spark.executor.instances": "3",
            "spark-defaults-conf.spark.executor.memory": "1536m",
            "spark-defaults-conf.spark.executor.cores": "1",
            "yarn-site.yarn.nodemanager.resource.memory-mb": "18432",
            "yarn-site.yarn.nodemanager.resource.cpu-vcores": "6",
            "yarn-site.yarn.scheduler.maximum-allocation-mb": "18432",
            "yarn-site.yarn.scheduler.maximum-allocation-vcores": "6",
            "yarn-site.yarn.scheduler.capacity.maximum-am-resource-percent": "0.3"
        }
    }
    ...
}

Untuk menyesuaikan file konfigurasi penyebaran kluster, Anda dapat menggunakan editor format JSON apa pun, seperti VSCode. Untuk membuat skrip pengeditan ini untuk tujuan otomatisasi, gunakan azdata bdc config perintah . Artikel ini menjelaskan cara mengonfigurasi penyebaran kluster big data dengan memodifikasi file konfigurasi penyebaran. Ini memberikan contoh tentang cara mengubah konfigurasi untuk skenario yang berbeda. Untuk informasi selengkapnya tentang cara file konfigurasi digunakan dalam penyebaran, lihat panduan penyebaran.

Prasyarat

  • Pasang azdata.

  • Masing-masing contoh di bagian ini mengasumsikan bahwa Anda telah membuat salinan salah satu konfigurasi standar. Untuk informasi selengkapnya, lihat Membuat konfigurasi kustom. Misalnya, perintah berikut membuat direktori yang disebut custom-bdc berisi dua file konfigurasi penyebaran JSON, dan control.json, bdc.json berdasarkan konfigurasi defaultaks-dev-test:

    azdata bdc config init --source aks-dev-test --target custom-bdc
    

Peringatan

Parameter imagePullPolicy diperlukan untuk diatur sebagai "Always" dalam profil penyebaran control.json file.

Mengubah registri, repositori, dan tag gambar Docker default

File konfigurasi bawaan, khususnya control.json mencakup docker bagian di mana registri kontainer, repositori, dan tag gambar telah diisi sebelumnya. Secara default, gambar yang diperlukan untuk kluster big data ada di Microsoft Container Registry (mcr.microsoft.com), di mssql/bdc repositori:

{
    "apiVersion": "v1",
    "metadata": {
        "kind": "Cluster",
        "name": "mssql-cluster"
    },
    "spec": {
        "docker": {
            "registry": "mcr.microsoft.com",
            "repository": "mssql/bdc",
            "imageTag": "2019-GDR1-ubuntu-16.04",
            "imagePullPolicy": "Always"
        },
        ...
    }
}

Sebelum penyebaran, Anda dapat menyesuaikan docker pengaturan dengan mengedit control.json file konfigurasi secara langsung atau menggunakan azdata bdc config perintah. Misalnya, perintah berikut memperbarui custom-bdc file konfigurasi control.json dengan yang berbeda <registry>, <repository> dan <image_tag>:

azdata bdc config replace -c custom-bdc/control.json -j "$.spec.docker.registry=<registry>"
azdata bdc config replace -c custom-bdc/control.json -j "$.spec.docker.repository=<repository>"
azdata bdc config replace -c custom-bdc/control.json -j "$.spec.docker.imageTag=<image_tag>"

Tip

Sebagai praktik terbaik, Anda harus menggunakan tag gambar khusus versi dan menghindari penggunaan latest tag gambar, karena ini dapat mengakibatkan ketidakcocokan versi yang akan menyebabkan masalah kesehatan kluster.

Tip

Penyebaran kluster big data harus memiliki akses ke registri kontainer dan repositori untuk menarik gambar kontainer. Jika lingkungan Anda tidak memiliki akses ke Microsoft Container Registry default, Anda dapat melakukan penginstalan offline di mana gambar yang diperlukan pertama kali ditempatkan ke repositori Docker privat. Untuk informasi selengkapnya tentang penginstalan offline, lihat Melakukan penyebaran offline kluster big data SQL Server. Perhatikan bahwa Anda harus mengatur DOCKER_USERNAME variabel lingkungan dan DOCKER_PASSWORD sebelum mengeluarkan penyebaran untuk memastikan alur kerja penyebaran memiliki akselerasi ke repositori privat Anda untuk menarik gambar dari.

Ubah nama kluster

Nama kluster adalah nama kluster big data dan namespace Layanan Kubernetes yang akan dibuat pada penyebaran. Ini ditentukan dalam bagian berikut dari bdc.json file konfigurasi penyebaran:

"metadata": {
    "kind": "BigDataCluster",
    "name": "mssql-cluster"
},

Perintah berikut mengirimkan pasangan kunci-nilai ke --json-values parameter untuk mengubah nama kluster big data menjadi test-cluster:

azdata bdc config replace --config-file custom-bdc/bdc.json --json-values "metadata.name=test-cluster"

Penting

Nama kluster big data Anda harus hanya karakter alfa-numerik huruf kecil, tanpa spasi. Semua artefak Kubernetes (kontainer, pod, set statefull, layanan) untuk kluster akan dibuat di namespace dengan nama yang sama dengan nama kluster yang ditentukan.

Memperbarui port titik akhir

Titik akhir didefinisikan untuk pengontrol di control.json dan untuk gateway dan instans master SQL Server di bagian yang sesuai di bdc.json. Bagian control.json file konfigurasi berikut menunjukkan definisi titik akhir untuk pengontrol:

{
  "endpoints": [
    {
      "name": "Controller",
      "serviceType": "LoadBalancer",
      "port": 30080
    },
    {
      "name": "ServiceProxy",
      "serviceType": "LoadBalancer",
      "port": 30777
    }
  ]
}

Contoh berikut menggunakan JSON sebaris untuk mengubah port untuk controller titik akhir:

azdata bdc config replace --config-file custom-bdc/control.json --json-values "$.spec.endpoints[?(@.name==""Controller"")].port=30000"

Mengonfigurasi skala

Konfigurasi setiap sumber daya, seperti kumpulan penyimpanan, ditentukan dalam bdc.json file konfigurasi. Misalnya, bagian berikut dari bdc.json menunjukkan storage-0 definisi sumber daya:

"storage-0": {
    "metadata": {
        "kind": "Pool",
        "name": "default"
    },
    "spec": {
        "type": "Storage",
        "replicas": 2,
        "settings": {
            "spark": {
                "spark-defaults-conf.spark.driver.memory": "2g",
                "spark-defaults-conf.spark.driver.cores": "1",
                "spark-defaults-conf.spark.executor.instances": "3",
                "spark-defaults-conf.spark.executor.memory": "1536m",
                "spark-defaults-conf.spark.executor.cores": "1",
                "yarn-site.yarn.nodemanager.resource.memory-mb": "18432",
                "yarn-site.yarn.nodemanager.resource.cpu-vcores": "6",
                "yarn-site.yarn.scheduler.maximum-allocation-mb": "18432",
                "yarn-site.yarn.scheduler.maximum-allocation-vcores": "6",
                "yarn-site.yarn.scheduler.capacity.maximum-am-resource-percent": "0.3"
            }
        }
    }
}

Anda dapat mengonfigurasi jumlah instans dalam penyimpanan, komputasi, dan/atau kumpulan data dengan memodifikasi replicas nilai untuk setiap kumpulan. Contoh berikut menggunakan JSON sebaris untuk mengubah nilai-nilai ini untuk penyimpanan, komputasi, dan kumpulan data menjadi 10, 4 dan 4 masing-masing:

azdata bdc config replace --config-file custom-bdc/bdc.json --json-values "$.spec.resources.storage-0.spec.replicas=10"
azdata bdc config replace --config-file custom-bdc/bdc.json --json-values "$.spec.resources.compute-0.spec.replicas=4"
azdata bdc config replace --config-file custom-bdc/bdc.json --json-values "$.spec.resources.data-0.spec.replicas=4"

Catatan

Jumlah maksimum instans yang divalidasi untuk komputasi dan kumpulan data adalah 8 masing-masing. Tidak ada penegakan batas ini pada waktu penyebaran, tetapi kami tidak menyarankan untuk mengonfigurasi skala yang lebih tinggi dalam penyebaran produksi.

Mengonfigurasi penyimpanan

Anda juga dapat mengubah kelas penyimpanan dan karakteristik yang digunakan untuk setiap kumpulan. Contoh berikut menetapkan kelas penyimpanan kustom ke penyimpanan dan kumpulan data dan memperbarui ukuran klaim volume persisten untuk menyimpan data menjadi 500 Gb untuk HDFS (kumpulan penyimpanan) dan 100 Gb untuk master dan kumpulan data.

Tip

Untuk informasi selengkapnya tentang konfigurasi penyimpanan, lihat Persistensi data dengan kluster big data SQL Server di Kubernetes.

Pertama-tama buat file patch.json seperti di bawah ini yang menyesuaikan pengaturan penyimpanan

{
        "patch": [
                {
                        "op": "add",
                        "path": "spec.resources.storage-0.spec.storage",
                        "value": {
                                "data": {
                                        "size": "500Gi",
                                        "className": "default",
                                        "accessMode": "ReadWriteOnce"
                                },
                                "logs": {
                                        "size": "30Gi",
                                        "className": "default",
                                        "accessMode": "ReadWriteOnce"
                                }
                        }
                },
        {
                        "op": "add",
                        "path": "spec.resources.master.spec.storage",
                        "value": {
                                "data": {
                                        "size": "100Gi",
                                        "className": "default",
                                        "accessMode": "ReadWriteOnce"
                                },
                                "logs": {
                                        "size": "30Gi",
                                        "className": "default",
                                        "accessMode": "ReadWriteOnce"
                                }
                        }
                },
                {
                        "op": "add",
                        "path": "spec.resources.data-0.spec.storage",
                        "value": {
                                "data": {
                                        "size": "100Gi",
                                        "className": "default",
                                        "accessMode": "ReadWriteOnce"
                                },
                                "logs": {
                                        "size": "30Gi",
                                        "className": "default",
                                        "accessMode": "ReadWriteOnce"
                                }
                        }
                }
        ]
}

Anda kemudian dapat menggunakan azdata bdc config patch perintah untuk memperbarui bdc.json file konfigurasi.

azdata bdc config patch --config-file custom-bdc/bdc.json --patch ./patch.json

Catatan

File konfigurasi berdasarkan kubeadm-dev-test tidak memiliki definisi penyimpanan untuk setiap kumpulan, tetapi Anda dapat menggunakan proses di atas untuk ditambahkan jika diperlukan.

Mengonfigurasi kumpulan penyimpanan tanpa spark

Anda juga dapat mengonfigurasi kumpulan penyimpanan untuk dijalankan tanpa spark dan membuat kumpulan spark terpisah. Konfigurasi ini memungkinkan Anda menskalakan daya komputasi spark yang independen dari penyimpanan. Untuk melihat cara mengonfigurasi kumpulan spark, lihat bagian Membuat kumpulan spark di artikel ini.

Catatan

Menyebarkan kluster big data tanpa Spark tidak didukung. Jadi Anda harus mengatur includeSpark ke true atau Anda harus membuat kumpulan spark terpisah dengan setidaknya satu instans. Anda juga dapat meminta Spark menjalankan keduanya di kumpulan penyimpanan (includeSpark adalah true) dan memiliki kumpulan Spark terpisah.

Secara default, includeSpark pengaturan untuk sumber daya kumpulan penyimpanan diatur ke true, jadi Anda harus mengedit includeSpark bidang ke konfigurasi penyimpanan untuk membuat perubahan. Perintah berikut menunjukkan cara mengedit nilai ini menggunakan json sebaris.

azdata bdc config replace --config-file custom-bdc/bdc.json --json-values "$.spec.resources.storage-0.spec.settings.spark.includeSpark=false"

Membuat kumpulan spark

Anda dapat membuat kumpulan Spark sebagai tambahan, atau alih-alih instans Spark yang berjalan di kumpulan penyimpanan. Contoh berikut menunjukkan cara membuat kumpulan spark dengan dua instans dengan menambal bdc.json file konfigurasi.

Pertama, buat spark-pool-patch.json file seperti di bawah ini:

{
    "patch": [
        {
            "op": "add",
            "path": "spec.resources.spark-0",
            "value": {
                "metadata": {
                    "kind": "Pool",
                    "name": "default"
                },
                "spec": {
                    "type": "Spark",
                    "replicas": 2
                }
            }
        },
        {
            "op": "add",
            "path": "spec.services.spark.resources/-",
            "value": "spark-0"
        },
        {
            "op": "add",
            "path": "spec.services.hdfs.resources/-",
            "value": "spark-0"
        }
    ]
}

Kemudian jalankan azdata bdc config patch perintah:

azdata bdc config patch -c custom-bdc/bdc.json -p spark-pool-patch.json

Mengonfigurasi penempatan pod menggunakan label Kubernetes

Anda dapat mengontrol penempatan pod pada simpul Kubernetes yang memiliki sumber daya khusus untuk mengakomodasi berbagai jenis persyaratan beban kerja. Dengan menggunakan label Kubernetes, Anda dapat menyesuaikan node mana yang ada di kluster Kubernetes akan digunakan untuk menyebarkan sumber daya kluster big data, tetapi juga membatasi simpul mana yang digunakan untuk sumber daya tertentu. Misalnya, Anda mungkin ingin memastikan pod sumber daya kumpulan penyimpanan ditempatkan pada simpul dengan lebih banyak penyimpanan, sementara instans master SQL Server ditempatkan pada simpul yang memiliki sumber daya CPU dan memori yang lebih tinggi. Dalam hal ini, Anda akan terlebih dahulu membangun kluster Kubernetes heterogen dengan berbagai jenis perangkat keras dan kemudian menetapkan label node yang sesuai. Pada saat menyebarkan kluster big data, Anda dapat menentukan label yang sama pada tingkat kluster untuk menunjukkan simpul mana yang digunakan untuk kluster big data menggunakan clusterLabel atribut dalam control.json file. Kemudian, label yang berbeda akan digunakan untuk penempatan tingkat kumpulan. Label ini dapat ditentukan dalam file konfigurasi penyebaran kluster big data menggunakan nodeLabel atribut. Kubernetes menetapkan pod pada simpul yang cocok dengan label yang ditentukan. Kunci label spesifik yang perlu ditambahkan ke simpul di kluster kubernetes adalah mssql-cluster (untuk menunjukkan node mana yang digunakan untuk kluster big data) dan mssql-resource (untuk menunjukkan simpul spesifik mana pod ditempatkan untuk berbagai sumber daya). Nilai label ini dapat berupa string apa pun yang Anda pilih.

Catatan

Karena sifat pod yang melakukan pengumpulan metrik tingkat simpul, metricsdc pod disebarkan pada semua simpul dengan mssql-cluster label, dan mssql-resource tidak akan berlaku untuk pod ini.

Contoh berikut menunjukkan cara mengedit file konfigurasi kustom untuk menyertakan label bdc node untuk seluruh kluster big data, label bdc-master untuk menempatkan pod instans master SQL Server pada simpul tertentu, bdc-storage-pool untuk sumber daya kumpulan penyimpanan, bdc-compute-pool untuk kumpulan komputasi dan pod kumpulan data, dan bdc-shared untuk sumber daya lainnya.

Label pertama simpul Kubernetes:

kubectl label node <kubernetesNodeName1> mssql-cluster=bdc mssql-resource=bdc-shared --overwrite=true
kubectl label node <kubernetesNodeName2> mssql-cluster=bdc mssql-resource=bdc-master --overwrite=true
kubectl label node <kubernetesNodeName3> mssql-cluster=bdc mssql-resource=bdc-compute-pool --overwrite=true
kubectl label node <kubernetesNodeName4> mssql-cluster=bdc mssql-resource=bdc-compute-pool --overwrite=true
kubectl label node <kubernetesNodeName5> mssql-cluster=bdc mssql-resource=bdc-storage-pool --overwrite=true
kubectl label node <kubernetesNodeName6> mssql-cluster=bdc mssql-resource=bdc-storage-pool --overwrite=true
kubectl label node <kubernetesNodeName7> mssql-cluster=bdc mssql-resource=bdc-storage-pool --overwrite=true
kubectl label node <kubernetesNodeName8> mssql-cluster=bdc mssql-resource=bdc-storage-pool --overwrite=true

Kemudian perbarui file konfigurasi penyebaran kluster untuk menyertakan nilai label. Contoh ini mengasumsikan bahwa Anda menyesuaikan file konfigurasi dalam custom-bdc profil. Secara default, tidak nodeLabel ada kunci dan clusterLabel dalam konfigurasi bawaan sehingga Anda harus mengedit file konfigurasi kustom secara manual atau menggunakan azdata bdc config add perintah untuk melakukan pengeditan yang diperlukan.

azdata bdc config add -c custom-bdc/control.json -j "$.spec.clusterLabel=bdc"
azdata bdc config add -c custom-bdc/control.json -j "$.spec.nodeLabel=bdc-shared"

azdata bdc config add -c custom-bdc/bdc.json -j "$.spec.resources.master.spec.nodeLabel=bdc-master"
azdata bdc config add -c custom-bdc/bdc.json -j "$.spec.resources.compute-0.spec.nodeLabel=bdc-compute-pool"
azdata bdc config add -c custom-bdc/bdc.json -j "$.spec.resources.data-0.spec.nodeLabel=bdc-compute-pool"
azdata bdc config add -c custom-bdc/bdc.json -j "$.spec.resources.storage-0.spec.nodeLabel=bdc-storage-pool"

# below can be omitted in which case we will take the node label default from the control.json
azdata bdc config add -c custom-bdc/bdc.json -j "$.spec.resources.nmnode-0.spec.nodeLabel=bdc-shared"
azdata bdc config add -c custom-bdc/bdc.json -j "$.spec.resources.sparkhead.spec.nodeLabel=bdc-shared"
azdata bdc config add -c custom-bdc/bdc.json -j "$.spec.resources.zookeeper.spec.nodeLabel=bdc-shared"
azdata bdc config add -c custom-bdc/bdc.json -j "$.spec.resources.gateway.spec.nodeLabel=bdc-shared"
azdata bdc config add -c custom-bdc/bdc.json -j "$.spec.resources.appproxy.spec.nodeLabel=bdc-shared"

Catatan

Praktik terbaik menghindari pemberian kubernetes master salah satu peran BDC di atas. Jika Anda berencana untuk menetapkan peran ini ke simpul master Kubernetes, Anda harus menghapus taint-nya master:NoSchedule . Ketahuilah bahwa ini dapat membebani simpul master dan menghambat kemampuannya untuk melakukan tugas manajemen Kubernetes pada kluster yang lebih besar. Biasanya melihat beberapa pod yang dijadwalkan ke master pada penyebaran apa pun: mereka sudah mentolerir master:NoSchedule taint, dan sebagian besar digunakan untuk membantu mengelola kluster.

Penyesuaian lain menggunakan file patch JSON

File patch JSON mengonfigurasi beberapa pengaturan sekaligus. Untuk informasi selengkapnya tentang patch JSON, lihat Patch JSON di Python dan JSONPath Online Evaluator.

File berikut patch.json melakukan perubahan berikut:

  • Perbarui port titik akhir tunggal di control.json.
{
  "patch": [
    {
      "op": "replace",
      "path": "$.spec.endpoints[?(@.name=='Controller')].port",
      "value": 30000
    }
  ]
}
  • Perbarui semua titik akhir (port dan serviceType) di control.json.
{
  "patch": [
    {
      "op": "replace",
      "path": "spec.endpoints",
      "value": [
        {
          "serviceType": "LoadBalancer",
          "port": 30001,
          "name": "Controller"
        },
        {
          "serviceType": "LoadBalancer",
          "port": 30778,
          "name": "ServiceProxy"
        }
      ]
    }
  ]
}
  • Perbarui pengaturan penyimpanan pengontrol di control.json. Pengaturan ini berlaku untuk semua komponen kluster, kecuali ditimpa pada tingkat kumpulan.
{
  "patch": [
    {
      "op": "replace",
      "path": "spec.storage",
      "value": {
        "data": {
          "className": "managed-premium",
          "accessMode": "ReadWriteOnce",
          "size": "100Gi"
        },
        "logs": {
          "className": "managed-premium",
          "accessMode": "ReadWriteOnce",
          "size": "32Gi"
        }
      }
    }
  ]
}
  • Perbarui nama kelas penyimpanan di control.json.
{
  "patch": [
    {
      "op": "replace",
      "path": "spec.storage.data.className",
      "value": "managed-premium"
    }
  ]
}
  • Perbarui pengaturan penyimpanan kumpulan untuk kumpulan penyimpanan di bdc.json.
{
  "patch": [
    {
      "op": "replace",
      "path": "spec.resources.storage-0.spec",
      "value": {
        "type": "Storage",
        "replicas": 2,
        "storage": {
          "data": {
            "size": "100Gi",
            "className": "myStorageClass",
            "accessMode": "ReadWriteOnce"
          },
          "logs": {
            "size": "32Gi",
            "className": "myStorageClass",
            "accessMode": "ReadWriteOnce"
          }
        }
      }
    }
  ]
}
  • Perbarui pengaturan Spark untuk kumpulan penyimpanan di bdc.json.
{
  "patch": [
    {
      "op": "replace",
      "path": "spec.services.spark.settings",
      "value": {
            "spark-defaults-conf.spark.driver.memory": "2g",
            "spark-defaults-conf.spark.driver.cores": "1",
            "spark-defaults-conf.spark.executor.instances": "3",
            "spark-defaults-conf.spark.executor.memory": "1536m",
            "spark-defaults-conf.spark.executor.cores": "1",
            "yarn-site.yarn.nodemanager.resource.memory-mb": "18432",
            "yarn-site.yarn.nodemanager.resource.cpu-vcores": "6",
            "yarn-site.yarn.scheduler.maximum-allocation-mb": "18432",
            "yarn-site.yarn.scheduler.maximum-allocation-vcores": "6",
            "yarn-site.yarn.scheduler.capacity.maximum-am-resource-percent": "0.3"
      }
    }
  ]
}

Tip

Untuk informasi selengkapnya tentang struktur dan opsi untuk mengubah file konfigurasi penyebaran, lihat Referensi file konfigurasi penyebaran untuk kluster big data.

Gunakan azdata bdc config perintah untuk menerapkan perubahan dalam file patch JSON. Contoh berikut menerapkan file ke patch.json file custom-bdc/bdc.jsonkonfigurasi penyebaran target .

azdata bdc config patch --config-file custom-bdc/bdc.json --patch-file ./patch.json

Nonaktifkan ElasticSearch untuk dijalankan dalam mode istimewa

Secara default, kontainer ElasticSearch berjalan dalam mode hak istimewa di kluster big data. Pengaturan ini memastikan bahwa pada waktu inisialisasi kontainer, kontainer memiliki izin yang cukup untuk memperbarui pengaturan pada host yang diperlukan ketika ElasticSearch memproses jumlah log yang lebih tinggi. Anda dapat menemukan informasi selengkapnya tentang topik ini di artikel ini.

Untuk menonaktifkan kontainer yang menjalankan ElasticSearch untuk berjalan dalam mode istimewa, Anda harus memperbarui settings bagian di control.json dan menentukan nilai ke vm.max_map_count -1. Berikut adalah sampel tampilan bagian ini:

{
    "apiVersion": "v1",
    "metadata": {...},
    "spec": {
        "docker": {...},
        "storage": {...},
        "endpoints": [...],
        "settings": {
            "ElasticSearch": {
                "vm.max_map_count": "-1"
            }
        }
    }
}

Anda dapat mengedit control.json dan menambahkan bagian di atas secara manual ke spec, atau Anda dapat membuat file elasticsearch-patch.json patch seperti di bawah ini dan menggunakan Azure Data CLI (azdata) untuk menambal control.json file:

{
  "patch": [
    {
      "op": "add",
      "path": "spec.settings",
      "value": {
            "ElasticSearch": {
                "vm.max_map_count": "-1"
        }
      }
    }
  ]
}

Jalankan perintah ini untuk menambal file konfigurasi:

azdata bdc config patch --config-file custom-bdc/control.json --patch-file elasticsearch-patch.json

Penting

Kami menyarankan sebagai praktik terbaik untuk memperbarui max_map_count pengaturan secara manual pada setiap host di kluster Kubernetes sesuai instruksi dalam artikel ini.

Mengaktifkan/menonaktifkan pengumpulan metrik pod dan simpul

SQL Server 2019 CU5 mengaktifkan dua sakelar fitur untuk mengontrol pengumpulan metrik pod dan simpul. Jika Anda menggunakan solusi yang berbeda untuk memantau infrastruktur Kubernetes, Anda dapat menonaktifkan koleksi metrik bawaan untuk pod dan node host dengan mengatur allowNodeMetricsCollection dan allowPodMetricsCollection ke false dalam file konfigurasi penyebaran control.json. Untuk lingkungan OpenShift, pengaturan ini diatur ke false secara default di profil penyebaran bawaan, karena mengumpulkan metrik pod dan node memerlukan kemampuan istimewa. Jalankan perintah ini untuk memperbarui nilai pengaturan ini dalam file konfigurasi kustom Anda menggunakan Azdata CLI:

 azdata bdc config replace -c custom-bdc/control.json -j "$.security.allowNodeMetricsCollection=false"
 azdata bdc config replace -c custom-bdc/control.json -j "$.security.allowPodMetricsCollection=false"

Langkah berikutnya

Untuk informasi selengkapnya tentang menggunakan file konfigurasi dalam penyebaran kluster big data, lihat Cara menyebarkan SQL Server Kluster Big Data di Kubernetes.