Menambahkan akun penyimpanan tambahan ke HDInsight
Pelajari cara menggunakan tindakan skrip untuk menambahkan akun Azure Storage tambahan ke HDInsight. Langkah-langkah dalam dokumen ini menambahkan akun penyimpanan ke kluster HDInsight yang sudah ada. Artikel ini berlaku untuk akun penyimpanan (bukan akun penyimpanan kluster default), dan bukan penyimpanan tambahan seperti Azure Data Lake Storage Gen1
dan Azure Data Lake Storage Gen2
.
Penting
Informasi dalam dokumen ini adalah tentang penambahan akun penyimpanan tambahan ke kluster setelah kluster dibuat. Untuk informasi tentang penambahan akun penyimpanan selama pembuatan kluster, lihat Menyiapkan kluster di HDInsight dengan Apache Hadoop, Apache Spark, Apache Kafka, dan lain-lain.
Prasyarat
- Klaster Hadoop pada HDInsight. Lihat Mulai menggunakan Microsoft Azure HDInsight di Linux.
- Nama dan kunci akun penyimpanan. Lihat Mengelola kunci akses akun penyimpanan.
- Jika menggunakan PowerShell, Anda memerlukan modul AZ. Lihat Ikhtisar Azure PowerShell.
Cara kerjanya
Selama pemrosesan, skrip melakukan tindakan berikut:
Jika akun penyimpanan sudah ada dalam konfigurasi core-site.xml untuk kluster, skrip keluar dan tidak ada tindakan lebih lanjut yang dilakukan.
Verifikasi bahwa akun penyimpanan ada dan dapat diakses menggunakan kunci.
Mengenkripsi kunci menggunakan kredensial kluster.
Menambahkan akun penyimpanan ke file core-site.xml.
Menghentikan dan memulai ulang layanan Apache Oozie, Apache Hadoop YARN, Apache Hadoop MapReduce2, dan Apache Hadoop HDFS. Menghentikan dan memulai layanan ini memungkinkan layanan untuk menggunakan akun penyimpanan baru.
Peringatan
Penggunaan akun penyimpanan di lokasi yang berbeda dari kluster HDInsight tidak didukung.
Menambahkan akun penyimpanan
Gunakan Tindakan Skrip untuk menerapkan perubahan dengan pertimbangan berikut ini:
Properti | Nilai |
---|---|
URI skrip bash | https://hdiconfigactions.blob.core.windows.net/linuxaddstorageaccountv01/add-storage-account-v01.sh |
Jenis node | Head |
Parameter | ACCOUNTNAME ACCOUNTKEY -p (opsional) |
ACCOUNTNAME
adalah nama akun penyimpanan yang ditambahkan ke kluster HDInsight.ACCOUNTKEY
adalah kunci akses untukACCOUNTNAME
.-p
bersifat opsional. Jika ditentukan, kunci tidak dienkripsi dan disimpan dalam file core-site.xml sebagai teks biasa.
Verifikasi
Saat Anda melihat kluster HDInsight di portal Azure, pilih entri Akun Penyimpanan di bawah Properti tidak menampilkan akun penyimpanan yang ditambahkan melalui tindakan skrip ini. Azure PowerShell dan Azure CLI juga tidak menampilkan akun penyimpanan tambahan. Informasi penyimpanan tidak ditampilkan karena skrip hanya memodifikasi core-site.xml
konfigurasi untuk kluster. Informasi ini tidak digunakan saat mengambil informasi kluster menggunakan API manajemen Azure.
Untuk memverifikasi penyimpanan tambahan, gunakan salah satu metode yang ditampilkan:
PowerShell
Skrip mengembalikan nama Akun Penyimpanan yang terkait dengan kluster yang diberikan. Ganti CLUSTERNAME
dengan nama kluster yang sebenarnya, lalu jalankan skrip.
# Update values
$clusterName = "CLUSTERNAME"
$creds = Get-Credential -UserName "admin" -Message "Enter the cluster login credentials"
$clusterName = $clusterName.ToLower();
# getting service_config_version
$resp = Invoke-WebRequest -Uri "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName`?fields=Clusters/desired_service_config_versions/HDFS" `
-Credential $creds -UseBasicParsing
$respObj = ConvertFrom-Json $resp.Content
$configVersion=$respObj.Clusters.desired_service_config_versions.HDFS.service_config_version
$resp = Invoke-WebRequest -Uri "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/configurations/service_config_versions?service_name=HDFS&service_config_version=$configVersion" `
-Credential $creds
$respObj = ConvertFrom-Json $resp.Content
# extract account names
$value = ($respObj.items.configurations | Where type -EQ "core-site").properties | Get-Member -membertype properties | Where Name -Like "fs.azure.account.key.*"
foreach ($name in $value ) { $name.Name.Split(".")[4]}
Apache Ambari
Dari browser web, arahkan ke
https://CLUSTERNAME.azurehdinsight.net
, di manaCLUSTERNAME
merupakan nama kluster Anda.Arahkan ke Konfigurasi>HDFS>Tingkat Lanjut>Situs inti kustom.
Amati kunci yang dimulai dengan
fs.azure.account.key
. Nama akun adalah bagian dari kunci seperti yang terlihat dalam gambar sampel ini:
Menghapus akun penyimpanan
Dari browser web, arahkan ke
https://CLUSTERNAME.azurehdinsight.net
, di manaCLUSTERNAME
merupakan nama kluster Anda.Arahkan ke Konfigurasi>HDFS>Tingkat Lanjut>Situs inti kustom.
Hapus kunci berikut:
fs.azure.account.key.<STORAGE_ACCOUNT_NAME>.blob.core.windows.net
fs.azure.account.keyprovider.<STORAGE_ACCOUNT_NAME>.blob.core.windows.net
Setelah menghapus kunci ini dan menyimpan konfigurasi, Anda harus memulai ulang Oozie, Yarn, MapReduce2, HDFS, dan Apache Hive satu per satu.
Masalah umum
Firewall penyimpanan
Jika Anda memilih untuk mengamankan akun penyimpanan Anda dengan pembatasan Firewall dan jaringan virtual pada Jaringan yang dipilih, pastikan untuk mengaktifkan pengecualian Izinkan layanan Microsoft tepercaya sehingga HDInsight dapat mengakses akun penyimpanan Anda.
Tidak dapat mengakses penyimpanan setelah mengubah kunci
Jika Anda mengubah kunci untuk akun penyimpanan, HDInsight tidak dapat lagi mengakses akun penyimpanan. HDInsight menggunakan penembolokan salinan kunci di core-site.xml untuk kluster. Penembolokan salinan ini harus dimutakhirkan agar cocok dengan kunci baru.
Menjalankan tindakan skrip lagi tidak memperbarui kunci, karena skrip memeriksa untuk melihat apakah entri untuk akun penyimpanan sudah ada. Jika entri sudah ada, tidak ada yang diubah.
Untuk mengatasi masalah ini:
Lihat Memperbarui kunci akses akun penyimpanan tentang cara memutar kunci akses.
Anda juga dapat menghapus akun penyimpanan dan kemudian menambahkan kembali akun penyimpanan.
Langkah berikutnya
Anda sudah mempelajari cara menambahkan akun penyimpanan tambahan ke kluster HDInsight yang sudah ada. Untuk informasi selengkapnya tentang tindakan skrip, lihat Kustomisasi kluster HDInsight berbasis Linux menggunakan tindakan skrip