迁移到Sqoop2的优点之一是我们不与客户端共享数据库凭据。

现在,当我们执行Sqoop命令时,它们如下所示:


sqoop import --connect ... --username ... --table ...


当我们升级到Sqoop2时,我们还将执行相同的命令,除了连接字符串将指向Sqoop2服务器,而不是实际的RDBMS(涉及传输),并且凭据将为Sqoop2服务器。

在这里,我们还将与所有客户端共享Sqoop2服务器的凭据。是否违反我们创建Sqoop2的基本原则?

最佳答案

在Sqoop中,有权访问hadoop集群的人将知道数据库凭据,因为必须对其进行硬编码
在Sqoop2中,只有管理集群的管理员才能知道数据库凭据。开发人员无需知道密码。
在Sqoop中,客户端可以直接在群集上提交作业,没有服务器概念。这意味着您需要在Sqoop客户端上具有JDBC jar文件。一旦在同一防火墙中拥有数据库凭据和jar文件,就可以轻松地在Sqoop外部破坏安全性。
在Sqoop2中,客户端不会直接提交作业,它将指向服务器,服务器将提交作业。因此,Sqoop服务器,数据库和hadoop群集可以位于防火墙之后,并且仅Sqoop服务器端口应仅对Sqoop2客户端开放。因此,用户无法通过登录Sqoop外部的数据库来破坏安全性(即使他们知道数据库凭据并具有jdbc jar)。


除了额外的安全性外,它还具有以下主要区别:


Sqoop无法与Web界面(例如色相)集成,因为它遵循仅客户端的体系结构
Sqoop2在客户端服务器体系结构上运行。服务器作为Web应用程序运行,因此像Hue这样的工具实际上可以用于开发基于sqoop的脚本

关于sqoop2 - Sqoop与Sqoop2命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34738814/

10-10 03:39