1)我正在使用sqoop import-all 命令。
2)我有一个场景,我想从本地可用的sqoop源中将ETL转换为分布式 hadoop集群...启动ETL的机器将具有访问JDBC源,但没有保证集群中的所有从属服务器都可以访问JDBC源。
我的问题是:
有没有办法可以配置Sqoop来从单个JDBC连接流式传输所有数据(可能这意味着只使用一个映射器,但是id就像指示sqoop这样做,而不是做一些mapreduce配置hackery)。 / p>
答案 0 :(得分:1)
我可以想象出两个选项:
1)获取一个SQL代理,将其安装在您保证访问数据库的节点上,并将该代理用于Sqoop连接。
2)使用Hadoop本地模式和一个映射器运行Sqoop,以确保执行永远不会离开您的计算机。然而,这些选项效率非常低,因此我不建议将它用于生产用途。
答案 1 :(得分:0)
您可以通过为要用于打开JDBC连接的单个服务器(运行NodeManager)设置YARN Node Label来控制此操作。然后,当您运行Sqoop作业时,请务必将其提交到与该节点标签关联的Capacity Scheduler Queue。
这应该将JDBC连接限制为仅标记有YARN节点标签的服务器。