将数据从 RDBMS 加载到具有多个目标的 Hadoop
Posted
技术标签:
【中文标题】将数据从 RDBMS 加载到具有多个目标的 Hadoop【英文标题】:Loading data from RDBMS to Hadoop with multiple destinations 【发布时间】:2017-05-08 15:21:13 【问题描述】:我们已经实现了一个使用 Sqoop 将数据从 RDBMS 加载到我们的 hadoop 集群的解决方案,对于仅附加数据,它进入 hive 而维度数据到 hbase。
现在我们正在建立两个相同的 Hadoop 集群,它们是彼此的备份集群。我们希望将数据从 RDBMS 一次加载到两个集群。 Sqoop 不允许我们这样做。我们已经看到了一些流解决方案,例如流式集或 nifi,它们允许从一个地方提取数据并将其一次性发送到多个目的地。另外,我们正在考虑使用 sqoop 将数据加载到一个集群,然后设置一个同步作业以定期将数据复制到另一个集群,考虑到我们拥有的数据量很大,这听起来更合适。
有人可以分享一些关于这方面的真实生活经验吗?
【问题讨论】:
我们可以使用 sqoop 将数据从 RDBMS 加载到 hadoop 集群 我们可以使用hadoop distcp从一个集群复制到另一个hadoop集群 @KanagarajDhanapal 是的,你可以使用 distcp,但是你如何处理增量更改和更新? 【参考方案1】:我看到了两种选择:
设置两个不同的 Sqoop 作业以复制到每个集群中。这更像是两组活动数据而不是备份,因为两者都是从源更新的。这将在关系数据库系统上造成额外的过载,因为将创建 x2(近似)连接来进行数据复制。
使用单个 Sqoop 作业将数据加载到一个集群中。使用 distcp -update(或)distcp -append 从那里复制到其他集群。这种方法的几个优点:
这应该会减少关系数据库系统的负载。
您可以利用 MR 的强大功能更快地复制数据 b/w 集群。
您可以选择使用 Oozie 安排备份频率。
您可以处理活动副本或备份副本。
让我知道您的想法,如果您已经确定了任何解决方案,请分享。
【讨论】:
以上是关于将数据从 RDBMS 加载到具有多个目标的 Hadoop的主要内容,如果未能解决你的问题,请参考以下文章
SSIS 将数据从 SQL db 复制到同一 excel 目标上的多个选项卡