更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群

Notebook 是一种支持 REPL 模式的开发环境。所谓「REPL」,即「读取-求值-输出」循环:输入一段代码,立刻得到相应的结果,并继续等待下一次输入。Notebook 通常使得探索性的开发和调试更加便捷,在 Notebook 环境,用户可以交互式地在其中编写代码、运行代码、查看输出、可视化数据并查看结果,使用起来非常灵活。

在数据开发领域,Notebook 广泛应用于数据清理和转换、数值模拟、统计建模、数据可视化、构建和训练机器学习模型等方面。

但是显然,做数据开发,只有 Notebook 是不够的。目前火山引擎 DataLeap 数据研发平台提供了任务开发、发布调度、监控运维等一系列能力。研发团队将 Notebook 作为一种任务类型,加入了火山引擎 DataLeap 数据研发平台,使用户既能拥有 Notebook 交互式的开发体验,又能享受一站式大数据研发治理套件提供的便利。

如果还不够直观的话,试想以下场景:

在交互式运行和可视化图表的加持下,用户很快就调试完成了一份 Notebook。简单整理了下代码,根据使用到的数据配置了上游任务依赖,上线了周期调度,并顺手挂了报警。之后,基本上就不用管这个任务了:不需要每天手动检查上游数据是否就绪;不需要每天来点击运行,因为调度系统会自动帮用户执行这个 Notebook;执行失败了有报警,可以直接上平台来处理;上游数据出错了,可以请系统发起深度回溯,统一修数。

2019 年末,基于业务需求决定支持 Notebook 任务的时候,火山引擎 DataLeap 研发团队调研了许多 Notebook 的实现,包括 Jupyter、Polynote、Zeppelin、Deepnote 等。Jupyter Notebook 是 Notebook 的传统实现,它有着极其丰富的生态以及庞大的用户群体,相信许多人都用过这个软件。

事实上,在字节跳动数据平台发展早期,就有了在物理机集群上统一部署的 Jupyter(基于多用户方案 JupyterHub),供内部的用户使用。考虑到用户习惯和其强大的生态,Jupyter 最终成为了火山引擎 DataLeap 研发团队的选择。

(图:Jupyter Notebook 界面)

Jupyter Notebook 是一个 Web 应用。通常认为其有两个核心的概念:Notebook 和 Kernel。

  • Notebook 指的是代码文件,一般在文件系统中存储,后缀名为ipynb。Jupyter Notebook 后端提供了管理这些文件的能力,用户可以通过 Jupyter Notebook 的页面创建、打开、编辑、保存 Notebook。在 Notebook 中,用户以一个一个 Cell 的形式编写代码,并按 Cell 运行代码。Notebook 文件的具体内容格式,可参考 The Notebook file format(https://nbformat.readthedocs.io/en/latest/format_description.html)。

  • Kernel 是 Notebook 中的代码实际的运行环境,它是一个独立的进程。每一次「运行」动作,产生的效果是单个 Cell 的代码被运行。具体来讲,「运行」就是把 Cell 内的代码片段,通过 Jupyter Notebook 后端以特定格式发送给 Kernel 进程,再从 Kernel 接受特定格式的返回,并反馈到页面上。这里所说的「特定格式」,可参考 Messaging in Jupyter(https://jupyter-client.readthedocs.io/en/stable/messaging.html)。

在火山引擎 DataLeap 数据研发平台,开发过程围绕的核心是任务。用户可以在项目下的任务开发目录创建子目录和任务,像 IDE 一样通过目录树管理其任务。Notebook 也是一种任务类型,用户可以启动一个独立的任务 Kernel 环境,像开发其他普通任务一样使用 Notebook。

(图:火山引擎 DataLeap 数据开发 Notebook 任务界面)

目前 Notebook 任务已成为字节跳动内部使用较为高频的任务类型,用户可以在火山引擎 DataLeap 官网开通交互式分析的版本,使用到 DataLeap 的 Notebook 任务。

点击跳转 火山引擎大数据研发治理DataLeap 了解更多

火山引擎DataLeap下Notebook 系列文章一:技术选型之路的更多相关文章

  1. 火山引擎 DataLeap:3 个关键步骤,复制字节跳动一站式数据治理经验

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群 DataLeap 是火山引擎数智平台 VeDI 旗下的大数据研发治理套件产品,帮助用户快速完成数据集成.开发.运维.治理. ...

  2. 如何又快又好实现 Catalog 系统搜索能力?火山引擎 DataLeap 这样做

      摘要 DataLeap 是火山引擎数智平台 VeDI 旗下的大数据研发治理套件产品,帮助用户快速完成数据集成.开发.运维.治理.资产.安全等全套数据中台建设,降低工作成本和数据维护成本.挖掘数据价 ...

  3. 火山引擎 DataLeap:揭秘字节跳动数据血缘架构演进之路

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 DataLeap 是火山引擎数智平台 VeDI 旗下的大数据研发治理套件产品,帮助用户快速完成数据集成.开发.运维 ...

  4. 火山引擎 DataLeap 的 Data Catalog 系统公有云实践

      Data Catalog 通过汇总技术和业务元数据,解决大数据生产者组织梳理数据.数据消费者找数和理解数的业务场景.本篇内容源自于火山引擎大数据研发治理套件 DataLeap 中的 Data Ca ...

  5. 火山引擎DataLeap数据调度实例的 DAG 优化方案

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群 实例 DAG 介绍 DataLeap 是火山引擎自研的一站式大数据中台解决方案,集数据集成.开发.运维.治理.资产管理能力 ...

  6. 火山引擎 DataLeap:一家企业,数据体系要怎么搭建?

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 导读:经过十多年的发展,数据治理在传统行业以及新兴互联网公司都已经产生落地实践.字节跳动也在探索一种分布式的数据治 ...

  7. 从零开始搭建django前后端分离项目 系列一(技术选型)

    前言 最近公司要求基于公司的hadoop平台做一个关于电信移动网络的数据分析平台,整个项目需求大体分为四大功能模块:数据挖掘分析.报表数据查询.GIS地理化展示.任务监控管理.由于页面功能较复杂,所以 ...

  8. 系列文章--AJAX技术系列总结

    各种AJAX方法的使用比较 用ASP.NET写个SQLSERVER的小工具  写自己的ASP.NET MVC框架(下)  写自己的ASP.NET MVC框架(上)  用Asp.net写自己的服务框架  ...

  9. 多云架构下,JAVA微服务技术选型实例解析

    [摘要] 本文介绍了基于开源自建和适配云厂商开发框架两种构建多云架构的思路,以及这些思路的优缺点. 微服务生态 微服务生态本质上是一种微服务架构模式的实现,包括微服务开发SDK,以及微服务基础设施. ...

  10. Aibabelx-shop 大型微服务架构系列实战之技术选型

    一.本项目涉及编程语言java,scala,python,涉及的技术如下: 1.微服务架构: springboot springcloud mybatisplus shiro 2.全文检索技术 sol ...

随机推荐

  1. 腾讯云与树莓派通信遇到的一些问题(树莓派无法ping通腾讯云指定端口)

    采用的是socket通信,之前写过C的,这次需要用到python,参考的代码原链接如下:https://www.cnblogs.com/mosu/p/16072146.html. (1)首先开放一个端 ...

  2. Pooling与马赛克的秘密

      说到Pooling,相信学习过CNN的朋友们都不会感到陌生.Pooling在中文当中的意思是"池化",在神经网络当中非常常见,通常用的比较多的一种是Max Pooling,具体 ...

  3. Windows10下的hexo搭建

    用hexo搭建个人博客 查看效果:慢蜗牛博客 目录 用hexo搭建个人博客 准备环境 Github Node.js和Git 连接Github 安装hexo 安装插件 部署 Hexo 到 GitHub ...

  4. 【Android】关于去标题栏 | 有的时候代码有效有的时候无效

    原因就在于你的manifest.xml的theme指向谁? 一开始我的theme指向这个↑,所以就改了好多也没用 之后改成这个↓就好了

  5. springMvc_快速入门

    概念:是一种基于Java实现mvc模型的轻量级web框架 优点:使用简单,开发便捷    灵活性强 总体来说springMvc就是来替代servlet的一种工具 快速入门: 1.创建maven-web ...

  6. 聊一聊 .NET高级调试 内核模式堆泄露

    一:背景 1. 讲故事 前几天有位朋友找到我,说他的机器内存在不断的上涨,但在任务管理器中查不出是哪个进程吃的内存,特别奇怪,截图如下: 在我的分析旅程中都是用户态模式的内存泄漏,像上图中的异常征兆已 ...

  7. NetSuite Tips —— 发送邮件未被接收或被退回

    Background: NS 发送的邮件过于频繁被邮箱系统识别为垃圾邮件,被拒收或被拦截 Solution: 添加以下邮箱地址到白名单 system@sent-via.netsuite.com nlm ...

  8. Arrarylist集合的使用

    前提:最近JAVA实训课老师讲了一些Arrarylist集合的相关知识,刚好端午假期有空就把这课上学到的知识和自己碰到的一些问题总结下来. 一.Arrarylist集合的使用(以学生信息存储作为演示) ...

  9. 【Python】【OpenCV】边缘检测和创建自定义核

    对于使用OpenCV已有的算子,我们还可以自定义卷积核以达到不同的效果. filters.py 1 import cv2 2 import numpy 3 4 """ 定 ...

  10. 【Python】【ChatGPT】本地部署ChatGPT学习记录

    学习一下GPT项目的相关使用和部署 一.GPT4ALL模型 Github:https://github.com/nomic-ai/gpt4all GPT4ALL项目部署简易,但是在运行体验上一般,并且 ...