

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# EMR WAL 跨集群复制
<a name="emr-hbase-wal-cross-cluster"></a>

从 EMR 7.5 开始，EMR WAL 支持预写日志的 HBase 跨集群复制。本主题介绍如何启用该功能并检查其是否正常工作。有关集群复制的更多详细信息，请参阅 A HBase pache 文档中的[集群复制](https://hbase.apache.org/book.html#_cluster_replication)。

**注意**  
由于复制过程会从本地 EMR WAL 读取数据，因此预写日志会产生额外的读取成本。有关成本的更多详细信息，请参阅[关于 Amazon EMR 发行版](https://docs.amazonaws.cn/emr/latest/ReleaseGuide/emr-hbase-wal-metrics.html)。

## 跨集群复制设置
<a name="emr-hbase-wal-cross-cluster-setup"></a>

为了获得相同的用户体验，在 EMR WAL 上启用复制功能与使用本机预 HBase 写日志相同。以下过程显示了一个简单示例。有关更多信息，请参阅集[群复制中的 HBase ](https://hbase.apache.org/book.html#_cluster_replication)文档。

1. 启动一个主集群（作为复制源），并启用 EMR WAL。要启用预写日志，请参阅[启用 Amazon EMR WAL](emr-hbase-wal-enabling.md)。此外，启动一个对等集群。对于此对等集群，您可以选择是否启用 EMR WAL。

1. 在两个集群上，创建一个表：

   ```
   HBASE_CMD="sudo -u hbase hbase"
   echo "create 'test_replication_table',{NAME => 'CF'}" | $HBASE_CMD shell
   ```

1. 在主集群上添加对等集群设置并启用表复制。在添加对等节点期间，需要对等集群主节点主机名，即 **PEER\$1DNS**。

   ```
   HBASE_CMD="sudo -u hbase hbase"
   PEER_DNS="ip-10-1-1-0.ec2.com"
   PEER_NAME="aws"
   TABLE_NAME="test_replication_table"
   
   ## Create peering with the destination cluster
   echo "add_peer '$PEER_NAME', CLUSTER_KEY => '$PEER_DNS:2181:/hbase'" | $HBASE_CMD shell
   
   ## List peers in the primary cluster to confirm peer setup
   echo "list_peers" | $HBASE_CMD shell
   
   ## Enable table replication
   echo "enable_table_replication '$TABLE_NAME'" | $HBASE_CMD shell
   ```

## 确认跨集群复制
<a name="emr-hbase-wal-cross-cluster-confirm"></a>

执行设置步骤后，在主集群和对等集群之间启用复制。接下来进行测试，确认复制正常工作。

1. 在主集群上添加数据，并验证复制到对等集群的数据。

   ```
   ## Write on primary cluster with HBase CLI
   
   put 'test_replication_table', 'aaa', 'CF:a', 'aaa_a1'
   put 'test_replication_table', 'bbb', 'CF:b', 'bbb_b1'
   put 'test_replication_table', 'ccc', 'CF:c', 'ccc_c1'
   ```

1. 确认在对等集群上复制成功。在这种情况下，您应该会看到从主集群复制到对等集群的数据。

   ```
   ### Scan on peer cluster with HBase CLI
   
   scan 'test_replication_table'
   ```