C#码农的大数据之路 - 使用Azure Management API创建HDInsight集群
Azure平台提供了几乎全线产品的API,可以使用第三方工具来进行管理。对于.NET更是提供封装好了的库方便使用C#等语言实现Azure的管理。
我们使用创建HDInsight集群为例来介绍使用C#管理Azure。
由于HDInsight是按照集群存在的小时收费,所以对于集群的使用都是使用时创建,使用完成立马删除。删除比较好说,Azure Portal点一下按钮并确认就可以了。而创建就需要我们一步步的进行选择。如果我们需要定制集群的属性较多,一步步的选择不但麻烦还容易出错。而使用Azure Management API以自动化的方式创建集群就非常必要。
首先我们通过Azure Portal中向导的方式创建集群,但是在最后一步创建前保存一个模板,这样才可以通过代码使用保存的模板快速创建集群。如图:
下载后得到一个名为template.zip
的压缩包。里面有PowerShell、Shell、Ruby以及C#四种语言进行集群创建的示例脚本。这里我们关心的就是C#示例所在的DeploymentHelper.cs
。而另外两个json文件,即是记录了我们在向导中选择的集群各种参数的模板文件。
在VS中创建一个.NET Console App,命名为NetCreateCluster
,然后将DeploymentHelper.cs
导入项目,然后将两个json模板文件也导入项目中并且设置“复制”选项为“如果较新则复制”。
代码在这里下载
两个模板中,template.json
不需要进行任何修改(其中的内容就是Portal中向导一步步所选择的配置,如果不满意可以自行修改,或者使用向导生成新的模板文件),而parameters.json
中的clusterLoginPassword
和sshPassword
两个项的value需要被替换为我们自己的密码,如图位置:
创建集群时名字尽量固定,这样方便ssh连接等一系列操作。
DeploymentHelper.cs
中我们需要修改的地方集中在其成员变量:
string subscriptionId = "your-subscription-id";
string clientId = "your-service-principal-clientId";
string clientSecret = "your-service-principal-client-secret";
string resourceGroupName = "resource-group-name";
string deploymentName = "deployment-name";
string resourceGroupLocation = "resource-group-location"; // must be specified for creating a new resource group
string pathToTemplateFile = "path-to-template.json-on-disk";
string pathToParameterFile = "path-to-parameters.json-on-disk";
string tenantId = "tenant-id";
这其中pathToTemplateFile
和pathToParameterFile
分别指向上面提到的两个json文件的路径。在上面的配置中,它们和应用程序在同一个目录中,所以直接写文件名即可。
而SubscriptionId,TentId等,可以通过之前介绍的Azure PowerShell命令Login-AzureRmAccount
快速获取。可以见此文。
deploymentName这个字段可以随便设置,只作为部署的一个标识,而不会影响集群本身的属性。
resourceGroupName是资源组的名称,这个在Portal中一眼就可以看到。如图:
如果要新建资源组这个属性可以添加新资源组的名称,但是这时候就需要指定resourceGroupLocation
的名称。(在使用现有资源组的情况下,resourceGroupLocation
的可以省略不写)。
所有属性里最麻烦的是clientId
和clientSecret
。这对值要以如下方式新建(官方文档见此,注意,官方文档中分配的是读者权限,而我们创建集群需要至少参与者权限):
点击左侧菜单中的Azure Active Directory
按钮进入Azure Active Directory配置界面:
选择应用注册子菜单,在弹出窗口中点击新应用程序注册按钮。
在新建注册窗口中输入一些基本信息:
注册完成后,记下应用程序ID,这将作为clientId
。
然后点击所有设置,弹出窗口中,选择密钥,然后添加一个密钥。
注意,这里输入的密钥值(我们自行使用密钥生成工具生成一个)还不是clientSecret
。
保存这个密钥后将弹出一个确认框。记下其中的密钥值,其将作为clientSecret
。
注意,这个密钥仅在这个窗口显示一次,无法再次查询,如果遗忘了这个密钥,只能再来这里创建新的密钥。
注册完新的应用后,还需要给其分配权限。
在Portal左侧菜单中找到图标为钥匙的订阅菜单。进入订阅管理窗口。
点击我们当前的订阅,弹出的子菜单中选择“访问控制(标识和访问管理)”,在弹出的窗口中点击添加。
弹出窗口中首先选择角色。
注意:角色至少选择“参与者”,“读者”是没有创建集群的权限。
然后添加用户中,选择刚才注册的应用程序。(默认列表中是没有,输入注册的应用程序名称会进行查找,并显示列表)
完成后点击保存,当看到下图中出现注册的应用程序说明权限已分配好。这样就可以使用之前保存的clientId
和clientSecret
来创建集群了。
上面这些窗口和菜单的名称经常在变动(我们都知道微软有个神奇的改名部门),请根据最新版本灵活的调整。
设置好DeploymentHelper.cs
中的字段后,将Main函数实现为如下即可测试使用C#进行HDInsight集群的部署:
static void Main(string[] args)
{
var helper = new DeploymentHelper();
helper.Run();
Console.ReadLine();//防止退出
}
代码准备完毕,运行上面的代码需要还需要安装如下几个NuGet包:
Microsoft.Azure.Management.Authorization
Microsoft.Azure.Management.ResourceManager //需要选中包括预发行版
Microsoft.Rest.ClientRuntime.Azure.Authentication
这样就可以运行程序来创建HDInsight集群了。
等待10来分钟,会看到集群创建成功的提示。
创建HDInsight集群的方法就是这样了。按照同样的方法可以通过API对Azure进行其它管理。
C#码农的大数据之路 - 使用Azure Management API创建HDInsight集群的更多相关文章
- C#码农的大数据之路 - 使用C#编写MR作业
系列目录 写在前面 从Hadoop出现至今,大数据几乎就是Java平台专属一般.虽然Hadoop或Spark也提供了接口可以与其他语言一起使用,但作为基于JVM运行的框架,Java系语言有着天生优势. ...
- C#码农的大数据之路 - 使用Ambari自动化安装HDP2.6(基于Ubuntu16.04)并运行.NET Core编写的MR作业
准备主机 准备3台主机,名称作用如下: 昵称 Fully Qualified Domain Name IP 作用 Ubuntu-Parrot head1.parrot 192.168.9.126 Am ...
- C#码农的大数据之路 - HDP SandBox配置及VS连接.md
在进行HDInsight的开发测试之前,搭建一个测试环境是很重要的. 由于微软与Hortonworks合作开发了HDInsgiht,如果不方便建立Azure账号使用Azure HDInsight进行开 ...
- 大数据初级笔记二:Hadoop入门之Hadoop集群搭建
Hadoop集群搭建 把环境全部准备好,包括编程环境. JDK安装 版本要求: 强烈建议使用64位的JDK版本,这样的优势在于JVM的能够访问到的最大内存就不受限制,基于后期可能会学习到Spark技术 ...
- 海豚调度5月Meetup:6个月重构大数据平台,帮你避开调度升级改造/集群迁移踩过的坑
当今许多企业都有着技术架构的DataOps程度不够.二次开发成本高.迁移成本高.集群部署混乱等情况,团队在技术选型之后发现并不适合自己的需求,但是迁移成本和难度又比较大,甚至前团队还留下了不少坑,企业 ...
- 大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 图文详解
引言 在之前的大数据学习系列中,搭建了Hadoop+Spark+HBase+Hive 环境以及一些测试.其实要说的话,我开始学习大数据的时候,搭建的就是集群,并不是单机模式和伪分布式.至于为什么先写单 ...
- 新闻网大数据实时分析可视化系统项目——7、Kafka分布式集群部署
Kafka是由LinkedIn开发的一个分布式的消息系统,使用Scala编写,它以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如Cloudera.Apache Storm.Spa ...
- 新闻网大数据实时分析可视化系统项目——6、HBase分布式集群部署与设计
HBase是一个高可靠.高性能.面向列.可伸缩的分布式存储系统,利用Hbase技术可在廉价PC Server上搭建 大规模结构化存储集群. HBase 是Google Bigtable 的开源实现,与 ...
- 新闻网大数据实时分析可视化系统项目——4、Zookeeper分布式集群部署
ZooKeeper 是一个针对大型分布式系统的可靠协调系统:它提供的功能包括:配置维护.名字服务.分布式同步.组服务等: 它的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效.功能稳定的 ...
随机推荐
- 利用_winreg模块在注册表中分析无线访问热点
_winreg.OpenKey(key, sub_key, res, sam) key是一个已经打开的键,或者是HKEY_CLASSES_ROOT.HKEY_CURRENT_USER.HKEY ...
- oracle实现like多关键字查询
oracle实现like多关键字查询: select * from contract_info tt where 1=1 and REGEXP_LIKE(tt.contract_name,'关键字1| ...
- JS中substring与substr的区别
Substring: 该方法可以有一个参数也可以有两个参数. (1) 一个参数: 示例: var str=“Olive”: str.substring(3); 结果:“ve” 说明:当substri ...
- HYML / CSS部分
1.什么是盒子模型? 在网页中,一个元素占有空间的大小由几个部分构成,其中包括元素的内容(content),元素的内边距(padding),元素的边框(border),元素的外边距(margin)四个 ...
- java类集框架(ArrayList,LinkedList,Vector区别)
主要分两个接口:collection和Map 主要分三类:集合(set).列表(List).映射(Map)1.集合:没有重复对象,没有特定排序方式2.列表:对象按索引位置排序,可以有重复对象3.映射: ...
- SQL SERVER 变量的使用和样例
定义和使用局部变量:说明: 局部变量是用户可自定义的变量. 作用范围仅在程序内部. 局部变量的名称是用户自定义的,命名的局部变量名要符合SQL Server 2000标识符命名规则=>以@开 在 ...
- IO调度器原理介绍
IO调度器(IO Scheduler)是操作系统用来决定块设备上IO操作提交顺序的方法.存在的目的有两个,一是提高IO吞吐量,二是降低IO响应时间.然而IO吞吐量和IO响应时间往往是矛盾的,为了尽量平 ...
- CSS3 02. 边框、边框圆角、边框阴影、边框图片、渐变、线性渐变、径向渐变、背景、过渡transition、2D转换
边框圆角 border-radius 每个角可以设置两个值,x值.y值 border-top-left-radius:水平半径 垂直半径 border-radius:水平半径/垂直半径 border- ...
- 在 ubuntu 下优雅的使用 Sublime Text 3 写 Python
此文章非技术文,就是一些对于 Sublime 俺之前经常用的 方法(快捷键 )和 工具 有一些工具俺也用过,但是效果不太好,可以说跟shi 一样,可能每个人的用处不一样,咱就不提了,免得招 来口舌之争 ...
- Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace 解决方法
这个问题是在用到spring时,本地IDE里面跑的很正常,但是打包后在集群上运行时报错. 多方查找资料后确定了问题的根源,由于在依赖中调用了spring的许多包,会存在文件覆盖的情况. 具体是 这三个 ...