安装方法
您应该如何安装 Superset?这里对不同选项进行了比较。如果您已阅读架构页面以了解 Superset 的不同组件,那将会有所帮助。
根本的权衡在于,是您自己处理更多细节工作,还是采用更复杂的部署方式来处理这些细节。
Docker Compose
总结:这种方法利用了容器化技术,同时比 Kubernetes 更简单。这是试用 Superset 的最佳方式;它也适用于开发和回馈 Superset。
如果您不仅仅是演示软件,您需要对 Docker 有一定的了解,以便自定义部署并避免一些风险。即使经过完全优化,在大规模生产部署方面,这种方法也不如 Kubernetes 稳健。
您管理一个 superset-config.py 文件和一个 compose.yml 文件。Docker Compose 会启动所有必要的服务——Superset 应用程序、Postgres 元数据数据库、Redis 缓存、Celery worker 和 beat。它们会自动相互连接。
职责
您需要备份您的元数据数据库。这可能意味着备份作为 Docker 容器运行的服务及其卷;理想情况下,您将 Postgres 作为该容器之外的服务运行并备份该服务。
您还需要扩展 Superset Docker 镜像。默认的 lean
镜像不包含访问您的元数据数据库(Postgres 或 MySQL)、访问您的数据仓库所需的驱动程序,也不包含警报与报告所需的无头浏览器。在演示 Superset 时,您可以运行一个 -dev
镜像,其中包含一部分,但您仍然需要为您的数据仓库安装驱动程序。-dev
镜像以 root 用户运行,这不建议用于生产环境。
理想情况下,您将构建自己的 Superset 镜像,该镜像扩展了 lean
,并添加了您的部署所需的内容。请参阅构建您自己的生产 Docker 镜像。
Kubernetes (K8s)
总结:这是部署生产环境 Superset 实例的最佳实践方法,但技能要求最高——需要熟悉 Kubernetes 的人。
您将 Superset 部署到 K8s 集群中。最常见的方法是使用社区维护的 Helm chart,尽管目前正在进行工作以实现SIP-149 - 用于 Superset 的 Kubernetes Operator。
K8s 部署可以根据使用情况进行伸缩,并部署零停机时间的滚动更新——这些功能对于大型部署来说非常有用。
职责
您需要构建自己的 Docker 镜像,并备份您的元数据数据库,这两点都如上文 Docker Compose 部分所述。您还需要自定义您的 Helm chart 值,并部署和维护您的 Kubernetes 集群。
PyPI (Python)
总结:这是唯一不需要容器知识的方法。它需要最多的手动工作来部署、连接和维护每个组件。
您将 Superset 作为 Python 包安装并以此方式运行,提供您自己的元数据数据库。Superset 有关于如何通过这种方式安装的文档,但更新不频繁。
如果您需要缓存,您将设置 Redis 或 RabbitMQ。如果您需要警报和报告,您将设置 Celery。
职责
您需要使组件服务运行并相互通信。您还需要安排元数据数据库的备份。
升级时,您需要管理系统环境和包,并确保所有组件都具有功能性依赖项。