Sqoop:当某些节点没有直接的JDBC访问权限时?



1) 我使用 sqoop import-all 命令。

2)我有一个场景,我想从本地可用的sqoop源到分布式Hadoop集群中进行ETL...启动 ETL 的计算机将有权访问 JDBC 源,但不能保证集群上的所有从站都有权访问 JDBC 源。

我的问题是:

有没有办法我可以配置 Sqoop 以从单个 JDBC 连接流式传输所有数据(可能这意味着只使用一个映射器,但 id 喜欢指示 sqoop 执行此操作,而不是做一些 mapReduce 配置黑客)。

我可以想象两个选项:

1) 获取一个 SQL 代理,将其安装在您保证访问数据库的节点上,并将该代理用于 Sqoop 连接。

2) 使用 Hadoop 本地模式和一个映射器运行 Sqoop,以确保执行永远不会离开您的计算机。但是,此选项效率非常低,因此我不建议将其用于生产用途。

您可以通过为要用于打开 JDBC 连接的单个服务器(运行 NodeManager)设置 YARN 节点标签来控制这一点。然后,在运行 Sqoop 作业时,请务必将其提交到与该节点标签关联的容量计划程序队列。

这应该将 JDBC 连接限制为仅标有 YARN 节点标签的服务器。

最新更新