Spark集群,多个版本Python/Python Package管理

原创 2016年08月30日 14:34:01

进年来,越来越多的数据科学家、分析人员、数据工程师运用Python语言进行数据分析和机器学习。Spark在0.7版本开始支持Python语言(PySpark)。
相比于Scala/Java, Python语言更适合互动的探索性分析,拥有内置的图形化工具以及丰富的机器学习库。Scala/Java的优势在于平台独立,代码和第三方库易于打包到Jar文件,更好的执行效率。当我们使用PySpark时则会失去以上优势,尤其是在集群环境管理不同的Python版本和第三方库。

具体问题:

  1. 不同的数据分析人员/开发团队需要不同版本的Python版本执行PySpark。
  2. 同一Python版本下,需要安装多个Python库,甚至需要不同版本的库。

针对问题2的一个解决办法是将Python依赖库打包成*.egg文件,在运行pyspark或者spark-submit时使用–py-files加载egg文件。此解决方案的问题在于许多Python库都包含native code,编译时对平台依赖,并且对于一些复杂依赖的库(如Pandas),编译失败。
如果不使用*.egg文件,则需要安装不同Python版本极其所需库在集群中的每一台机器,然后在运行Spark时指定所需Python的路径。


解决方案

使用Anaconda管理多个Python环境在集群中的每一个节点
1. Anaconda 安装 https://www.continuum.io

wget http://repo.continuum.io/archive/Anaconda3-4.1.1-Linux-x86_64.sh
bash Anaconda3-4.1.1-Linux-x86_64.sh -b -p /opt/anaconda

(此安装包默认为python3.5, 注意anaconda在每个节点的安装路径需要一致)
2. 创建多个Anaconda Python环境
创建,每行命令最后的参数anaconda是指定安装所有anaconda python package

/opt/anaconda/bin/conda create -n py34 python=3.4 anaconda
/opt/anaconda/bin/conda create -n py27a python=2.7 anaconda

复制anaconda环境, 并在此环境中安装python thrift package

/opt/anaconda/bin/conda create -n py27b --clone py27a

使用指定的Python环境运行Spark
Client Mode: PYSPARK_PYTHON = /opt/anaconda/bin/conda/py27b/python
Cluster Mode: spark.yarn.appMasterEnv.PYSPARK_PYTHON = /opt/anaconda/bin/conda/py27b/python

设置Spark默认Python环境
修改spark-env.sh

if [ -z "${PYSPARK_PYTHON}" ]; then
export PYSPARK_PYTHON=/opt/anaconda3/bin/python
fi
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Hadoop2.7与Spark1.6的集群搭建

机器说明:四台ubuntu系统的电脑,选取其中一台作为master,其余三台作为slaves。      写在开头的两个坑:      1.虽然Linux支持一些特殊字符,但java里面并不支持。所以...

使用docker安装部署Spark集群来训练CNN(含Python实例)

实验室有4台服务器(8个GPU/台),平日都只使用了其中的一个GPU,实在暴遣天物!于是决定使用docker安装部署Spark集群,将这些GPU都利用起来训练CNN。本文是博主含泪写出的踩坑总结,希望...
  • cyh24
  • cyh24
  • 2015-11-06 15:03
  • 12874

spark 集群运行python作业

spark集群运行python作业,pyspark

Spark 使用Python在pyspark中运行简单wordcount

Spark入门(Python版) Spark1.0.0 多语言编程之python实现 Spark编程指南(python版)进入到spark目录, 然后采用默认的设置运行pyspark ./b...

pyspark的初始调用

1,直接进入pyspark进行命令行代码 a.首先查看pyspark的安装目录$SPARK_HOME  b.对于pyspark,打开文件的路径有两种,默认是从hdfs读取文件,也可以指定sc.text...

spark机器学习笔记:(五)用Spark Python构建分类模型(下)

声明:版权所有,转载请联系作者并注明出处  http://blog.csdn.net/u013719780?viewmode=contents 博主简介:风雪夜归子(英文名:Allen),机器学...

spark机器学习笔记:(二)用Spark Python进行数据处理和特征提取

声明:版权所有,转载请联系作者并注明出处  http://blog.csdn.net/u013719780?viewmode=contents   1.  获取公开数据集 UCL机器学习...

spark分布式平台下python环境的搭建

其实这个环境我已经搞了两个礼拜了。两周前,我接到这个project,完成一个python写的基于spark分布式平台的音乐推荐系统。我以前听过python,这一次无意间看到了一句话“life  is ...

spark机器学习笔记:(六)用Spark Python构建回归模型

声明:版权所有,转载请联系作者并注明出处  http://blog.csdn.net/u013719780?viewmode=contents 博主简介:风雪夜归子(英文名:Allen),机器学习...

spark机器学习笔记:(四)用Spark Python构建分类模型(上)

本文,我将简单介绍分类模型的基础知识以及如何在各种应用中使用这些模型。分类通常是指将事物分成不同的类别。在分类模型中,我们期望根据一组特征来判断类别,这些特征代表了物体、事件或上下文相关的属性(变量)...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)