经用户要求,需要安装jupyter notebook供其使用来调用我们集群的spark,因此需要搭建jupyter环境并启动
我们的jupyter主要是提供python代码的编写,且在python中调用pyspark来使用集群的spark资源。
查找了网上的教程和博客,记录下自己安装jupyter的过程和问题
前置条件
- 服务器已经安装了python(我用的2.7)
- 服务器已经安装了spark
- 服务器10.38.149.126
python环境
pip安装
安装jupyter需要用到python的包管理工具pip,该工具提供了对Python 包的查找、下载、安装、卸载的功能。
检查是否安装了pip
没有安装,使用下面的命令安装
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py # 下载安装脚本
$ sudo python get-pip.py # 运行安装脚本
安装成功
jupyter安装
接下来就可以安装jupyter,安装jupyter的时候请使用spark用户,如果使用root用户安装,安装完之后用root启动jupyter时,会提示jupyter不推荐用root启动,这样就会启动不了。如果强制用spark启动,启动后打开页面会报错,无法运行python程序。
使用spark安装,安装最后会报错,说没有文件夹 的权限,因此需要释放文件夹的权限chmod -R 777 /usr/lib/python2.7/site-packages
后面还会报几个文件夹权限的问题,都释放掉,然后再安装,安装完成
配置jupyter
先生成一个密码,使用命令输入密码,会加密成sha1:.....
python -c "import IPython;print IPython.lib.passwd()"
使用下面命令生成配置文件jupyter_notebook_config.py在当前目录的.jupyter下
jupyter notebook --generate-config
修改这个配置文件,在底部添加
# 运行所有IP访问
c.NotebookApp.ip = '*'
c.NotebookApp.allow_root = True
# 启动时是否自动打开浏览器
c.NotebookApp.open_browser = False
# 指定端口号
c.NotebookApp.port = 8888
# 密码设置
c.NotebookApp.password = u'刚才生成的密文(sha:...)'
# jupyter notebook工作目录
c.ContentsManager.root_dir = '/home/spark/tmp/'
完成!
启动jupyter
访问http://seadoop-test134.wux.chin.seagate.com:8888
输入刚才的明文密码,登陆成功
可以编写代码了!
在调用pyspark的时候可能会出现no module named pyspark错误,使用下面的代码安装一下
然后就可以使用pyspark了
开机启动jupyter
编写shell命令,将该命令放入/etc/rc.d/rc.local文件内,重启服务器reboot后,可以直接访问jupyter了
su - spark -c "jupyter notebook"