我正在使用apache Kudu实现大数据系统。初步要求如下:
由于Kudu不支持多租户OOB,我可以考虑以下方式来支持多租户。
每个表都有tenantID列,所有租户的所有数据都将与相应的tenantID存储在同一个表中。
将Kudu表映射为Impala中的外部表。使用每个租户的where子句创建这些表的视图,如
CREATE VIEW IF NOT EXISTS cust1.table AS SELECT * FROM table WHERE tenantid = 'cust1';
Customer1将使用impala JDBC驱动程序或Spark访问表cust1.table以访问cust1的数据。 Customer2将访问table cust2.table以访问cust2的数据,依此类推。
答案 0 :(得分:0)
我们与Cloudera人开了个会,以下是我们收到的关于我上面发布的问题的回复
正如Samson在评论中指出的那样,Kudu目前没有访问权限或完全访问权限。因此建议的选项是使用Impala访问Kudu。
因此,不是让每个表都包含TenantID列,而是单独创建每个租户表。这些Kudu表在Impala中映射为外部表(最好在单独的Impala数据库中)。
然后使用Impala中的Sentry授权控制对这些表的访问。
对于Spark SQL访问,建议的方法是只显示Imapala表,而不是直接访问Kudu表。然后在Impala级别再次处理身份验证和授权要求,然后授予Spark作业访问Kudu表的权限。