ITPub博客

首页 > 大数据 > Hadoop > hadoop linux inode 相关

hadoop linux inode 相关

原创 Hadoop 作者:破棉袄 时间:2016-09-19 14:28:23 0 删除 编辑


起因:

近期spark集群执行任务时有stage抛出异常:

java.io.IOException: Failed to create local dir in /mnt/yarn/local/usercache/spark/appcache/application_1472468166282_1672/blockmgr-8e4ecd91-0dca-497a-8b6e-16bcdb89a4b2/31.

at org.apache.spark.storage.DiskBlockManager.getFile(DiskBlockManager.scala:73)

at org.apache.spark.storage.DiskBlockManager.getFile(DiskBlockManager.scala:83)

at org.apache.spark.shuffle.IndexShuffleBlockResolver.getDataFile(IndexShuffleBlockResolver.scala:53)

at org.apache.spark.shuffle.sort.SortShuffleWriter.write(SortShuffleWriter.scala:69)

at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:73)

at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41)

at org.apache.spark.scheduler.Task.run(Task.scala:89)

at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:227)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

at java.lang.Thread.run(Thread.java:744)


过程:

集群节点硬盘并未占满,但是发现系统inode IUse%达到了100。

删掉一些数据文件后问题得到解决


总结:

创建集群系统时要考虑集群存储的文件类型,hdfs每个块对应系统一个文件。

如果hdfs存储大文件则应该考虑设大系统block大小,使用较大的块会得到更好的性能。

如果hdfs存储小文件则应该考虑设小系统block大小,使用较大的块会造成大量空间浪费,可能还会出现磁盘利用率很低但无法创建文件的现象

补充:
一、block相关:

1、磁盘读取按照block为单位。

2、一个文件可能占用多个block,每读取一个block就会消耗一次磁盘I/O。

3、设大block大小会使大文件block数量减少从而减少磁盘I/O。

4、block并非越大越好,如果文件内容小于block,那剩余空间就会浪费掉

二、inode相关:

1、inode一般默认大小为123字节或256字节

2、假定block大小设为1M,硬盘空间为2T,inodes总量指定方案:

    2 * 1024 * 1024 = 2097152M

    2097152M / 1M = 2097152(理论磁盘最多存储该数据个文件)

    2097152 * 128 / 1024 /1024 = 256(如果inode大小为128字节,则inodes会占用256M磁盘空间)

3、inodes总量受block大小影响


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29754888/viewspace-2125149/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-07-16

  • 博文量
    180
  • 访问量
    1111050