代码之家  ›  专栏  ›  技术社区  ›  Dr. Fabien Tarrade

当使用spark submit yarn客户端而不是spark Submist local时,Jupyter笔记本的速度要慢3倍

  •  0
  • Dr. Fabien Tarrade  · 技术社区  · 9 年前

    • Spark 1.6.0
    • Python 3.5.2

    我正在执行完全相同的代码。

    1. 计算70M条目数配置单元表上的条目数
    2. 配置单元表上具有多个连接的复杂SQL查询

    我试图理解以下两者之间的区别:

    1. 运行Hadoop集群(“spark submit--master yarn cluster”,使用Oozie)
    2. 运行Hadoop集群的边缘节点(“spark submit--master local”)
    3. 使用Jupyter笔记本(“spark submit--master yarn客户端”)

    ---------------------------------------------------------------------------------------------------
    |  test                                | wall time code 1 | wall time code 2 | wall time code 3   |
    ---------------------------------------------------------------------------------------------------
    |  Oozie (spark-submit yarn-cluster)   |  14.50 s         | 010.69 s          |  085.74 s         |
    ---------------------------------------------------------------------------------------------------
    |  edge node (spark-submit yarn-client)|  12.93 s         | 008.91 s          |  122.12 s         |
    ---------------------------------------------------------------------------------------------------
    |  edge node (spark-submit local)      |  05.15 s         | 019.05 s          |  414.68 s         |
    ---------------------------------------------------------------------------------------------------
    |  Jupyter (spark-submit yarn-client)  |  15.30 s         | 145.77 s          |  986.71 s         |
    ---------------------------------------------------------------------------------------------------
    |  Jupyter (spark-submit local)        |  05.89 s         | 021.46 s          |  385.66 s         |
    ---------------------------------------------------------------------------------------------------
    

    对我来说,使用纱线簇比使用边缘节点和API访问簇上的数据更快地使用结果计算机是有道理的。我不明白的是,为什么使用Jupyter笔记本时,我会看到一个2.5倍的系数:

    • 使用Jupyter笔记本(“spark submit--master yarn客户端”)

    我希望使用Jupyter笔记本,“spark submit--master yarn client”比“spark Submist--master local”更快。

    JupyterHub背后的身份验证步骤、代理转换和多用户管理?

    如何检查配置中的问题?有没有关于如何进行最佳设置的文档?很高兴使用Jupyter笔记本进行快速数据探索,所以我想了解其中的差异。

    spark-submit --master yarn-cluster 
    --files /etc/hive/conf/hive-site.xml 
    --conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=/opt/cloudera/extras/anaconda3/bin/python3 
    --conf spark.ui.enabled=false 
    --conf spark.yarn.security.tokens.hive.enabled=false 
    --conf spark.yarn.executor.memoryOverhead=6144 
    --conf spark.serializer=org.apache.spark.serializer.KryoSerializer 
    --conf spark.io.compression.codec=snappy 
    --conf spark.speculation=true 
    --conf spark.shuffle.manager=sort 
    --conf spark.shuffle.service.enabled=true 
    --conf spark.dynamicAllocation.enabled=true 
    --conf spark.dynamicAllocation.initialExecutors=4 
    --conf spark.driver.maxResultSize=10g 
    --conf spark.dynamicAllocation.minExecutors=2 
    --conf spark.executor.cores=4 
    --conf spark.dynamicAllocation.maxExecutors=20 
    --conf spark.executor.memory=10g 
    --conf spark.driver.memory=10g 
    --conf spark.driver.extraJavaOptions=-Xms10g 
    --conf spark.akka.frameSize=2047 
    --conf spark.kryoserializer.buffer.max=2047mb 
    testpyspark.py
    
    1 回复  |  直到 9 年前
        1
  •  0
  •   Dr. Fabien Tarrade    8 年前

    该问题与Cloudera 5.8有关。在Jupyter中执行的Python版本与HDFS名称节点之间存在兼容性问题。

    解决方案是在内核中添加python 2的路径,再加上内核本身所需的所有其他路径:

    “PATH”:“/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/cloudera/extras/anaconda2/bin/”

    推荐文章