【发布时间】:2017-04-25 22:24:51
【问题描述】:
我正在使用 apache Kudu 实现大数据系统。初步要求如下:
- 支持多租户
- 前端将使用 Apache Impala JDBC 驱动程序来访问数据。
- 客户将在 Kudu 上为分析用例编写 Spark 作业。
由于 Kudu 不支持 Multitenancy OOB,所以我可以想到以下方式来支持 Multitenancy。
方式:
每个表都有tenantID列,所有租户的所有数据都将存储在同一个表中,并带有相应的tenantID。
将 Kudu 表映射为 Impala 中的外部表。使用 where 子句为每个租户创建这些表的视图,例如
CREATE VIEW IF NOT EXISTS cust1.table AS SELECT * FROM table WHERE tenantid = 'cust1';
Customer1 将访问表 cust1.table 以使用 impala JDBC 驱动程序或 Spark 访问 cust1 的数据。 Customer2 将访问表 cust2.table 以访问 cust2 的数据等等。
问题:
- 这是实现多租户的可接受方式还是有更好的方式(可能与其他外部服务一起使用)
- 如果以这种方式实施,我如何限制 customer2 访问 Kudu 中的 cust1.table,尤其是当客户出于分析目的编写自己的 spark 作业时。
【问题讨论】:
-
#2 > 你不能。目前,Kudu 没有授权机制。因此,任何可以联系平板服务器 IP/端口的人都可以在该服务器管理的任何表中读写。由于您希望所有租户在同一台平板电脑服务器上共享相同的表,因此您不能在网络级别限制访问。所以 #1 > 不,这似乎不是“可接受的”。
标签: multi-tenant impala apache-kudu