公司最近的spark集群由原来的standalone迁移到spark on yarn了,在迁移相关的程序时,发现调整还是有一些的,以下分别是两个版本提交的部分shell命令,从命令可以看出其区别,这个区别主要是spark on yarn的工作方式不太一样,造成提交的方式也不太一样。
standalone方式的脚本为:
yarn-cluster方式的脚本为:
碰到的问题其中一个就是文件读写的方法不一致, standalone由于driver是固定的, 读取文件类似本地读取,但是yarn-cluster的driver是yarn进行分配的,需要把文件使用--files进行上传,而且在读取文件的时候,应该只能使用文件的名称而不是包含全部路径的文件名,不然会抛出文件找不到的异常,另外比较有用的是这个选项:--conf "spark.hadoop.mapreduce.input.fileinputformat.split.minsize=1073741824" 一般hadoop默认的块是64M,这个可以调整split的大小,以免切分成太多小文件。
本文记录了将Spark集群从standalone模式迁移到YARN模式时遇到的调整,主要对比了两种模式下提交任务的shell命令。standalone模式中,driver固定,文件读取类似于本地操作;而在YARN-cluster模式中,driver由YARN分配,需通过--files上传文件,并使用文件名而非全路径读取,否则会导致文件找不到的异常。此外,调整`spark.hadoop.mapreduce.input.fileinputformat.split.minsize`参数可避免过多的小文件产生。

2628

被折叠的 条评论
为什么被折叠?



