我在包含多个不知道机器大小(主内存,内核数量,大小等)的集群上运行我的hadoop作业。不使用任何操作系统特定的库(* .so文件我的意思),是有其本身或一些其他的库的任何类或工具Hadoop的,我可以收集喜欢当正在执行Hadoop的MR作业的信息:如何收集Hadoop集群大小/内核数量信息
- 核心总数/由作业
- 总可用主内存/分配的可用主内存采用的内核数量 每个机器/分配的存储空间
- 总存储空间 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.
您可以通过名称节点Web UI查看可用磁盘空间 - 单击Live节点链接 – 2012-07-17 13:54:42