将数据从 RDBMS 加载到具有多个目的地的 Hadoop
Loading data from RDBMS to Hadoop with multiple destinations
我们已经实施了一个解决方案,使用 Sqoop 将数据从 RDBMS 加载到我们的 hadoop 集群,对于仅附加数据,它会转到 hive,而维度数据会转到 hbase。
现在我们搭建两个相同的Hadoop集群,互为备份集群。我们希望一次将数据从 RDBMS 加载到两个集群。 Sqoop 不允许我们这样做。我们已经看到了一些流式解决方案,例如 streamsets 或 nifi,它们允许从一个地方提取数据并将其一次发送到多个目的地。此外,我们正在考虑使用 sqoop 将数据加载到一个集群,然后设置一个同步作业以定期将数据复制到另一个集群,考虑到我们拥有的数据量很大,这听起来更合适。
有人可以分享一些这方面的真实生活经验吗?
我看到两个选项:
设置两个不同的 Sqoop 作业以复制到每个集群中。这更像是两组活动数据而不是备份,因为两者都是从源更新的。这将在关系数据库系统上造成额外的过载,因为将创建 x2(大约)个连接来进行数据复制。
使用单个 Sqoop 作业将数据加载到一个集群中。使用 distcp -update(或)distcp -append 从那里复制到其他集群。这种方法的几个优点:
这应该可以减少关系数据库系统的负载。
您可以利用 MR 的强大功能来更快地复制数据 b/w 集群。
您可以选择使用 Oozie 安排备份频率。
您可以使用活动副本或备份副本。
让我知道您的想法,如果您已经确定任何解决方案,请分享。
我们已经实施了一个解决方案,使用 Sqoop 将数据从 RDBMS 加载到我们的 hadoop 集群,对于仅附加数据,它会转到 hive,而维度数据会转到 hbase。
现在我们搭建两个相同的Hadoop集群,互为备份集群。我们希望一次将数据从 RDBMS 加载到两个集群。 Sqoop 不允许我们这样做。我们已经看到了一些流式解决方案,例如 streamsets 或 nifi,它们允许从一个地方提取数据并将其一次发送到多个目的地。此外,我们正在考虑使用 sqoop 将数据加载到一个集群,然后设置一个同步作业以定期将数据复制到另一个集群,考虑到我们拥有的数据量很大,这听起来更合适。
有人可以分享一些这方面的真实生活经验吗?
我看到两个选项:
设置两个不同的 Sqoop 作业以复制到每个集群中。这更像是两组活动数据而不是备份,因为两者都是从源更新的。这将在关系数据库系统上造成额外的过载,因为将创建 x2(大约)个连接来进行数据复制。
使用单个 Sqoop 作业将数据加载到一个集群中。使用 distcp -update(或)distcp -append 从那里复制到其他集群。这种方法的几个优点:
这应该可以减少关系数据库系统的负载。
您可以利用 MR 的强大功能来更快地复制数据 b/w 集群。
您可以选择使用 Oozie 安排备份频率。
您可以使用活动副本或备份副本。
让我知道您的想法,如果您已经确定任何解决方案,请分享。