通过PowerShell 脚本在中国区Azure部署定制化HDInsight 集群

通常用户可以直接通过管理门户(https://Manage.windowsazure.cn) 来创建HDInsight 集群,但个人建议还是通过PowerShell 来创建:
1. 通过PowerShell 脚本来创建,脚本可以复用。
2. 通过PowerShell 脚本可以修改HDInsight 的默认参数,以适应不同业务的需求

通过PowerShell 创建定制化的HDInsight 集群的步骤如下:

1.准备好缺省的存储账号和缺省的Container,以及需要链接的多个存储账号。

需要说明的是,HDInsight 可以支持多个存储账号,目前在中国区Azure上一个HDInsight 集群最多可以绑定8个存储账号。HDInsight 和Azure 存储账号的Topo 图如下所示:
通过PowerShell 脚本在中国区Azure部署定制化HDInsight 集群_第1张图片

$storageAccountName_Default = "jerryhdtest"
$containerName_Default = "hdtest"
$storageAccountName_Add1 = "jerryhdtest2"

2.准备好Hive 元数据库。新建好一个Azure Database 用于存储Hive 元数据。

关于如何创建Azure Database 的步骤请参考:
http://www.windowsazure.cn/documentation/articles/sql-database-get-started/

$hiveSQLDatabaseServerName = "HiveMetaServerName"
$hiveSQLDatabaseName = "HDHiveMetaSql"

3. 获取存储账号密钥:

Select-AzureSubscription $subscriptionName
$storageAccountKey_Default = Get-AzureStorageKey $storageAccountName_Default | %{ $_.Primary }
$storageAccountKey_Add1 = Get-AzureStorageKey $storageAccountName_Add1 | %{ $_.Primary }

4.获取部署HDinsight 的虚拟网络或子网的信息

$vnetID = '5ad379f6-27ab-476d-****-***********'
$subNetName = 'HDSubnet'

5.设置MapReduce/ YARN 的相关参数:

$MapRedConfigValues=new-object 'Microsoft.WindowsAzure.Management.HDInsight.Cmdlet.DataObjects.AzureHDInsightMapReduceConfiguration'
$MapRedConfigValues.Configuration = @{"mapreduce.map.memory.mb"="1024";"mapreduce.reduce.memory.mb"="1024";"mapreduce.map.java.opts“=”-Xmx800m -Xms800m -Djava.net.preferIPv4Stack=true -XX:NewRatio=8 -XX:+UseNUMA -XX:+UseParallelGC“;"mapreduce.reduce.java.opts"="-Xmx800m -Xms800m -Djava.net.preferIPv4Stack=true -XX:NewRatio=8 -XX:+UseNUMA -XX:+UseParallelGC"} $YarnConfigValues= @{"yarn.app.mapreduce.am.resource.mb"="1024";"yarn.app.mapreduce.am.command-opts"="-Xmx800m -Xms800m -Djava.net.preferIPv4Stack=true -XX:NewRatio=8 -XX:+UseNUMA -XX:+UseParallelGC"} 

6.创建存储容器

$dest1Context = New-AzureStorageContext –StorageAccountName $storageAccountName_Default  -StorageAccountKey $storageAccountKey_Default -Environment 'AzureChinaCloud' 
New-AzureStorageContainer -Name $containerName_Default -Context $dest1Context

7.设置HDInsight 集群的参数:

$config = New-AzureHDInsightClusterConfig -ClusterSizeInNodes $clusterNodes  -VirtualNetworkId $vnetID -SubnetName $subNetName
|Set-AzureHDInsightDefaultStorage -StorageAccountName "$storageAccountName_Default.blob.core.chinacloudapi.cn"-StorageAccountKey $storageAccountKey_Default -StorageContainerName $containerName_Default 
|Add-AzureHDInsightStorage -StorageAccountName "$storageAccountName_Add1.blob.core.chinacloudapi.cn" -StorageAccountKey $storageAccountKey_Add1|
 Add-AzureHDInsightConfigValues -MapReduce $MapRedConfigValues -Yarn $YarnConfigValues 
|Add-AzureHDInsightMetastore -SqlAzureServerName "$hiveSQLDatabaseServerName.database.chinacloudapi.cn" -DatabaseName $hiveSQLDatabaseName -Credential $credential -MetastoreType HiveMetastore 

8.基于以上参数创建HDInsight集群:

New-AzureHDInsightCluster -Name $clusterName  -Credential $credential -Config $config -Location $location

你可能感兴趣的:(powershell,azure,HDinsight)