发布时间:2023-11-17 12:00
通常用户可以直接通过管理门户(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