官方文档
http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/replication/package-summary.html#requirements
http://hbase.apache.org/replication.html
参考:http://www.infoq.com/cn/articles/lp-hbase-data-disaster-recovery
Zookeeper should be handled by yourself, not by HBase, and should always be available during the deployment.
1.zookeeper不用hbase管理 修改hbase-env.sh
export HBASE_MANAGES_ZK=false
2.安装zookeeper 下载zookeeper 解压zookeeper
创建文件/hadoopDATA/zookeeper(根据配置文件dataDir)
每台zookeeper机器
建立/hadoopDATA/zookeeper/myid文件并根据
server.1=192.168.40.240:2888:3888
server.2=192.168.40.246:2888:3888
server.3=192.168.40.247:2888:3888
server.4=
192.168.40.248:2888:3888
写入1,2,3,4等
如192.168.40.240机器的myid=1
192.168.40.246机器的myid=2
编辑zoo.cfg
dataDir=/hadoopDATA/zookeeper
server.1=192.168.40.240:2888:3888
server.2=192.168.40.246:2888:3888
server.3=192.168.40.247:2888:3888
server.4=192.168.40.248:2888:3888
3.copy zoo.cfg 至/hbase/conf文件夹下
copy zookeeper至各服务器,并创建文件/hadoopDATA/zookeeper/myid,根扰配置文件分别写入各个值
scp -r zookeeper-3.4.3/ hadoop@slave1:/home/hadoop/
scp -r zookeeper-3.4.3/ hadoop@slave2:/home/hadoop/
scp -r zookeeper-3.4.3/ hadoop@slave3:/home/hadoop/
4.启动zookeeper验证是否正常
zookeeper目录下各服务器分别启动zookeeper
./bin/zkServer.sh
All
machines from both clusters should be able to reach every other machine
since replication goes from any region server to any other one on the
slave cluster. That also includes the Zookeeper clusters.
两个集群间机器互联没问题(ssh master,ssh slave1,ssh salve2,ssh slave3)
Both
clusters should have the same HBase and Hadoop major revision. For
example, having 0.90.1 on the master and 0.90.0 on the slave is correct
but not 0.90.1 and 0.89.20100725.
版本保持一致
Every
table that contains families that are scoped for replication should
exist on every cluster with the exact same name, same for those
replicated families.
两个cluster间的表结构需要保持一致
For multiple slaves, Master/Master, or cyclic replication version 0.92 or greater is needed.
测试环境
两个集群zookeeper handled not by hbase
编辑hbase-env.conf
export HBASE_MANAGES_ZK=false
两集群的zookeeper.znode.parent要不一致,hbase默认会创建/hbase/,cluster 2在hbase-site.xml 指定zookeeper.znode.parent为/hbase-2
1.cluster 1分布式Hbase环境
hadoop namenode(master),datanode(master,slave1,slave2)
HBase
HMaster(master),regionserver(master,slave1,slave2)
2.cluster2 Pseudo-distributed Hbase
hadoop配置文件
hdfs-site.xml
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/hadoopDATA/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/hadoopDATA/data</value>
</property>
<property>
<name>fs.replication</name>
<value>1</value>
</property>
</configuration>
core-site.xml
<configuration>
<!-- global properties -->
<property>
<name>hadoop.tmp.dir</name>
<value>/root/hadoopDATA/tmp</value>
</property>
<!-- file system properties -->
<property>
<name>fs.default.name</name>
<value>hdfs://slave3:9000</value>
</property>
</configuration>
masters
slave3
slaves
slave3
Hbase 配置文件
hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://slave3:9000/hbase3</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.master</name>
<value>slave3:60000</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>slave3</value>
</property>
<property>
<name>hbase.replication</name>
<value>true</value>
</property>
<property>
<name>zookeeper.znode.parent</name>
<value>/hbase-2</value>
</property>
regionservers
localhost
建立replication
1.Edit ${HBASE_HOME}/conf/hbase-site.xml on both cluster to add the following configurations:
<property>
<name>hbase.replication</name>
<value>true</value>
</property>
deploy the files, and then restart HBase if it was running.
2.add_peer '7', "slave3:2181:/hbase-2"
报错,实际使用中没有影响
hbase(main):004:0> add_peer '7'
,"slave3:2181:/hbase-2"
12/03/02 15:04:43 ERROR zookeeper.RecoverableZooKeeper: Node /hbase/replication/peers already exists and this is not a retry
0 row(s) in 0.0650 seconds
3.Once
you have a peer, you need to enable replication on your column
families. One way to do it is to alter the table and to set the
scope like this:
disable 'your_table'
alter 'your_table', {NAME => 'family_name', REPLICATION_SCOPE => '7
'}
enable 'your_table'
两个cluster的表存在且结构相同
4.开启停止复制
start_replication
stop_replication
相关推荐
HBase是建立在Hadoop之上的分布式数据库,用于存储和处理大数据。在配置Hbase-0.94.18时,首先需要确保Hadoop已经正确配置并运行。Hbase的配置文件主要在`conf/hbase-site.xml`中。关键配置包括: 1. 设置HBase的主...
HBase是一个开源的非关系型分布式数据库(NoSQL),它建立在Hadoop文件系统(HDFS)之上,具有良好的横向扩展能力。京东作为国内大型电商平台,其对HBase的应用实践对于了解分布式数据库在大规模电子商务环境中的...
他们建立了7个HBase集群,拥有200多个RegionServers,存储的数据量达到数百TB。 2. **Linux系统调优**: - **禁用透明大页(THP)**:THP可能导致性能问题,因此进行了关闭。 - **调整vm.swappiness**:设置为0,以...
搭建Kafka集群时,我们需要配置多个broker节点,并设置合适的参数如`num.partitions`和`replication.factor`以保证数据的冗余和可用性。Java调用Kafka时,可以使用Kafka的Java API创建生产者和消费者,进行消息发布...
- **HBase Replication**:展示HBase的复制机制。 - **HBase Aggregate**:介绍如何使用聚合函数进行数据统计。 - **HBase Parallel Scanning**:演示并行扫描数据的方法。 - **HBase Group-by**:展示如何使用...
接着,你还需要配置HDFS的参数,如`dfs.replication`(数据块副本数量)和`dfs.name.dir`(NameNode的目录),并在所有节点上安装和启动相关服务。 集群搭建是Hadoop应用的重要环节。Hadoop可以运行在伪分布模式...
- HBase是一个分布式的、面向列的开源数据库,它是建立在Hadoop之上的NoSQL数据库。 - **HBase集群结构** - HBase集群主要包括Master节点和RegionServer节点。 - **HBase的存储模型** - HBase的数据存储模型基于...
2. EC(Erasure Coding):引入了数据冗余编码技术,以更高效的方式提供数据保护,相比传统的Replication方式,节省了存储资源,同时保证数据安全性。 3. Kafka、Flink、HBase、Hdfs、Hive、Spark等组件的集成使用,...
在面对大规模数据检索的问题时,尤其是在数据量达到10亿、100亿级别的系统中,我们需要考虑以下几个关键点:选择适合的数据库(如MySQL、Sybase、Oracle、MongoDB、HBase等)、解决单点故障(通过负载均衡器、...
- 考虑使用分布式数据库,如Hadoop HBase或Apache Cassandra,这些数据库专门设计用于处理大规模数据。 - 对于关系型数据库,可以考虑使用支持分区和分片的MySQL,以提高性能和可扩展性。 2. **Spring Batch集成*...
这一阶段,MySQL Replication和Master-Slave架构成为了主流,读写分离有效降低了主库的压力,提高了系统的可用性。 3. 分布式数据库阶段:进一步应对海量数据,淘宝引入了分布式数据库系统,如TDDL(Taobao ...
6. **分布式架构**:采用分布式数据库架构,通过分布式技术如分片(Sharding)、复制(Replication)、负载均衡等技术,保证数据的高可用性和负载均衡。 7. **索引策略优化**:对于组合查询,可以使用全文索引和列...
为了进一步优化哈希分布式的性能和平衡性,业界普遍采用了虚拟节点技术,该技术在数据分片和实际存储服务器之间建立了额外的映射层,从而提高了系统的灵活性和效率。 #### NoSQL数据库的分类 NoSQL数据库可以根据...
- **何时建索引**:当表中数据量较大时应考虑建立索引以加快查询速度;但如果更新操作频繁,则需权衡建索引带来的性能提升与维护成本之间是否划算。 - **索引优化**:可以通过调整索引列顺序、合理选择索引类型等...
- 设置`dfs.replication`参数来控制数据块的副本数。 - 启动与监控Hadoop集群服务,包括NameNode、DataNode、SecondaryNameNode等。 - **实践意义**:全分布模式下的Hadoop集群能够提供高可用性和容错性,是大...