通常用户可以直接通过管理门户(https://Manage.windowsazure.cn) 来创建HDInsight 集群,但个人建议还是通过PowerShell 来创建:
1. 通过PowerShell 脚本来创建,脚本可以复用。
2. 通过PowerShell 脚本可以修改HDInsight 的默认参数,以适应不同业务的需求
通过PowerShell 创建定制化的HDInsight 集群的步骤如下:
1.准备好缺省的存储账号和缺省的Container,以及需要链接的多个存储账号。
需要说明的是,HDInsight 可以支持多个存储账号,目前在中国区Azure上一个HDInsight 集群最多可以绑定8个存储账号。HDInsight 和Azure 存储账号的Topo 图如下所示:
$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