【问题标题】:Import data on HDFS to SQL Server or export data on HDFS to SQL Server将 HDFS 上的数据导入 SQL Server 或将 HDFS 上的数据导出到 SQL Server
【发布时间】:2012-08-31 10:49:52
【问题描述】:
我一直在尝试找出将数据从 HDFS 移植到 SQL Server 的最佳方法。
- 我是使用 SQL Server 2008 R2 的 sqoop Hadoop 连接器从 Cloudera Hadoop 导入数据还是
- 我是否使用 sqoop 将 Cloudera Hadoop 中的数据导出到 SQL Server 中
根据我阅读的大量链接,我确信两者都是可能的
但是,当我在寻找可能在配置和维护级别上升的问题时,我没有正确的答案。
我强烈认为我应该进行导入,但我对排除和维护时不时出现的问题感到不舒服。
有人可以分享他们对什么是最好的想法吗?
【问题讨论】:
标签:
sql-server
hadoop
cloudera
sqoop
【解决方案1】:
您的两个选项都使用相同的方法:Apache Sqoop 的导出实用程序。与使用 Apache Sqoop 提供的通用连接器相比,使用获得许可的 Microsoft 连接器/驱动程序 jar 预计会产生更高的任务性能。
在维护方面,一旦您正常工作,就应该没有。只要驱动程序 jar 支持正在使用的 SQL Server 版本,它就应该继续按预期正常工作。
在配置方面,您最初可能必须手动调整以找到最佳的-m 值,以实现导出工具启动的导出 MapReduce 作业的并行性。使用太高的值会导致数据库端出现问题,而使用太低的值不会给您理想的性能。为了正确设置并行度,这里需要进行一些试验和错误以得出正确的 -m 值,同时了解数据库的加载周期。
面向导出工具用户的 Apache Sqoop (v1) doc page 还列出了导出作业失败的一组常见原因。你可能想view those here。
在 MapReduce 方面,您可能还希望为此类外部写入作业专用一个已定义的调度程序池或队列,因为它们可能对业务至关重要,并且像 FairScheduler 和 CapacityScheduler 这样的调度程序有助于为每个池定义 SLA 保证或排队,以便作业在启动时获得足够的资源来运行。