Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark Dataproc上的处理速度非常慢,在本地计算机上为9小时,而在本地计算机上为3分钟_Apache Spark_Google Cloud Platform_Google Cloud Dataproc - Fatal编程技术网

Apache spark Dataproc上的处理速度非常慢,在本地计算机上为9小时,而在本地计算机上为3分钟

Apache spark Dataproc上的处理速度非常慢,在本地计算机上为9小时,而在本地计算机上为3分钟,apache-spark,google-cloud-platform,google-cloud-dataproc,Apache Spark,Google Cloud Platform,Google Cloud Dataproc,从日志中我可以看到有182k行70MB。加载70MB数据需要1.5小时,在Dataproc上训练182K行需要9小时(从15/11/14 01:58:28开始,到15/11/14 09:19:09结束)。在本地机器上加载相同的数据并运行相同的算法需要3分钟 数据处理日志 15/11/13 23:27:09 INFO com.google.cloud.hadoop.io.bigquery.ShardedExportToCloudStorage: Table 'mydata-data:website

从日志中我可以看到有182k行70MB。加载70MB数据需要1.5小时,在Dataproc上训练182K行需要9小时(从15/11/14 01:58:28开始,到15/11/14 09:19:09结束)。在本地机器上加载相同的数据并运行相同的算法需要3分钟

数据处理日志

15/11/13 23:27:09 INFO com.google.cloud.hadoop.io.bigquery.ShardedExportToCloudStorage: Table 'mydata-data:website_wtw_feed.video_click20151111' to be exported has 182712 rows and 70281790 bytes
15/11/13 23:28:13 WARN akka.remote.ReliableDeliverySupervisor: Association with remote system [akka.tcp://sparkExecutor@rc-spark-poc-w-1.c.dailymotion-data.internal:60749] has failed, address is now gated for [5000] ms. Reason: [Disassociated] 

15/11/14 01:58:28 INFO com.dailymotion.recommender.BigQueryRecommender: Fetching the Ratings RDD
15/11/14 01:58:28 INFO com.dailymotion.recommender.BigQueryRecommender: Transforming the video feature matrix
15/11/14 01:58:28 INFO com.dailymotion.recommender.BigQueryRecommender: Training ALS Matrix factorization Model


[Stage 2:=============================>                             (1 + 1) / 2]

15/11/14 09:19:09 WARN com.github.fommil.netlib.BLAS: Failed to load implementation from: com.github.fommil.netlib.NativeSystemBLAS
15/11/14 09:19:09 WARN com.github.fommil.netlib.BLAS: Failed to load implementation from: com.github.fommil.netlib.NativeRefBLAS

15/11/14 09:19:44 INFO com.dailymotion.recommender.BigQueryRecommender: Transforming the video feature matrix
15/11/14 09:19:44 INFO com.dailymotion.recommender.BigQueryRecommender: Transforming the user feature matrix
  • 已将数据复制到本地计算机

    r.viswanadha$ gsutil cp -r gs://<mycompany>-spark-rc-test/bqdata/hadoop/tmp/bigquery/job_201511132327_0000 .
    
    
    Copying gs://dailymotion-spark-rc-test/bqdata/hadoop/tmp/bigquery/job_201511132327_0000/shard-0/data-000000000000.json... 
    
    Downloading ...201511132327_0000/shard-0/data-000000000000.json: 141.3 MiB/141.3 MiB      
    
    Copying gs://dailymotion-spark-rc-test/bqdata/hadoop/tmp/bigquery/job_201511132327_0000/shard-0/data-000000000001.json... 
    
    Copying gs://<mycompany>-spark-rc-test/bqdata/hadoop/tmp/bigquery/job_201511132327_0000/shard-1/data-000000000000.json...`
    
  • 首轮

    15/11/14 13:19:36 INFO BigQueryRecommender: Training implicit features for the ALS Matrix factorization Model
    ...
    15/11/14 13:22:24 INFO BigQueryRecommender: Transforming the video feature matrix
    
    第二轮

    15/11/14 13:29:05 INFO BigQueryRecommender: Training implicit features for the ALS Matrix factorization Model
    
    
    ...
    
    15/11/14 13:31:57 INFO BigQueryRecommender: Transforming the video feature matrix
    
    DataProc集群有1个主节点和3个从节点,每个节点有104GB(RAM)和16个CPU

    我的本地机器有8GB(RAM)和2个CPU 2.7GHz内核i5

    gsutil ls -l -r -h  gs://dailymotion-spark-rc-test/bqdata/hadoop/tmp/bigquery/job_201511132327_0000
    
    gs://dailymotion-spark-rc-test/bqdata/hadoop/tmp/bigquery/job_201511132327_0000/: 
    
    gs://dailymotion-spark-rc-test/bqdata/hadoop/tmp/bigquery/job_201511132327_0000/shard-0/: 
    
        0 B  2015-11-13T23:27:13Z  gs://dailymotion-spark-rc-test/bqdata/hadoop/tmp/bigquery/job_201511132327_0000/shard-0/ 
    
        141.3 MiB  2015-11-13T23:29:21Z  gs://dailymotion-spark-rc-test/bqdata/hadoop/tmp/bigquery/job_201511132327_0000/shard-0/data-000000000000.json 
    
       0 B  2015-11-13T23:29:21Z  gs://dailymotion-spark-rc-test/bqdata/hadoop/tmp/bigquery/job_201511132327_0000/shard-0/data-000000000001.json 
    
    gs://dailymotion-spark-rc-test/bqdata/hadoop/tmp/bigquery/job_201511132327_0000/shard-1/: 
    
        0 B  2015-11-13T23:27:13Z  gs://dailymotion-spark-rc-test/bqdata/hadoop/tmp/bigquery/job_201511132327_0000/shard-1/ 
    
        0 B  2015-11-13T23:28:47Z  gs://dailymotion-spark-rc-test/bqdata/hadoop/tmp/bigquery/job_201511132327_0000/shard-1/data-000000000000.json 
    
       0 B  2015-11-13T23:27:09Z  gs://dailymotion-spark-rc-test/bqdata/hadoop/tmp/bigquery/job_201511132327_0000/ 
    
    TOTAL: 6 objects, 148165416 bytes (141.3 MiB)
    

    对于任何遇到类似问题的人:当只处理GCS中的一个小对象(或带有来自BigQuery连接器的数据的单个碎片)时,您可以在Spark RDD中使用一个分区,结果是几乎没有并行性


    虽然它会导致额外的洗牌阶段,但输入RDD可以在从GCS或BigQuery读取后立即重新分区,以获得所需数量的分区。额外的洗牌是否有益取决于RDD中的每条记录需要多少处理或IO。

    对于任何遇到类似问题的人来说:当只处理GCS中的单个小对象(或带有BigQuery连接器数据的单个碎片)时,您可以在Spark RDD中使用单个分区,因此,最终几乎没有平行性


    虽然它会导致额外的洗牌阶段,但输入RDD可以在从GCS或BigQuery读取后立即重新分区,以获得所需数量的分区。额外的洗牌是否有益取决于RDD中的每条记录需要多少处理或IO。

    当分布式集群上的运行速度比本地设置慢几个数量级时,回顾一些离线发现,要寻找的主要瓶颈是跨网络服务依赖性以及磁盘和本地I/O方面的I/O往返延迟瓶颈

    一般情况下需要寻找的东西(其中一些可能适用于或不适用于您的具体情况,但对于遇到类似问题的其他人来说可能是常见的):

  • 确保保存数据的GCS存储桶与您使用
    gsutil ls-L gs://[您的存储桶]
    部署Dataproc群集的GCE区域位于同一区域。跨大陆的通信速度不仅明显较慢,而且可能会在项目中产生额外的网络成本
  • 如果您的作业有任何其他网络依赖项,例如查询API或在GCE上运行的某种独立数据库,请尝试将它们集中在同一区域中;即使在同一个大陆内,GCE跨区域通信也可能有数十毫秒的往返延迟,这可能会显著增加,尤其是在有每记录请求的情况下(例如,30毫秒*180千条记录的输出时间为1.5小时)
  • 即使这一次可能不适用于您的具体情况,请记住,如果可能的话,要避免通过Hadoop文件系统接口对GCS进行每记录的往返I/O;地面军事系统的总体吞吐量具有很强的可扩展性,但由于远程存储的性质,往返延迟比您在本地计算机上测量到的往返延迟慢得多,因为本地读取通常会命中操作系统缓冲缓存,或者如果您使用的笔记本电脑的SSD能够承受高容量的亚毫秒往返,与地面军事系统的30ms-100ms往返相比
  • 一般来说,对于可以支持非常高的吞吐量但存在很长的往返延迟的用例,请确保使用类似于“如果数据很小,并且没有自然地划分为足够的并行性”的内容来分割数据,以确保Spark群集的良好利用率


    最后,我们的最新版本修复了一系列本机库配置,因此ALS部分以及其他mllib用例的性能可能会更好。

    回顾一些离线发现,当分布式集群上的运行速度比本地设置慢几个数量级时,要寻找的主要瓶颈是跨网络服务依赖性以及磁盘和本地I/O方面的I/O往返延迟瓶颈

    一般情况下需要寻找的东西(其中一些可能适用于或不适用于您的具体情况,但对于遇到类似问题的其他人来说可能是常见的):

  • 确保保存数据的GCS存储桶与您使用
    gsutil ls-L gs://[您的存储桶]
    部署Dataproc群集的GCE区域位于同一区域。跨大陆的通信速度不仅明显较慢,而且可能会在项目中产生额外的网络成本
  • 如果您的作业有任何其他网络依赖项,例如查询API或在GCE上运行的某种独立数据库,请尝试将它们集中在同一区域中;即使在同一个大陆内,GCE跨区域通信也可能有数十毫秒的往返延迟,这可能会显著增加,尤其是在有每记录请求的情况下(例如,30毫秒*180千条记录的输出时间为1.5小时)
  • 即使这一次可能不适用于您的具体情况,请记住,如果可能的话,要避免通过Hadoop文件系统接口对GCS进行每记录的往返I/O;地面军事系统的总体吞吐量具有很强的可扩展性,但由于远程存储的性质,往返延迟比您在本地计算机上测量到的往返延迟慢得多,因为本地读取通常会命中操作系统缓冲缓存,或者如果您使用的笔记本电脑的SSD能够承受高容量的亚毫秒往返,与地面军事系统的30ms-100ms往返相比
  • 一般来说,对于可以支持非常高的吞吐量但存在长的往返延迟的用例,请确保使用诸如“如果数据很小,并且不能自然地划分为足够的并行性”之类的内容来分割数据,以确保良好的利用率
    gsutil ls -l -r -h  gs://dailymotion-spark-rc-test/bqdata/hadoop/tmp/bigquery/job_201511132327_0000
    
    gs://dailymotion-spark-rc-test/bqdata/hadoop/tmp/bigquery/job_201511132327_0000/: 
    
    gs://dailymotion-spark-rc-test/bqdata/hadoop/tmp/bigquery/job_201511132327_0000/shard-0/: 
    
        0 B  2015-11-13T23:27:13Z  gs://dailymotion-spark-rc-test/bqdata/hadoop/tmp/bigquery/job_201511132327_0000/shard-0/ 
    
        141.3 MiB  2015-11-13T23:29:21Z  gs://dailymotion-spark-rc-test/bqdata/hadoop/tmp/bigquery/job_201511132327_0000/shard-0/data-000000000000.json 
    
       0 B  2015-11-13T23:29:21Z  gs://dailymotion-spark-rc-test/bqdata/hadoop/tmp/bigquery/job_201511132327_0000/shard-0/data-000000000001.json 
    
    gs://dailymotion-spark-rc-test/bqdata/hadoop/tmp/bigquery/job_201511132327_0000/shard-1/: 
    
        0 B  2015-11-13T23:27:13Z  gs://dailymotion-spark-rc-test/bqdata/hadoop/tmp/bigquery/job_201511132327_0000/shard-1/ 
    
        0 B  2015-11-13T23:28:47Z  gs://dailymotion-spark-rc-test/bqdata/hadoop/tmp/bigquery/job_201511132327_0000/shard-1/data-000000000000.json 
    
       0 B  2015-11-13T23:27:09Z  gs://dailymotion-spark-rc-test/bqdata/hadoop/tmp/bigquery/job_201511132327_0000/ 
    
    TOTAL: 6 objects, 148165416 bytes (141.3 MiB)