美文网首页大数据
Spark on Yarn 之Python环境定制

Spark on Yarn 之Python环境定制

作者: 荒湖 | 来源:发表于2017-09-06 20:31 被阅读0次

    1 动机

    不同用户的应用程序使用的python版本及需要的python依赖可能存在不同,若每次缺少依赖都请op去update所有节点,对于大集群的维护来说相对比较困难,而且走变更流程等还影响spark 用户的工作效率。

    为解决上述问题,我们探索一种用户可自定义Python环境的方法,用户可依据自己的需要,定制自己的python 并做简单指定即可。

    2 方法

    2.1 构建Python

    //下载Python源码
    wget https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tgz   
    //解压
    tar -zxvf Python-2.7.15.tgz
    //编译  
    ./Python-2.7.15/configure --prefix=/home/barrenlake/tmp/python-2.7.15 --with-zlib-dir=/usr/local/lib # 指定打包路径  
    make && make install
    

    2.2 安装依赖

    使用Python的包管理工具pip安装依赖,若无pip请自行安装。

    pip install -t /home/barrenlake/tmp/python-2.7.15/lib/python2.7/site-packages <依赖包名>  
    // -t 指定安装路径
    

    2.3 打包

    //进入python根目录, 注意打包路径决定下面的spark配制方式。ll 
    cd /home/barrenlake/tmp/python-2.7.15  
    tar -zcf python-2.7.15.tgz *
    

    3. Spark 配制

    因客户机存在公用的可能,且每个应用程序的需求不同,为了降低不同用户之间的影响,我们推荐在提交命令中配制的作法。

    3.1 上传python-2.7.15至Spark Executor工作目录

    //submit提交脚本中指定(“#” 指的是符号连接,与submit 命令中指定的“spark.pyspark.python”路径方式有关)
    --conf spark.yarn.dist.archives=file:/home/barrenlake/tmp/python-2.7.15/python-2.7.15.tgz#python-2.7.15
    或
    直接上传hdfs目录
    

    3.2 Python目录指定

    备注:因3.1中指定的变量,会将python-2.7.15.tgz上传至Spark Executor工作目录,随后Executor在准备启动环境时会将其加载到工作目录中,因此python路径可从当前路径“.”指定。

    • 提交脚本中指定
    //driver端配制
    --conf spark.pyspark.driver.python = /home/barrenlake/tmp/python-2.7.15/bin/python
    
    //executor端配制
    --conf spark.pyspark.python = ./python-2.7.15/bin/python
    
    

    4 应用提交示例

    • client模式
      Driver在用户提交宿主机运行,提交机和线上集群环境可能存在差异,因此,区分配制两端的python环境(若相同只须指定“spark.pyspark.python”即可)。
    spark-submit <spark-shell>
    --conf spark.yarn.dist.archives=/home/barrenlake/tmp/python-2.7.15/python-2.7.15.tgz#python-2.7.15 \  
    --conf spark.pyspark.driver.python = /home/barrenlake/tmp/python-2.7.15/bin/python \
    --conf spark.pyspark.python = ./python-2.7.15/bin/python \
    pi.py \
    1000
    
    
    • cluster 模式
      Driver运行在ApplicationMaster, 而ApplicationMaster运行在Executor(container)中,因此,可视为Driver和Executor环境统一,只需要配制spark.pyspark.python即可。
    spark-submit <spark-shell>
    --conf spark.yarn.dist.archives=/home/barrenlake/tmp/python-2.7.15/python-2.7.15.tgz#python-2.7.15 \  
    --conf spark.pyspark.python = ./python-2.7.15/bin/python \
    pi.py \
    1000
    
    

    注意:“#” 指的是符号连接,与submit 命令中指定的“spark.pyspark.python”路径方式有关。

    5 缺点分析

    上述方案虽可实现用户自定义python环境,但执行过程中每个Executor从HDFS下载一次python环境,增加RPC等开销,在开启动态资源伸缩功能时,下载次数会更多……

    相关文章

      网友评论

        本文标题:Spark on Yarn 之Python环境定制

        本文链接:https://www.haomeiwen.com/subject/dlqprxtx.html