我正在由多台机器,其大小是不知道的集群上我的Hadoop作业(主内存,核心数量,规模等。每一台机器)。 不使用任何操作系统特定的库(* .so文件我的意思),没有任何类或工具本身的Hadoop或在那里我可以收集喜欢当正在执行Hadoop的MR作业的信息一些其他的库:
- 由作业使用的核心的核心总数/数
- 总可用主内存/分配的可用主内存
- 每个机器/分配的存储空间,总存储空间 4。
我没有硬件信息,或者这就是我为什么要收集这类信息编程在我的Hadoop代码集群的规格。
我怎样才能做到这一点? 我想知道这种因为不同的原因的信息。 原因之一是由下面的错误给出:我想知道哪些机器跑出空位。
12/07/17 14:28:25 INFO mapred.JobClient: Task Id : attempt_201205221754_0208_m_001087_0, Status : FAILED
org.apache.hadoop.util.DiskChecker$DiskErrorException: Could not find any valid local directory for output/spill2.out
at org.apache.hadoop.fs.LocalDirAllocator$AllocatorPerContext.getLocalPathForWrite(LocalDirAllocator.java:376)
at org.apache.hadoop.fs.LocalDirAllocator.getLocalPathForWrite(LocalDirAllocator.java:146)
at org.apache.hadoop.fs.LocalDirAllocator.getLocalPathForWrite(LocalDirAllocator.java:127)
at org.apache.hadoop.mapred.MapOutputFile.getSpillFileForWrite(MapOutputFile.java:121)
at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.sortAndSpill(MapTask.java:1247)
at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.flush(MapTask.java:1155)
at org.apache.hadoop.mapred.MapTask$NewOutputCollector.close(MapTask.java:582)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:649)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:323)
at org.apache.hadoop.mapred.Child$4.run(Child.java:270)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.