Udostępnij za pośrednictwem


Dostosowywanie klastrów usługi HDInsight przy użyciu narzędzia Bootstrap

Skrypty uruchamiania umożliwiają programowe instalowanie i konfigurowanie składników w usłudze Azure HDInsight.

Istnieją trzy podejścia do ustawiania ustawień pliku konfiguracji podczas tworzenia klastra usługi HDInsight:

  • Korzystanie z programu Azure PowerShell
  • Korzystanie z zestawu SDK dla platformy .NET
  • Korzystanie z szablonu usługi Azure Resource Manager

Na przykład przy użyciu tych metod programistycznych można skonfigurować opcje w następujących plikach:

  • 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
  • server.properties (konfiguracja brokera platformy Kafka)

Aby uzyskać informacje na temat instalowania większej liczby składników w klastrze usługi HDInsight w czasie tworzenia, zobacz Dostosowywanie klastrów usługi HDInsight przy użyciu akcji skryptu (Linux).

Wymagania wstępne

  • Jeśli używasz programu PowerShell, potrzebujesz modułu Az.

Korzystanie z programu Azure PowerShell

Poniższy kod programu PowerShell dostosowuje konfigurację programu Apache Hive :

Ważne

Być może trzeba będzie użyć parametru Spark2Defaults Add-AzHDInsightConfigValue. Puste wartości można przekazać do parametru, jak pokazano w poniższym przykładzie kodu.

# 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

Pełny działający skrypt programu PowerShell można znaleźć w dodatku.

Aby zweryfikować zmianę:

  1. Przejdź do lokalizacji, w https://CLUSTERNAME.azurehdinsight.net/ której CLUSTERNAME znajduje się nazwa klastra.
  2. W menu po lewej stronie przejdź do pozycji Zaawansowane konfiguracje>programu Hive.>
  3. Rozwiń węzeł Zaawansowane hive-site.
  4. Znajdź wartość hive.metastore.client.socket.timeout i upewnij się, że wartość to 90s.

Kilka innych przykładów dotyczących dostosowywania innych plików konfiguracji:

# 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

Korzystanie z zestawu SDK dla platformy .NET

Zobacz Zestaw SDK usługi Azure HDInsight dla platformy .NET.

Używanie szablonu usługi Resource Manager

Możesz użyć bootstrap w szablonie usługi 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"
    }
}

Hadoop customizes cluster bootstrap Azure Resource Manager template.

Przykładowy fragment kodu szablonu usługi Resource Manager umożliwiający przełączenie konfiguracji na platformie Spark2-defaults w celu okresowego czyszczenia dzienników zdarzeń z magazynu.

"configurations": {
    "spark2-defaults": {
        "spark.history.fs.cleaner.enabled": "true",
        "spark.history.fs.cleaner.interval": "7d",
        "spark.history.fs.cleaner.maxAge": "90d"
    }
}

Zobacz też

Dodatek: Przykład programu PowerShell

Ten skrypt programu PowerShell tworzy klaster usługi HDInsight i dostosowuje ustawienie programu Hive. Pamiętaj, aby wprowadzić wartości dla $nameToken, $httpPasswordi $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