Apache Airflow 多用户环境

问题描述 投票:0回答:1

我正在尝试为我的数据工程团队创建一个系统或环境。 要求是:

  • 它必须在本地托管。
  • 应该有调度。
  • 用户应该能够直接在系统上编写代码。
  • 每个用户都不应被允许访问其他用户的笔记本。

我通过在虚拟机上托管成功实现了第一个目标。第二种是使用 Airflow dags。第三种是使用 Dag 代码编辑器插件。 我的问题是第四个要求,无论我如何搜索和询问,我都无法弄清楚。 这可能吗?如果是的话怎么办。 附注我对其他系统(如 zeppelin 或 Spark 或任何可以提供帮助的系统(linux 或 windows))都满意

airflow etl pipeline data-engineering
1个回答
0
投票

是的,可以创建具有用户访问控制的本地托管数据工程系统。实现此目的的一种方法是结合使用以下技术:

  • Docker 为每个用户创建隔离的容器。
  • JupyterHub 为用户提供基于 Web 的界面来访问他们的 容器。
  • ZeroMQ 允许用户与彼此的容器进行通信。
  • OAuth2 对用户进行身份验证并授予他们访问特定权限的权限 资源。

以下是该系统如何工作的高级概述:

  1. 为您的数据工程环境创建 Docker 映像。这 图像应包含所有必要的工具和库 您的用户将需要。
  2. 启动 JupyterHub 服务器。该服务器将管理 Docker 每个用户的容器。
  3. 配置 JupyterHub 使用 OAuth2 进行身份验证。您可以使用 各种 OAuth2 提供商,例如 Google 或 GitHub。
  4. 配置JupyterHub使用ZeroMQ来允许用户通信 与彼此的容器。
  5. 为每个用户创建一个用户帐户。当用户登录时 JupyterHub,他们将从以下位置分配一个 Docker 容器 JupyterHub 服务器。
  6. 配置 Docker 容器以防止用户访问每个容器 别人的笔记本。您可以使用多种技术来做到这一点, 例如将笔记本目录安装为只读或使用 权限系统,如 ACL。

以下是实施该系统的一些额外提示:

  • 使用反向代理将 JupyterHub 公开到公共互联网。这 将允许您的用户从任何地方访问 JupyterHub。
  • 使用防火墙限制对 JupyterHub 服务器的访问。这会 帮助保护您的系统免遭未经授权的访问。
  • 使用负载均衡器在多个 JupyterHub 之间分配流量 服务器。这将提高系统的性能和可扩展性。
  • 使用监控系统来跟踪系统的运行状况。这会 帮助您识别并解决出现的任何问题。

其他系统: 您可以使用许多其他系统来创建具有用户访问控制的本地托管数据工程系统。一些流行的选项包括:

  • Apache Zeppelin 是一个基于 Web 的笔记本,支持多种编程语言,包括 Scala、Python 和 SQL。齐柏林飞艇 还内置了对 Apache Spark 的支持,这使其成为一个很好的选择 数据工程任务的选择。
  • Apache Livy 是一个提供 REST API 的服务器,用于提交和管理 Apache Spark 作业。 Livy 可用于创建数据 各种用户都可以访问的工程环境 客户端,例如 Jupyter Notebook 或 Apache Zeppelin。
  • Apache Knox 是一个提供对 Apache Hadoop 和相关服务的安全访问的网关。 Knox 可用于对用户进行身份验证 并授权他们访问特定资源,例如Spark 集群或 Hive 数据库。

您选择哪个系统将取决于您的具体需求和要求。如果您正在寻找一个易于使用且具有很多功能的系统,那么 JupyterHub 是一个不错的选择。如果您需要一个更具可扩展性和安全性的系统,那么您可能需要考虑使用 Apache Livy 或 Apache Knox。

© www.soinside.com 2019 - 2024. All rights reserved.