我应该将程序放在HDFS上还是保留在本地?
我说的是一个二进制文件:

  • 由spark-submit
  • 启动
  • 每天执行一次
  • 在RDD / Dataframe上执行 Spark 映射缩减功能
  • 是一个JAR
  • 重量20 Mo
  • 处理大量数据,此dfata位于HDFS上

  • 我认为这是个坏主意,因为在HDFS上分发可执行文件可能会减慢执行速度。我认为对于大于64 Mo(Hadoop块大小)的文件,甚至会更糟。但是,我没有找到有关此资源。另外,我不知道有关内存管理的后果(是否为持有JAR副本的每个节点复制了Java堆?)

    最佳答案

    是的,这正是YARN共享缓存背后的概念。

    这样做的主要原因是,如果您有大量的资源与作业相关联,并且将其提交为本地资源会浪费网络带宽。

    请参阅Slideshare以更详细地了解性能影响:

  • 幻灯片共享:Hadoop Summit 2015: A Secure Public Cache For YARN Application Resources
  • YARN Shared Cache
  • YARN-1492 truly shared cache for jars (jobjar/libjar)
  • 关于performance - 我应该在HDFS上放置程序吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48863143/

    10-11 02:56