将数据从RDBMS加载到具有多个目标的Hadoop

She*_*jie 6 streaming hadoop sqoop apache-kafka

我们已经使用Sqoop实现了一个解决方案,用于将数据从RDBMS加载到我们的hadoop集群,仅用于附加数据,当维度数据到hbase时,它转到hive.

现在我们正在建立两个相同的Hadoop集群,它们是彼此的备份集群.我们希望将数据从RDBMS加载到两个集群.Sqoop不允许我们这样做.我们已经看到了一些流式解决方案,如流集或nifi,它允许从一个地方提取数据并一次性将其发送到多个目的地.此外,我们正在考虑使用sqoop将数据加载到一个集群,然后设置同步向上作业以定期将数据复制到另一个集群,考虑到我们拥有的数据量巨大,这听起来更合适.

有人可以分享一些真实的生活经历吗?

vmo*_*usu 3

我看到有两种选择可以做到这一点:

  • 设置两个 diff Sqoop 作业以复制到每个集群中。这更像是两组活动数据而不是备份,因为两者都是从源更新的。这将在关系数据库系统上造成额外的过载,因为将创建 x2(大约)个连接来执行数据复制。

  • 使用单个 Sqoop 作业将数据加载到一个集群中。使用 distcp -update (或)distcp -append 从那里复制到其他集群。这种方法的一些优点:

    • 这应该会减少关系数据库系统的负载。

    • 您可以利用 MR 的强大功能来更快地复制黑白集群数据。

    • 您可以选择使用 Oozie 安排备份频率。

    • 您可以处理活动副本或备份副本。

让我知道您的想法,如果您已经确定了任何解决方案,请分享。