在集群上的pyspark中配置ipython notebook,实现网页远程调用。

接着之前的在服务器上远程网页调用python,现实中,大数据集无法单服务器处理时,需要调用集群的pyspark,又需要图形显示和脚本运行调试等的方便性,这时也可以类似服务器远程使用ipython notebook一样。
前提是集群上已经安装了pyspark和ipython notebook,我自己的是已经安装了Anaconda。在此只说配置。

基本安装步骤:

1、首先创建一个与PySpark一起使用的IPython配置文件。

ipython profile create pyspark

这应该已经创建了配置文件目录~/.ipython/profile_pyspark/ 并且生成包含ipython_notebook_config.py的3个文件(有的会没有该文件,就自行创建即可)。

2、 生成密码

直接输入命令ipython,打开ipython,创建一个密文的密码:

In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password: 
Verify password: 

sha1:****

把生成的密文复制下来

3、修改默认配置文件ipython_notebook_config.py

编辑文件

vim ~/.ipython/profile_pyspark/ipython_notebook_config.py

进行如下修改:

c.NotebookApp.ip='*'
c.NotebookApp.password = 'sha1:****刚才复制的那个密文'
c.NotebookApp.open_browser = False
c.NotebookApp.port =8542 #随便指定一个端口

4、创建~/.ipython/profile_pyspark/startup/00-pyspark-setup.py

文件内容如下:

import os
import sys

spark_home = os.environ.get('SPARK_HOME', None)
  if not spark_home:
      raise ValueError('SPARK_HOME environment variable is not set')
sys.path.insert(0, os.path.join(spark_home, 'python'))
  sys.path.insert(0, os.path.join(spark_home, 'python/lib/py4j-0.8.1-src.zip'))#py4j-0.8.1-src.zip的版本自己切换目录ls查询后,做相应修改
execfile(os.path.join(spark_home, 'python/pyspark/shell.py'))

5、设置环境变量

vim ~/.bashrc

添加内容如下(路径根据自己集群路径修改哈):

export SPARK_HOME='/opt/cloudera/parcels/CDH/lib/spark'
export PYSPARK_SUBMIT_ARGS='--master yarn --deploy-mode client --num-executors 24 --executor-memory 10g --executor-cores 5'
export PYSPARK_DRIVER_PYTHON=ipython 
export PYSPARK_DRIVER_PYTHON_OPTS="notebook" (去处此参数,可调用 ipython)

然后source ~/.bashrc,就可以通过启动 pyspark 来启动 IPython Notebook 了.

6、启动使用

直接输入 pyspark
或者(若没有对默认配置修改,调用自己创建的配置就只能)

ipython notebook --profile=pyspark --config=/home/dgbd/.ipython/profile_pyspark/ipython_notebook_config.py

注:ipython notebook 都可用jupyter notebook 替换。
不推荐用root用户启动,如果非要用root用户启动需加–allow-root

ipython notebook --allow-root --config=配置文件路径

或者

jupyter notebook --allow-root --config=配置文件路径

启动jupyter notebook后,在远程电脑中打开浏览器输入10.43.83.196:8542(ip和端口号)就可以远程访问


其他问题:

我自己在两个集群上都做了配置(1、公司自己集群,2、项目离线环境集群)1成功了,2老是失败。
报错的最后反馈信息是

Exception:Java gateway process exited before sending the driver its port number

网上查了好久,有人说是配置问题,有人说是java版本问题。一直没有找到解决办法。谁有解决的经验欢迎留言
另外,成功的是python3版本,失败的是python2,系统都是centos6.5。集群版本也一样cdh5.9,有些组建的配置内容不一样。节点数目和配置不一样。

可以参考的一些资料:
http://blog.csdn.net/u012432611/article/details/51225555
http://blog.csdn.net/lsshlsw/article/details/49953455
http://blog.csdn.net/sadfasdgaaaasdfa/article/details/47090513
http://blog.csdn.net/dataningwei/article/details/64583468
https://www.cnblogs.com/NaughtyBaby/p/5469469.html

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值