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解决方案的更多相关文章

  1. 在Azure HDInsight HBase集群中使用Thrift接口

    Sun wei  Wed, Feb 25 2015 2:17 AM Apache Thrift 是一种可扩展的跨语言服务接口,可以通过内置的代码生成引擎帮助创建跨语言服务类库,Apache HBase ...

  2. HBase(三): Azure HDInsigt HBase表数据导入本地HBase

    目录: hdfs 命令操作本地 hbase Azure HDInsight HBase表数据导入本地 hbase hdfs命令操作本地hbase: 参见  HDP2.4安装(五):集群及组件安装 , ...

  3. Azure HDInsight 和 Spark 大数据实战(一)

    What is HDInsight? Microsoft Azure HDInsight 是基于 Hortonoworks Data Platform (HDP) 的 Hadoop 集群,包括Stor ...

  4. Windows Azure HDInsight 支持预览版 Hadoop 2.2 群集

     Windows Azure HDInsight 支持预览版 Hadoop 2.2 群集 继去年 10 月推出 Windows Azure HDInsight 之后,我们宣布 Windows Az ...

  5. Windows Azure HDInsight 现已正式发布!

    今天,我们宣布正式发布 Windows Azure HDInsight 服务.HDInsight 是 Microsoft 提供的基于 Hadoop 的服务,为云提供 100% 的 Apache Had ...

  6. HDInsight HBase概观

    HDInsight HBase概观 什么是HBase的? HBase它是基于HadoopApache开源NoSQL数据库.它提供了很多非结构化和半结构化数据一致性的随机存取能力的.它是仿照谷歌的Big ...

  7. Windows Azure HDInsight 使用技巧

    Windows Azure HDInsight是一个面向大数据的PaaS服务,是PaaS版本的Hadoop.HDInsight是微软与Hortonworks合作的产物.可以理解为Hortonworks ...

  8. Azure HDInsight 现已在中国正式发布

     今年月,我们宣布微软成为全球首家在中国公开发布云 Hadoop 产品公共预览版的云提供商.今天,微软非常高兴地宣布 AzureHDInsight现已在中国正式发布.中国本土组织以及在中国设立了办 ...

  9. SQLServer 2014 本地机房HA+灾备机房DR解决方案

    SQLServer 2014 主数据中心HA+灾备机房DR解决方案 SQLServer 2008 的时候使用 local WSFC+DR Mirror方式,对象是单数据库 两个单独的 WSFC 上使用 ...

随机推荐

  1. SQL*Loader使用详解(一)

    1.SQL*Loader介绍 1)SQL*Loader是一个从外部文件指加载数据到Oracle数据库的工具.语法类似于DB2的Load语法,但SQL*Loader支持各种load格式.选择性load和 ...

  2. Oracle全表扫描

    优化器在形成执行计划时需要做的一个重要选择——如何从数据库查询出需要的数据.对于SQL语句存取的任何表中的任何行,可能存在许多存取路径(存取方法),通过它们可以定位和查询出需要的数据.优化器选择其中自 ...

  3. VS2010中无法嵌入互操作类型“......”,请改用适用的接口的解决方法

  4. Kinetic使用注意点--image

    new Image(config) 参数: config:包含所有配置项的对象. { image: "图片对象", crop: "图片裁剪对象", fill: ...

  5. 在系统方法中调用navigationController的标准写法

    在系统方法中调用navigationController的标准写法 -(void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animat ...

  6. hdu 4712 Hamming Distance(随机函数暴力)

    http://acm.hdu.edu.cn/showproblem.php?pid=4712 Hamming Distance Time Limit: 6000/3000 MS (Java/Other ...

  7. 常见的仿Flash图片轮播效果

    现在基本在很多网站上都能看到轮播效果,虽然有点烂大街的赶脚,但是这个效果确实很好看,很时尚,今天分享下代码相对较少的轮播框架,望采纳 . ①向左滑动: 思路: 将几个图片用分别用几个 li 包住,并且 ...

  8. mysql分表与分区表

    mysql分表与分区表 转自:http://blog.51yip.com/mysql/949.html   一,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具 ...

  9. Jmeter 使用实践 - 接口 diff 测试

    大多数人都使用 Jmeter 做过性能测试,但是在使用的过程中你会发现,它不仅可以做性能测试和功能测试,还能够满足基本的接口测试需求. 相比其他工具,Jmeter 入门门槛较低,安装也比较方便,根据自 ...

  10. 中国首个 SaaS 模式的云告警平台安卓版 APP 上线

    今年一月底,国内首个 SaaS 模式的云告警平台 OneAlert 正式发布了 iOS 版 App 客户端,今天上午,安卓版 App 客户端也正式上线了!每个安卓用户,无需电脑,都可以通过手机全程跟踪 ...