【第21期】观点:人工智能到底用 GPU?还是用 FPGA?

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
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

spark 集群运行python作业

spark集群运行python作业,pyspark

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

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

Learning Spark——client mode和cluster mode的区别

在使用spark-submit提交Spark任务一般有以下参数:./bin/spark-submit \ --class \ --master \ --deploy-mode \ ...
  • Trigl
  • Trigl
  • 2017-06-09 19:10
  • 382

pyspark开发环境搭建

包依赖问题解决方法一:使用findspark库自动识别spark依赖包1. 安装findsparkpip install findspark2. 使用findspark初始化pyspark的依赖imp...
  • syani
  • syani
  • 2017-06-03 12:39
  • 471

常用Python第三方库

如果说强大的标准库奠定了Python发展的基石,丰富的第三方库则是python不断发展的保证,随着python的发展一些稳定的第三库被加入到了标准库里面,这里有6000多个第三方库的介绍:点这里或者访...

Hadoop学习笔记(7)-简述MapReduce计算框架原理

1. MapReduce基本编程模型和框架1.1 MapReduce抽象模型大数据计算的核心思想是:分而治之。如下图1所示。把大量的数据划分开来,分配给各个子任务来完成。再将结果合并到一起输出。 注...
  • xummgg
  • xummgg
  • 2016-05-30 21:08
  • 1207

Hadoop学习笔记(5)-搭建Hadoop分布式

0.前言我要搭建的集群是一台Master和3台Worker。先按照前面博客内容配置好。 修改hostname和hosts http://blog.csdn.net/xummgg/article/d...
  • xummgg
  • xummgg
  • 2016-04-17 15:41
  • 3434

几种深度学习库的整理

本文总结了Python、Matlab、CPP、Java、JavaScript、Lua、Julia、Lisp、Haskell、.NET、R等语言的深度学习库,赶紧收藏吧! Python Theano是...

Spark学习笔记1-Scala基础语法

1.Scala简介 Scala是一门多范式的编程语言,一种类似java的编程语言 ,设计初衷是实现可伸缩的语言、并集成面向对象编程和函数式编程的各种特性。 java之父JamesGosling也曾...
  • xummgg
  • xummgg
  • 2016-01-03 12:10
  • 1129

Spark学习笔记7-在eclipse里用scala编写spark程序(单机和集群运行)

1.下载eclipse我下载的是待scala SDK的eclipse,下载地址如下: http://scala-ide.org/download/sdk.html 我的要放在ubuntu下写程序,...
  • xummgg
  • xummgg
  • 2016-02-11 21:01
  • 4578
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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