centos jupyter 安装_图文详解:CentOS 7系统下安装JupyterHub+PySpark

本文详细记录了在CentOS 7系统中搭建JupyterHub多用户平台和配置PySpark的过程,包括解决版本不匹配、端口冲突等问题。通过Anaconda3创建环境,安装JupyterHub,配置JupyterHub多用户管理,以及PySpark的路径设置和简单实例。附带创建新环境和kernel的方法,以及Jupyter NbExtensions安装。
摘要由CSDN通过智能技术生成

最近接到任务,要求在公司本地的服务器上搭建JupyterHub多用户平台以及配置PySpark分布式计算。折腾了几天,终于实现了!期间踩了很多坑,为了避免难兄难弟们重蹈覆辙,决定以图文并茂的形式完整地记录实现过程。如果能帮助到有需求的朋友,内心会十分地满足哈(欢迎评论及私信,点赞会更好哦~)

第一步:基本配置

接到任务之后,首先应该考虑一个配置表格。自己由于没有相关的经验,踩了很多版本不匹配的坑(以后必须养成这一习惯)。

背景信息:CentOS 7, Spark1.6

特别说明(选择使用Anaconda3-5.2.0版本安装JupyterHub):

Anaconda3-4.2.0中内置Python3.5,但是安装JupyterHub后无法正常使用(提示error:”no module named ‘alembic'”,可能与Anaconda3的低版本有关)

Anaconda3-5.2.0中可以正常使用JupyterHub,但内置的Python3.6只能在Spark2.0或者更高版本中使用

解决方法:通过Anaconda3-5.2.0安装JupyterHub,并创建一个基于Python3.5版本的新环境(命名为py35)。然后在py35环境中创建一个py3.5的kernel,在这个kernel中运行PySpark。#相关代码可参考附录1#

图1:创建py3.5的kernel以运行PySpark

第二步:JupyterHub搭建

1. JupyterHub简介

2. 安装JupyterHub

安装Anaconda

$ wget http://repo.continuum.io/archive/Anaconda3-5.2.0-Linux-x86_64.sh

# 从对应资源下载Anaconda3-5.2.0

$ bash Anaconda3-5.2.0-Linux-x86_64.sh

# 安装Anaconda,这一步骤中会询问多次,输入Enter表示同意即可

增加Anaconda环境变量

$ vim ~/.bashrc

export PATH=/PATH to Anaconda/bin:$PATH

# PATH to Anaconda为Anaconda的实际安装路径

# 如果在安装Anaconda过程中,选择了默认路径,可以跳过这一步

$ source ~/.bashrc

利用Anaconda安装JupyterHub

$ conda install -c conda-forge jupyterhub

# 运行此代码后,如果可以输出jupyterhub, configuarable-http-proxy的版本号,则表示安装成功

图3:JupyterHub安装成功

3. 配置JupyterHub

生成配置文件

$ jupyterhub --generate-config

# 运行此代码后,会生成jupyterhub_config.py文件。这里选择保存在~/etc/py36/jhub目录下

利用配置文件运行JupyterHub

$ jupyterhub -f ~/etc/py36/jhub/jupyterhub_config.py

打开浏览器访问

4. 运行JupyterHub过程中常见问题及其解决方法

Error:‘Failed to bind hub…, Address already in use’

问题原因:目标端口8081已被占用

图4:Error:‘Failed to bind hub…, Address already in use’

解决方法:修改jupyterhub_config.py文件,设置指向新的端口8182,运行JupyterHub即可

$ vim jupyterhub_config.py

c.JupyterHub.hub_port = 8182

图5:修改jupyterhub_config.py文件

图6:JupyterHub运行成功

如8182也被占用,可释放该端口,然后运行JupyterHub

$ netstat –tln | grep 8182

# 检查8182端口是否被占用

$ lsof -i :8182

# 检查该端口对应的PID

$ kill 28632

# 终止该进程,释放端口8182

图7:释放指定的端口

Error:‘HTTP 403: Forbidden’

问题原因:可能后台运行着基于旧API token的configurable-http-proxy实例

解决方法:找出该实例并关闭

$ ps aux | grep configurable-http-proxy

# 检查是否存在该实例

$ kill …

# 如果存在,找到对应ID并关闭

5. 管理多用户

创建管理员及新用户

$ vim ~/etc/py36/jhub/jupyterhub_config.py

c.Authenticator.admin_users = {'zxj'}

# 创建管理员

c.Authenticator.whitelist = {'zxj', 'spider'}

# 将系统中其他用户加入白名单

图8:JupyterHub多用户管理页面

备注:由于安装在个人目录下,所以其他用户暂时无法正常使用。后期需将软件迁移至系统根目录下。

图9:其他用户暂时无法正常使用

哈哈哈,JupyterHub搭建完成。

此外,安装Jupyter NbExtensions可以更加便捷地使用Jupyter Notebook(#相关代码可参考附录2#)。利用nohup命令可以在后台运行JupyterHub(#相关代码可参考附录3#)

第三步:PySpark配置

1. PySpark简介

2. 配置PySpark

路径配置

$ vim ~/.bashrc

export SPARK_HOME=/usr/hdp/2.5.0.0-1245/spark

# spark的安装路径

export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.9-src.zip:$PYTHONPATH

# 指向spark目录下的python文件夹

path to python folder in spark

export PYSPARK_PYTHON=/home/zxj/user/anaconda3/envs/py35/bin/python3

# 指定pyspark中使用的python版本(这里使用py35环境下的python3.5版本)

$ source ~/.bashrc

在PySparkShell中检查Python版本

图11:路径设置后,PySparkShell使用指定的python3.5版本

图12:Spark管理器中可查看相应的进程

3. 路径设置中可能遇到的问题

Error: ‘can not find ‘SPARK_HOME’

问题原因:修改个人目录下.bashrc文件可以在shell命令中起作用,但是不会影响GUI(这里是Jupyter Notebook)

解决方法:取得root权限,在根目录/etc/profile中增加环境变量(需要root权限)

$ vim /etc/profile

export SPARK_HOME=/usr/hdp/2.5.0.0-1245/spark

$ source /etc/profile

图13:增加‘SPARK_HOME’到系统环境变量中

4. JupyterHub中运行PySpark简单实例

需要安装findspark,并运行findspark.init()以import pyspark as a regular library

替代方法:安装toree然后利用toree生成Apache Toree Pyspark kernel(我尝试过这个方法但没有成功,总是报错dead kernel)。具体可以参考以下链接,但是自己踩过的一个坑必须告知下(必须指定安装toree0.2.0版本,因为0.3.0版本中移除了PySpark和SparkR)

Installation​toree.apache.org

图14:PySpark简单实例

图15:Spark管理器中可查看相应的进程

哈哈哈,PySpark也配置完成。大家可以各显神通啦。如果觉得有所帮助,点个赞呗。

附录1:Jupyter Notebook创建新环境及新kernel

创建新环境py35

$ conda create -n py35 python=3.5

# 创建新环境py35,指定python版本为3.5

$ conda activate py35 (source activate py35)

# 进入py35环境

$ conda deactivate

# 退出py35环境

环境py35中创建kernel py3.5

$ conda activate py35

$ conda install notebook ipykernel

# 如果已有ipykernel,可跳过这一步

$ ipython kernel install --user --name “py3.5”

# 在环境py35中创建kernel py3.5

检查所有可用的kernels

附录 图1:新建的kernel py3.5相关信息

附录2:Jupyter Notebook安装Jupyter Nbextensions

关联Jupyter Notebook与conda

$ conda install -c conda-forge nb_conda

安装Jupyter Nbextensions

$ conda install -c conda-forge jupyter_contrib_nbextensions

$ conda install -c conda-forge jupyter_nbextensions_configurator

附录 图2:Jupyter Nbextensions管理页面

附录3:后台运行JupyterHub及终止

后台运行

$ nohup jupyterhub –f ~/etc/py36/jhub/jupyterhub_config.py &

# &符号表示后台运行,所以即使终端窗口关闭也可以继续运行

终止

$ jupyter notebook list

# 查找正在运行的jupyter notebooks

$ netstat –tulpn | grep xx

# 找出所属进程的PID

$ kill 28678

# 终止该进程

附录 图3:终止后台运行的JupyterHub

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值