Kubernetes 上的数据科学入门 - Jupyter 和 Zeppelin

众所周知,数据分析社区一直在朝着使用更多开源和基于云的工具的方向发展。Apache Zeppelin 和 Jupyter 笔记本是当今数据科学家最常用的两种工具。在这篇博文中,我们将向您展示如何轻松地将 Ilum 与这些笔记本集成,以便您可以在 k8s 上运行数据分析工作负载。
Kubernetes 数据科学
随着大数据和数据密集型应用程序的兴起,管理和部署数据科学工作负载变得越来越复杂。这就是 Kubernetes 的用武之地,因为它为运行 Jupyter 和 Zeppelin 等交互式计算平台提供了一个可扩展且灵活的平台。
数据科学社区使用 Jupyter 笔记本已经有很长时间了。但是在 Kubernetes 上运行数据科学呢?我们可以在 k8s 上使用 Jupyter 笔记本吗?答案是肯定的!这篇博文将向您展示如何使用 Jupyter 笔记本和 Zeppelin 在 Kubernetes 上运行数据科学。
我们将使用 Apache Spark 和 Ilum 交互式会话来促进计算。交互式会话功能允许您提交 Spark 代码并实时查看结果。这是探索数据和尝试不同算法的好方法。使用 Apache Spark,您可以轻松处理大量数据,而 Ilum 的交互式会话功能可以轻松尝试不同的代码片段并立即看到结果。
Ilum、Apache Livy 和 Sparkmagic
Ilum 的创建是为了让数据科学家和工程师能够轻松地在 Kubernetes 上运行 Spark。我们相信,通过简化该过程,我们可以让用户更轻松地开始使用这些技术,并提高 k8s 在数据科学社区中的采用率。
Ilum 实现了 Livy rest 接口,因此它可以用作 Apache Livy 的替代品 在任何环境中。我们将展示如何将 Ilum 与 Sparkmagic 集成。
Ilum 和 Livy 都可以启动长时间运行的 Spark 上下文,这些上下文可由多个客户端用于多个 Spark 作业。但是,两者之间存在一些关键差异。
Ilum 是维护良好且积极开发的软件,更新了新的库和功能。另一方面,Livy 拥有一个强大的社区,该社区已经创建了与许多应用程序的集成。不幸的是,Livy 的开发已经停滞不前,因此 Livy 还没有为云原生转型做好准备。
Ilum 可以轻松扩展和缩减并且高度可用。Ilum 相对于 Livy 的一大优势是它可以在 Kubernetes 上运行。它还允许与 纱 .
这两个工具都提供了一个易于使用的 Web 界面,用于监控 Spark 集群和 Spark 应用程序,但 Livy 的工具似乎已经过时且非常有限。
那么,我们为什么不充分利用 Ilum 和 Livy 呢?
Ilum-livy-proxy 代理
Ilum 有一个实现 Livy API 的嵌入式组件。它允许用户同时利用 Livy 的 REST 接口和 Ilum 引擎。
我们正在努力添加 蟒 支持,除了现有的 斯卡拉 支持。请密切关注我们的 路线图 以了解我们的最新进展。
Zeppelin 和 Jupyter
Zeppelin 和 Jupyter 是基于 Web 的笔记本,支持使用不同语言进行交互式数据分析和协作文档创建。
Jupyter 笔记本在 Python 用户中特别受欢迎。该项目是从 IPython 环境演变而来的,但现在支持多种语言。

Jupyter 的内核列表是 巨大 .
Zeppelin 与大数据工具完美集成。在 Zeppelin 中,可以将不同的解释器组合在一个笔记本中,然后在不同的段落中运行它们。

您可以查看 Zeppelin 支持的解释器列表 这里
将笔记本与 Ilum 集成
设置 Ilum
让我们从 Kubernetes 上的 Apache Spark 集群开始。使用 Ilum,这很容易做到。在本文中,我们将使用 minikube。我们要做的第一件事是运行一个 Kubernetes 集群:
minikube start --cpus 4 --memory 12288 --addons metrics-server
一旦 minikube 运行起来,我们就可以继续安装 Ilum。首先,让我们添加一个 helm chart 仓库:
helm repo add ilum https://charts.ilum.cloud
Ilum 包括 Zeppelin 和 Jupyter,但必须在安装设置中与 ilum-livy-proxy 一起手动启用它们。
helm install ilum ilum/ilum --set ilum-zeppelin.enabled=true --set ilum-jupyter.enabled=true --set ilum-livy-proxy.enabled=true
初始化所有 Pod 可能需要一些时间。您可以使用以下命令检查状态:
kubectl 获取 Pod

Jupyter
让我们从以下方面开始:
kubectl 端口转发 svc/ilum-jupyter 8888:8888
Ilum 使用 Sparkmagic 在 Jupyter 笔记本中使用 Apache Spark。默认情况下,Jupyter(安装了 Sparkmagic 库)将在端口 8888 上运行。要访问服务器,请打开浏览器并转到 localhost:8888。您需要使用日志中的密码登录,或者您可以复制并粘贴整个 URL,用“localhost”代替域。
kubectl 日志 ilum-jupyter-85f6d9bfb8-t642d

打开 Jupyter 后,我们必须启动 Python3 笔记本:

现在,让我们运行以下命令来加载 spark magic 并设置终端节点。
1. 首先,我们需要加载 Spark Magic 扩展。您可以通过运行以下命令来执行此作:
%load_ext sparkmagic.magics
2. 接下来,我们需要设置一个终端节点。终端节点只是指向特定 Spark 集群的 URL。您可以通过运行以下命令来执行此作:
%manage_spark

捆绑的 Jupyter 开箱即用,并具有指向 livy-proxy 的预定义终端节点地址。您须做的是从下拉列表中选择此端点,然后单击 create session 按钮。就这么简单。现在,Jupyter 将通过 ilum-livy-proxy 与 ilum-core 连接以创建 Spark 会话。Spark 容器启动并运行可能需要几分钟时间。准备就绪后,您会收到 Spark 会话可用的信息。

现在,您可以使用 Ilum 会话对其运行 Spark 代码。您分配给会话的名称将在 %%Spark 魔法 以运行代码。

Apache Zeppelin
让我们从以下方面开始:
kubectl 端口转发 svc/ilum-zeppelin 8080:8080
与 Jupyter 类似,我们也将 Zeppelin 笔记本与 Ilum 捆绑在一起。请注意,由于图像大小增加,创建容器的时间可能会延长。创建并运行容器后,您将能够在浏览器中访问 Zeppelin 笔记本 http://localhost:8080。
- 要执行代码,我们需要创建一个 note:

2. 由于与 Ilum 的通信是通过 livy-proxy 处理的,因此我们需要选择 livy 作为默认解释器。

3. 现在让我们打开注释并将一些代码放入段落中:

与 Jupyter 相同,Zeppelin 也具有 Ilum 所需的预定义配置。您可以轻松自定义设置。只需打开右上角的上下文菜单,然后单击解释器按钮。

有一长串可以自定义的解释器及其属性。

Zeppelin 提供了 3 种不同的模式来运行解释器进程:shared、scoped 和 isolated。您可以了解有关解释器绑定模式的更多信息 这里 .
Jupyter 和 Zeppelin 是两个最流行的数据科学工具,它们现在可在 k8s 上使用。这意味着数据科学家现在可以使用 Kubernetes 来管理和部署他们的数据科学应用程序。
Ilum 为使用 Jupyter 和 Zeppelin 的数据科学家提供了一些优势。首先,Ilum 可以为 Jupyter 和 Zeppelin 提供托管环境。这意味着数据科学家不必担心管理自己的 Kubernetes 集群。其次,Ilum 提供了一种在 Kubernetes 上开始数据科学的简单方法。借助 Ilum,数据科学家只需启动 Jupyter 或 Zeppelin 实例并开始探索他们的数据。
因此,如果您是一名数据科学家,想要开始在 Kubernetes 上进行数据科学,请查看 Ilum。使用 Ilum,您可以快速轻松地开始,而无需担心管理自己的 kubernetes 集群。
总的来说,Kubernetes 上的数据科学是改进工作流程并允许更多协作的好方法。但是,在深入研究之前,首先要对系统及其工作原理有一个基本的了解,这一点很重要。话虽如此,Jupyter 和 Zeppelin 是帮助开始在 Kubernetes 上进行数据科学的两个很棒的工具。

Kubernetes 对于数据科学真的有必要吗?
Kubernetes 是一个开源系统,用于自动部署、扩展和管理容器化应用程序。它将构成应用程序的容器分组到逻辑单元中,以便于管理和发现。
数据科学是从各种形式的数据(结构化或非结构化)中提取知识或见解的过程,可用于做出决策或预测。
那么,Kubernetes 对于数据科学真的有必要吗?答案是肯定的和否定的。虽然 k8s 可以帮助自动化数据科学应用程序的部署和管理,但这并不是绝对必要的。数据科学家仍然可以使用其他方法来部署和管理他们的应用程序。但是,Kubernetes 可以通过提供一个统一的平台来管理多个数据科学应用程序,让他们的生活更轻松。