在我的Spark工作的洗牌阶段,我得到"太多打开的文件".为什么我的工作开了这么多文件?我可以采取哪些措施来使我的工作取得成功.
sam*_*est 23
最好的方法绝对只是增加ulimit,如果可能的话,这是我们在Spark中做出的一种假设,即群集将能够移动它.
您可以通过减少reducers [或每个节点使用的核心]的数量来解决这个问题,但这可能会对您的工作产生一些性能影响.
通常,如果群集中的节点具有C分配的核心,并且您使用X reducer运行作业,则Spark将并行打开C*X文件并开始编写.随机合并将有助于减少创建的文件总数,但随时打开的文件句柄数不会改变,因此无法解决ulimit问题.
-Patrick Wendell
Dav*_*vid 12
默认的ulimit是1024,对于大型应用程序来说这是非常低的.HBase推荐高达64K; 现代linux系统似乎没有这么多打开文件的麻烦.
使用
ulimit -a
Run Code Online (Sandbox Code Playgroud)
查看当前打开文件的最大数量
ulimit -n
Run Code Online (Sandbox Code Playgroud)
可以暂时改变打开文件的数量; 您需要更新系统配置文件和每用户限制才能使其永久化.在RedHat系统上,可以找到
/etc/sysctl.conf
/etc/security/limits.conf
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19179 次 |
| 最近记录: |