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. linux内核中sys_poll()的简化分析

    app:poll or select; kernel: sys_poll(); do_sys_poll(struct pollfd __user *ufds, unsigned int nfds,st ...

  2. 1006. Sign In and Sign Out

    #include <stdio.h> #include <algorithm> #include <iostream> #include <string.h& ...

  3. Hadoop 相关链接

    Apache   软件下载 http://mirror.bit.edu.cn/apache/ 相关文档链接: Apache Hadoop 2.5.2  http://hadoop.apache.org ...

  4. SQLite3中自增主键

    SQLite清空表并将自增列归零 SQL标准中有TRUNCATE TABLE语句,用来清空表的所有内容. 但SQLite不支持这个语句.在SQLite中直接使用 DELETE FROM TableNa ...

  5. 2016 系统设计第一期 (档案一)MVC a标签 跳转 Html.ActionLink的用法

    html: <a class="J_menuItem" href="baidu.com">权限管理</a> cshtml: 原有样式: ...

  6. java指令集

    0x00 nop      什么都不做 0x01 aconst_null 将null推送至栈顶 0x02 iconst_m1   将int型-1推送至栈顶 0x03 iconst_0   将int型0 ...

  7. 改变navigationbar 标题颜色

    navigationController.navigationBar.titleTextAttributes=@{NSForegroundColorAttributeName:[UIColor yel ...

  8. log4j日志输出到web项目指定文件夹

    感谢 eric2500 的这篇文章:http://www.cxyclub.cn/n/27860/ 摘要:尝试将log4j的文件日志输出到web工程制定目录,遇到了很多问题,最终在eric2500的指导 ...

  9. MySQL 主主同步配置和主从配置步骤

    ★预备知识 : 1.双机热备 对于双机热备这一概念,我搜索了很多资料,最后,还是按照大多数资料所讲分成广义与狭义两种意义来说. 从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服 ...

  10. hdu 1561

    有依赖的背包,用树形dp解 #include<iostream> #include<cstdio> #include<cstring> #include<al ...