# JupyterLab

JupyterLab 是 Jupyter 项目提供的强大的 Notebook 编程界面, 可以通过其插件系统进行扩展. 本项目 fork 自 [https://github.com/jupyterlab/jupyterlab](https://github.com/jupyterlab/jupyterlab), 在官方代码的基础上进行二次开发, 通过 Sparkmagic 连接 Livy 提供 Spark 编程及 HDFS 访问, 并提供数据资产管理, 可视化编程, 定时任务等功能.

## 构建及运行方法

项目提供了构建 Docker 镜像的 Dockerfile

```bash
# 使用 recursive 克隆 sparkmagic
git clone --recursive http://gogsb.soaringnova.com/ylproj/jupyterlab.git

# 构建镜像
docker build -f Dockerfile.combined -t ylproj-jupyter .
```

使用如下命令运行构建好的镜像:

```bash
docker run -d \
       --name ylproj-jupyter \
       --network ylproj \
       -p 8000:8000 \
       -v <kerberos配置>:/etc/krb5.conf:ro \
       -v <hadoop配置>:/opt/cluster/conf:ro \
       -e LIVY_SERVER_URL=http://livy:8998/ \
       -e BACKEND_BASE_URL=http://backend:5000/ \
       ylproj-jupyter
```

运行参数说明:

- 用户访问端口 8000 的 web 服务 (http://localhost:8000/jupyterhub)
- 环境变量 `LIVY_SERVER_URL` 指向 Livy 服务的地址
- 环境变量 `BACKEND_BASE_URL` 指向 Backend 服务的地址
- /etc/krb5.conf 是 Kerberos 的配置文件
- /opt/cluster/conf 是 Hadoop 相关的配置文件以及 Kerberos 的 keytab

## 各组件端口说明

![arch.png](./images/arch_1659948133.png)

| service                 | port        |
| ----------------------- | ----------- |
| JupyterHub Web          | 8000        |
| Backend REST            | 5000        |
| Livy REST               | 8998        |
| Livy RPC                | 31100-31103 |
| Livy RPC (Yarn)         | 31100-31103 |
| HDFS                    | 4007, 4008  |
| ResourceManager         | 5000, 5004  |
| NodeManager             | 5006, 5008  |
| KDC                     | 88          |
| Hive Metastore (thrift) | 7004        |
| Hive Server2            | 7001        |

## 其他

1. [开发相关的说明](./about_dev.md)
2. [二次开发代码改动说明](./about_diff.md)
