Azure HDInsight HBase DR解决方案
Sun
wei Sat, Feb 28 2015 3:07 AM
Apache HBase是目前非常流行的NoSQL数据库,通过HDFS+Zookeep+Master+Region Server的架构避免了单点故障具有很高的可靠性。在Azure HDInsight中的HBase也提供了相应的功能,通过Azure Storage来代替HDFS并提供了3个zookeeper及在多个workernode上的region server,并提供每月99.9%的SLA。但是对于一些更苛刻的场景,用户还需要DR的方案来保证业务的连续性。Apache HBase自身提供了Replication的功能,这种功能类似于MySQL里面的Master-Salve部署模式,我们可以部署2套Apache
HBase Cluster来实现DR的要求。在Azure的数据中心设计时,我们也考虑到DR的情况,在每一个区域我们都提供了2个互为灾备的数据中心,在中国我们有北部和东部2个数据中心来做数据中心间的灾备,这样我们就可以利用Azure的资源来设计HBase的灾备解决方案了。
首先在设计Azure HDInsight HBase灾备的前提是网络层面的互通。Azure是一种多租户的环境,每隔客户之间的网络是相互隔离的,即便是一个客户的订阅下,北部数据中心和东部数据中心的网络也是不能互通的。为了达到这种互通的效果,我们需要借助Azure Virtual Network以及Site-to-Site VPN技术将2个数据中心的网络层进行互联,具体可以参考 https://msdn.microsoft.com/library/azure/dn133795.aspx
其次我们还需要处理名称解析的问题。处于安全考虑Azure默认提供的DNS只能解析一个云服务内的名称解析,对于这种跨Azure数据中心的名称解析,我们可以通过自己搭建DNS并在虚拟网络里设定DNS的方法来处理,将2个Cluster里面的服务器通过手工的方法注册到DNS之中。
最后的步骤就是创建HBase Cluster了。由于需要在部署Hbase的时候指定虚拟网络并修改hbase-site.xml,所以我们需要通过Powershell脚本的方式来创建。下面的示例脚本可以帮我们在2个数据中心中创建我们需要的2个cluster
#default storage account name for HDInsight cluster
$storageAccountName01="Your storage account name in China North"
$storageAccountName02="Your storage account name in China East"
#default storage container name for HDInsight cluster, the container is used to save the hadoop system files and samples
$containerName01="Your cluster storage account container name in China North"
$containerName02="Your cluster storage account container name in China East"
#get storage primary access key
$storageAccountKey01=Get-AzureStorageKey $storageAccountName01| %{$_.Primary}
$storageAccountKey02=Get-AzureStorageKey $storageAccountName02| %{$_.Primary}
#define cluster name
$clusterName01="Your cluster Name in China North"
$clusterName02="Your cluster name in China East"
#define cluster location
$location01="China North"
$location02="China East"
#define cluster node count
$clusterNodes=1
#define hadoop cluster username and password
$clusterUserName="your admin name"
$clusterPassword="your admin password”
$password=ConvertTo-SecureString $clusterPassword -AsPlainText -Force
$cred=New-Object System.Management.Automation.PSCredential($clusterUserName,$password)
#define Chine HDInsight endpoint
$MCEndpoint="core.chinacloudapi.cn"
$VNetName01="Your vnet name in China North"
$SubnetName01="Your subnet name in China North"
$VNetName02=" Your vnet name in China East"
$SubnetName02=" Your subnet name in China East"
$vnetID01=(Get-AzureVNetSite -VNetName $VNetName01).Id
$vnetID02=(Get-AzureVNetSite -VNetName $VNetName02).Id
$HBaseConfig=New-Object Microsoft.WindowsAzure.Management.HDInsight.Cmdlet.DataObjects.AzureHDInsightHBaseConfiguration
$HBaseConfig.Configuration=@{"hbase.replication"="true"}
#create cluster, you should remove Verbose and Debug parameter if you doesn't need detail information.
$confighbdrbj01 = New-AzureHDInsightClusterConfig -ClusterSizeInNodes $clusterNodes -ClusterType HBase| Set-AzureHDInsightDefaultStorage -StorageAccountName "$storageAccountName01.blob.core.chinacloudapi.cn" -StorageAccountKey $storageAccountKey01 -StorageContainerName
$containerName01| Add-AzureHDInsightConfigValues -HBase $HBaseConfig
$confighbdrbj01.VirtualNetworkId=$vnetID01
$confighbdrbj01.SubnetName=$SubnetName01
$confighbdrsh01 = New-AzureHDInsightClusterConfig -ClusterSizeInNodes $clusterNodes -ClusterType HBase| Set-AzureHDInsightDefaultStorage -StorageAccountName "$storageAccountName02.blob.core.chinacloudapi.cn" -StorageAccountKey $storageAccountKey02 -StorageContainerName
$containerName02| Add-AzureHDInsightConfigValues-HBase $HBaseConfig
$confighbdrsh01.VirtualNetworkId=$vnetID02
$confighbdrsh01.SubnetName=$SubnetName02
New-AzureHDInsightCluster -Name $clusterName01 -Config $confighbdrbj01 -Location $location01 -Credential $cred -EndPoint $MCEndpoint -Verbose -Debug
New-AzureHDInsightCluster -Name $clusterName02 -Config $confighbdrsh01 -Location $location02 -Credential $cred -EndPoint $MCEndpoint -Verbose -Debug
剩下的步骤就是在HBase里面配置Peer和table了,具体步骤可以参考http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/replication/package-summary.html
在Master cluster中添加peer,Zookeeper Quorum是指Slave Cluster的Zookeeper Qourum,可以通过http://azure.microsoft.com/en-us/documentation/articles/hdinsight-hbase-provision-vnet
里面提供的方法来获取,或者直接开启RDP登陆查看hbase-site.xml
add_peer '1','{ZookeeperQuorum}:2181:/hbase'
create ‘sampletable’,'cf1',{NAME=>'cf1',REPLICATION_SCOPE=>'1'}
然后再Slave cluster里面创建相同的table,这样就可以完成了。
Wei & Yiyu
如果你有任何疑问,欢迎访问MSDN社区,由专家来为您解答Windows
Azure各种技术问题,或者拨打世纪互联客户服务热线400-089-0365/010-84563652咨询各类服务信息。
本文转载自: http://blogs.msdn.com/b/cciccat/archive/2015/02/28/azure-hdinsight-hbase-dr.aspx
Azure HDInsight HBase DR解决方案的更多相关文章
- 在Azure HDInsight HBase集群中使用Thrift接口
Sun wei Wed, Feb 25 2015 2:17 AM Apache Thrift 是一种可扩展的跨语言服务接口,可以通过内置的代码生成引擎帮助创建跨语言服务类库,Apache HBase ...
- HBase(三): Azure HDInsigt HBase表数据导入本地HBase
目录: hdfs 命令操作本地 hbase Azure HDInsight HBase表数据导入本地 hbase hdfs命令操作本地hbase: 参见 HDP2.4安装(五):集群及组件安装 , ...
- Azure HDInsight 和 Spark 大数据实战(一)
What is HDInsight? Microsoft Azure HDInsight 是基于 Hortonoworks Data Platform (HDP) 的 Hadoop 集群,包括Stor ...
- Windows Azure HDInsight 支持预览版 Hadoop 2.2 群集
Windows Azure HDInsight 支持预览版 Hadoop 2.2 群集 继去年 10 月推出 Windows Azure HDInsight 之后,我们宣布 Windows Az ...
- Windows Azure HDInsight 现已正式发布!
今天,我们宣布正式发布 Windows Azure HDInsight 服务.HDInsight 是 Microsoft 提供的基于 Hadoop 的服务,为云提供 100% 的 Apache Had ...
- HDInsight HBase概观
HDInsight HBase概观 什么是HBase的? HBase它是基于HadoopApache开源NoSQL数据库.它提供了很多非结构化和半结构化数据一致性的随机存取能力的.它是仿照谷歌的Big ...
- Windows Azure HDInsight 使用技巧
Windows Azure HDInsight是一个面向大数据的PaaS服务,是PaaS版本的Hadoop.HDInsight是微软与Hortonworks合作的产物.可以理解为Hortonworks ...
- Azure HDInsight 现已在中国正式发布
今年月,我们宣布微软成为全球首家在中国公开发布云 Hadoop 产品公共预览版的云提供商.今天,微软非常高兴地宣布 AzureHDInsight现已在中国正式发布.中国本土组织以及在中国设立了办 ...
- SQLServer 2014 本地机房HA+灾备机房DR解决方案
SQLServer 2014 主数据中心HA+灾备机房DR解决方案 SQLServer 2008 的时候使用 local WSFC+DR Mirror方式,对象是单数据库 两个单独的 WSFC 上使用 ...
随机推荐
- Python 基础篇:介绍
1. Python 发展 1989年,为了打发圣诞节假期,Guido开始写Python语言的编译器.Python这个名字,来自Guido所挚爱的电视剧Monty Python's Flying Cir ...
- Oracle “CONNECT BY” 使用
Oracle “CONNECT BY” 使用 功能说明: 语法结构如下: [ START WITH condition ] CONNECT BY [ NOCYCLE ] condition 说明: 1 ...
- 【学习总结】【多线程】 线程 & 进程 & NSThread(多线程的一套API)
一.进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开 Chrome.Xcode,系统就会分别启动2个进 ...
- WinForm 换行问题 textbox (转)
WinForm 换行问题 textbox 今天碰到一段string在label中能正常换行,但是在textbox中却无法换行的问题. 首先考虑是换行符的问题.在网上查了些资料: 1.TextBox 中 ...
- Telerik RadGridView 右键菜单如何设置?
问题: 我想去掉红线框住的部分,希望有会的网友帮助我,谢谢! 解决方法: 默认: 修改: [利用 ContextMenuOpening 事件,对应你的项目,你要自己修改那判断的字符串(你的中文)] p ...
- js的原型链
js中的原型链是一个很重要的概念,理解了原型链,对js程序的开发有很大的好处,废话不说,先上图: javascript是基于原型的语言,所以一个对象可以另一个对象继承.不过javascript实现的时 ...
- hdu 1087
动规 d[i]记录以第 i 个数结尾的最大值 #include <cstdio> #include <algorithm> #include <cstring> ...
- rsync介绍
老套的搬用一下rsync的介绍,rsync是Linux系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync.rsync支持大多数的类Unix系统,无论是Linux.Sola ...
- 1030-ACM程序设计之马拉松竞赛
描述 校ACM协会近四个月举行了为期100天ACM程序设计之马拉松竞赛,竞赛题总数为1000,同学们反响热烈,先后有许多ACM程序设计竞赛爱好者开始先后编号,成功解答的题目数为选手的成绩. 今天进行成 ...
- ZOJ 2563 Long Dominoes(状态压缩DP)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1563 题目大意:在h*w的矩阵里铺满1*3的小矩阵,共有多少种方法 ...