Anpassen von HDInsight-Clustern mithilfe von BootstrapCustomize HDInsight clusters using Bootstrap

Bootstrap-Skripts ermöglichen Ihnen das programmgesteuerte Installieren und Konfigurieren von Komponenten in Azure HDInsight.Bootstrap scripts allow you to install and configure components in Azure HDInsight programmatically.

Beim Erstellen Ihres HDInsight-Clusters gibt es drei Ansätze zum Festlegen der Einstellungen für die Konfigurationsdatei:There are three approaches to set configuration file settings as your HDInsight cluster is created:

  • Mithilfe von Azure PowerShellUse Azure PowerShell
  • Verwenden von .NET SDKUse .NET SDK
  • Verwenden von Azure Resource Manager-VorlagenUse Azure Resource Manager template

Mit diesen programmgesteuerten Methoden können Sie z. B. Optionen in diesen Dateien konfigurieren:For example, using these programmatic methods, you can configure options in these files:

  • clusterIdentity.xmlclusterIdentity.xml
  • core-site.xmlcore-site.xml
  • gateway.xmlgateway.xml
  • hbase-env.xmlhbase-env.xml
  • hbase-site.xmlhbase-site.xml
  • hdfs-site.xmlhdfs-site.xml
  • hive-env.xmlhive-env.xml
  • hive-site.xmlhive-site.xml
  • mapred-sitemapred-site
  • oozie-site.xmloozie-site.xml
  • oozie-env.xmloozie-env.xml
  • storm-site.xmlstorm-site.xml
  • tez-site.xmltez-site.xml
  • webhcat-site.xmlwebhcat-site.xml
  • yarn-site.xmlyarn-site.xml
  • server.properties (Kafka-Brokerkonfiguration)server.properties (kafka-broker configuration)

Informationen zum Installieren zusätzlicher Komponenten in HDInsight-Clustern während ihrer Erstellung finden Sie unter Anpassen von HDInsight-Clustern mithilfe von Skriptaktionen (Linux).For information on installing additional components on HDInsight cluster during the creation time, see Customize HDInsight clusters using Script Action (Linux).

VoraussetzungenPrerequisites

  • Bei Verwendung von PowerShell benötigen Sie das Az-Modul.If using PowerShell, you'll need the Az Module.

Mithilfe von Azure PowerShellUse Azure PowerShell

Der folgende PowerShell-Code passt eine Apache Hive-Konfiguration an:The following PowerShell code customizes an Apache Hive configuration:

Wichtig

Möglicherweise muss der Parameter Spark2Defaults mit Add-AzHDInsightConfigValue verwendet werdet.The parameter Spark2Defaults may need to be used with Add-AzHDInsightConfigValue. Sie können leere Werte an den Parameter übergeben, wie im folgenden Codebeispiel gezeigt.You can pass empty values to the parameter as shown in the code example below.

# hive-site.xml configuration
$hiveConfigValues = @{ "hive.metastore.client.socket.timeout"="90s" }

$config = New-AzHDInsightClusterConfig `
    | Set-AzHDInsightDefaultStorage `
        -StorageAccountName "$defaultStorageAccountName.blob.core.windows.net" `
        -StorageAccountKey $defaultStorageAccountKey `
    | Add-AzHDInsightConfigValue `
        -HiveSite $hiveConfigValues `
        -Spark2Defaults @{}

New-AzHDInsightCluster `
    -ResourceGroupName $existingResourceGroupName `
    -ClusterName $clusterName `
    -Location $location `
    -ClusterSizeInNodes $clusterSizeInNodes `
    -ClusterType Hadoop `
    -OSType Linux `
    -Version "3.6" `
    -HttpCredential $httpCredential `
    -Config $config

Ein vollständiges funktionierendes PowerShell-Skript finden Sie im Anhang.A complete working PowerShell script can be found in Appendix.

So überprüfen Sie die Änderung:To verify the change:

  1. Navigieren Sie zu https://CLUSTERNAME.azurehdinsight.net/, wobei CLUSTERNAME der Name Ihres Clusters ist.Navigate to https://CLUSTERNAME.azurehdinsight.net/ where CLUSTERNAME is the name of your cluster.
  2. Navigieren Sie im Menü auf der linken Seite zu Hive > Configs > Advanced.From the left menu, navigate to Hive > Configs > Advanced.
  3. Erweitern Sie Advanced hive-site.Expand Advanced hive-site.
  4. Suchen Sie hive.metastore.client.socket.timeout, und vergewissern Sie sich, dass der Wert 90s lautet.Locate hive.metastore.client.socket.timeout and confirm the value is 90s.

Weitere Beispiele zum Anpassen anderer Konfigurationsdateien:Some more samples on customizing other configuration files:

# 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

Verwenden von .NET SDKUse .NET SDK

Informationen hierzu finden Sie unter Erstellen von Linux-basierten Clustern in HDInsight mit dem .NET SDK.See Create Linux-based clusters in HDInsight using the .NET SDK.

Verwenden von Resource Manager-VorlagenUse Resource Manager template

Sie können Bootstrap in einer Resource Manager-Vorlage verwenden:You can use bootstrap in Resource Manager template:

"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"
    }
}

Hadoop passt Azure Resource Manager-Vorlage für Cluster-Bootstrap an

Weitere InformationenSee also

Anhang: PowerShell-BeispielAppendix: PowerShell sample

Dieses PowerShell-Skript erstellt einen HDInsight-Cluster und passt eine Hive-Einstellung an.This PowerShell script creates an HDInsight cluster and customizes a Hive setting. Achten Sie darauf, Werte für $nameToken, $httpPassword und $sshPassword einzugeben.Be sure to enter values for $nameToken, $httpPassword, and $sshPassword.

####################################
# Set these variables
####################################
#region - used for creating Azure service names
$nameToken = "<ENTER AN ALIAS>"
#endregion

#region - cluster user accounts
$httpUserName = "admin"  #HDInsight cluster username
$httpPassword = '<ENTER A PASSWORD>'

$sshUserName = "sshuser" #HDInsight ssh user name
$sshPassword = '<ENTER A PASSWORD>'
#endregion

####################################
# Service names and varialbes
####################################
#region - service names
$namePrefix = $nameToken.ToLower() + (Get-Date -Format "MMdd")

$resourceGroupName = $namePrefix + "rg"
$hdinsightClusterName = $namePrefix + "hdi"
$defaultStorageAccountName = $namePrefix + "store"
$defaultBlobContainerName = $hdinsightClusterName

$location = "East US"
#endregion


####################################
# Connect to Azure
####################################
#region - Connect to Azure subscription
Write-Host "`nConnecting 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
# Select-AzSubscription -SubscriptionId "<SUBSCRIPTIONID>"

#endregion

#region - Create an HDInsight cluster
####################################
# Create dependent components
####################################
Write-Host "Creating a resource group ..." -ForegroundColor Green
New-AzResourceGroup `
    -Name  $resourceGroupName `
    -Location $location

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

# Note: Storage account kind BlobStorage cannot be used as primary storage.

$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"}

$config = New-AzHDInsightClusterConfig `
    | Set-AzHDInsightDefaultStorage `
        -StorageAccountName "$defaultStorageAccountName.blob.core.windows.net" `
        -StorageAccountKey $defaultStorageAccountKey `
    | Add-AzHDInsightConfigValue `
        -HiveSite $hiveConfigValues `
        -Spark2Defaults @{}

####################################
# Create an HDInsight cluster
####################################
$httpPW = ConvertTo-SecureString -String $httpPassword -AsPlainText -Force
$httpCredential = New-Object System.Management.Automation.PSCredential($httpUserName,$httpPW)

$sshPW = ConvertTo-SecureString -String $sshPassword -AsPlainText -Force
$sshCredential = New-Object System.Management.Automation.PSCredential($sshUserName,$sshPW)

New-AzHDInsightCluster `
    -ResourceGroupName $resourceGroupName `
    -ClusterName $hdinsightClusterName `
    -Location $location `
    -ClusterSizeInNodes 1 `
    -ClusterType Hadoop `
    -OSType Linux `
    -Version "3.6" `
    -HttpCredential $httpCredential `
    -SshCredential $sshCredential `
    -Config $config

####################################
# Verify the cluster
####################################
Get-AzHDInsightCluster `
    -ClusterName $hdinsightClusterName

#endregion