Kustomisasi klaster HDInsight menggunakan Bootstrap
Skrip bootstrap memungkinkan Anda untuk memasang dan mengonfigurasi komponen di Azure HDInsight secara terprogram.
Ada tiga pendekatan untuk mengatur pengaturan file konfigurasi saat kluster HDInsight Anda dibuat:
- Menggunakan Azure PowerShell
- Menggunakan .NET SDK
- Menggunakan templat Azure Resource Manager
Misalnya, menggunakan metode terprogram ini, Anda dapat mengonfigurasi opsi dalam file-file ini:
- clusterIdentity.xml
- core-site.xml
- gateway.xml
- hbase-env.xml
- hbase-site.xml
- hdfs-site.xml
- hive-env.xml
- hive-site.xml
- mapred-site
- oozie-site.xml
- oozie-env.xml
- tez-site.xml
- webhcat-site.xml
- yarn-site.xml
- properti server (konfigurasi kafka-broker)
Untuk informasi tentang menginstal lebih banyak komponen pada kluster HDInsight selama waktu pembuatan, lihat Menyesuaikan kluster HDInsight menggunakan Tindakan Skrip (Linux).
Prasyarat
- Jika menggunakan PowerShell, Anda memerlukan Modul Az.
Menggunakan Azure PowerShell
Kode PowerShell berikut mengkustomisasi konfigurasi Apache Hive:
Penting
Parameter Spark2Defaults
mungkin perlu digunakan bersama dengan Add-AzHDInsightConfigValue. Anda dapat meneruskan nilai kosong ke parameter seperti yang ditunjukkan dalam contoh kode berikut.
# hive-site.xml configuration
$hiveConfigValues = @{ "hive.metastore.client.socket.timeout"="90s" }
$config = New-AzHDInsightClusterConfig `
-ClusterType "Spark" `
| Set-AzHDInsightDefaultStorage `
-StorageAccountResourceId "$storageAccountResourceId" `
-StorageAccountKey $defaultStorageAccountKey `
| Add-AzHDInsightConfigValue `
-HiveSite $hiveConfigValues `
-Spark2Defaults @{}
New-AzHDInsightCluster `
-ResourceGroupName $resourceGroupName `
-ClusterName $hdinsightClusterName `
-Location $location `
-ClusterSizeInNodes 2 `
-Version "4.0" `
-HttpCredential $httpCredential `
-SshCredential $sshCredential `
-Config $config
Skrip PowerShell yang berfungsi lengkap dapat ditemukan di Lampiran.
Untuk memverifikasi perubahan:
- Navigasi ke
https://CLUSTERNAME.azurehdinsight.net/
tempatCLUSTERNAME
nama kluster Anda. - Dari menu sebelah kiri, arahkan ke Apache Hive>Konfigurasi>Tingkat Lanjut.
- Perluas situs hive tingkat lanjut.
- Temukan hive.metastore.client.socket.timeout dan konfirmasikan nilainya adalah 90s.
Beberapa sampel lebih lanjut tentang mengkustomisasi file konfigurasi lainnya:
# hdfs-site.xml configuration
$HdfsConfigValues = @{ "dfs.blocksize"="64m" } #default is 128MB in HDI 3.0 and 256MB in HDI 2.1
# core-site.xml configuration
$CoreConfigValues = @{ "ipc.client.connect.max.retries"="60" } #default 50
# mapred-site.xml configuration
$MapRedConfigValues = @{ "mapreduce.task.timeout"="1200000" } #default 600000
# oozie-site.xml configuration
$OozieConfigValues = @{ "oozie.service.coord.normal.default.timeout"="150" } # default 120
Menggunakan .NET SDK
Lihat Azure HDInsight SDK untuk .NET.
Gunakan templat Azure Resource Manager
Anda dapat menggunakan bootstrap di templat Azure Resource Manager:
"configurations": {
"hive-site": {
"hive.metastore.client.connect.retry.delay": "5",
"hive.execution.engine": "mr",
"hive.security.authorization.manager": "org.apache.hadoop.hive.ql.security.authorization.DefaultHiveAuthorizationProvider"
}
}
Cuplikan templat Resource Manager sampel untuk mengalihkan konfigurasi dalam spark2-defaults ke membersihkan log peristiwa secara berkala dari penyimpanan.
"configurations": {
"spark2-defaults": {
"spark.history.fs.cleaner.enabled": "true",
"spark.history.fs.cleaner.interval": "7d",
"spark.history.fs.cleaner.maxAge": "90d"
}
}
Lihat juga
- Membuat kluster Apache Hadoop di HDInsight memberikan instruksi tentang cara membuat kluster HDInsight dengan menggunakan opsi kustom lainnya.
- Mengembangkan skrip Script Action untuk HDInsight
- Memasang dan menggunakan Apache Spark pada kluster HDInsight
- Memasang dan menggunakan Apache Giraph pada kluster HDInsight.
Lampiran: Sampel PowerShell
Skrip PowerShell ini membuat kluster HDInsight dan menyesuaikan pengaturan Apache Hive. Pastikan untuk memasukkan nilai untuk $nameToken
, $httpPassword
, dan $sshPassword
.
####################################
# Service names and variables
####################################
$nameToken = "<ENTER AN ALIAS>"
$namePrefix = $nameToken.ToLower() + (Get-Date -Format "MMdd")
$resourceGroupName = $namePrefix + "rg"
$hdinsightClusterName = $namePrefix + "hdi"
$defaultStorageAccountName = $namePrefix + "store"
$defaultBlobContainerName = $hdinsightClusterName
$location = "East US"
####################################
# Connect to Azure
####################################
Write-Host "Connecting to your Azure subscription ..." -ForegroundColor Green
$sub = Get-AzSubscription -ErrorAction SilentlyContinue
if(-not($sub))
{
Connect-AzAccount
}
# If you have multiple subscriptions, set the one to use
#$context = Get-AzSubscription -SubscriptionId "<subscriptionID>"
#Set-AzContext $context
####################################
# Create a resource group
####################################
Write-Host "Creating a resource group ..." -ForegroundColor Green
New-AzResourceGroup `
-Name $resourceGroupName `
-Location $location
####################################
# Create a storage account and container
####################################
Write-Host "Creating the default storage account and default blob container ..." -ForegroundColor Green
New-AzStorageAccount `
-ResourceGroupName $resourceGroupName `
-Name $defaultStorageAccountName `
-Location $location `
-SkuName Standard_LRS `
-Kind StorageV2 `
-EnableHttpsTrafficOnly 1
$defaultStorageAccountKey = (Get-AzStorageAccountKey `
-ResourceGroupName $resourceGroupName `
-Name $defaultStorageAccountName)[0].Value
$defaultStorageContext = New-AzStorageContext `
-StorageAccountName $defaultStorageAccountName `
-StorageAccountKey $defaultStorageAccountKey
New-AzStorageContainer `
-Name $defaultBlobContainerName `
-Context $defaultStorageContext #use the cluster name as the container name
####################################
# Create a configuration object
####################################
$hiveConfigValues = @{"hive.metastore.client.socket.timeout"="90s"}
$storageAccountResourceId = (Get-AzStorageAccount -ResourceGroupName $resourceGroupName ` -Name $defaultStorageAccountName).Id
$config = New-AzHDInsightClusterConfig `
-ClusterType "Spark" `
| Set-AzHDInsightDefaultStorage `
-StorageAccountResourceId "$storageAccountResourceId" `
-StorageAccountKey $defaultStorageAccountKey `
| Add-AzHDInsightConfigValue `
-HiveSite $hiveConfigValues `
-Spark2Defaults @{}
####################################
# Set Ambari admin username/password
####################################
$httpUserName = "admin" #HDInsight cluster username
$httpPassword = '<ENTER A PASSWORD>'
$httpPW = ConvertTo-SecureString -String $httpPassword -AsPlainText -Force
$httpCredential = New-Object System.Management.Automation.PSCredential($httpUserName,$httpPW)
####################################
# Set ssh username/password
####################################
$sshUserName = "sshuser" #HDInsight ssh user name
$sshPassword = '<ENTER A PASSWORD>'
$sshPW = ConvertTo-SecureString -String $sshPassword -AsPlainText -Force
$sshCredential = New-Object System.Management.Automation.PSCredential($sshUserName,$sshPW)
####################################
# Create an HDInsight cluster
####################################
New-AzHDInsightCluster `
-ResourceGroupName $resourceGroupName `
-ClusterName $hdinsightClusterName `
-Location $location `
-ClusterSizeInNodes 2 `
-Version "4.0" `
-HttpCredential $httpCredential `
-SshCredential $sshCredential `
-Config $config
####################################
# Verify the cluster
####################################
Get-AzHDInsightCluster `
-ClusterName $hdinsightClusterName