我正在创建Hadoop MapReduce作业,并且正在对一个HBase表使用两次扫描来提供我的映射器。 HBase表具有10个区域。我创建了两个扫描仪,在它们上调用setAttribute(Scan.SCAN_ATTRIBUTES_TABLE_NAME,tableName),然后执行此操作:
job.setPartitionerClass(NaturalKeyPartitioner.class);
job.setGroupingComparatorClass(NaturalKeyGroupingComparator.class);
job.setSortComparatorClass(CompositeKeyComparator.class);
TableMapReduceUtil.initTableMapperJob(scans, FaultyRegisterReadMapper.class, MeterTimeKey.class, ReadValueTime.class, job);
由于某些原因,大多数情况下仅创建两个映射器。我希望有更多的映射器,但这并不是什么大不了的事情。
真正糟糕的是,SOMETIMES创建了三个映射器,当它创建时,前两个映射器完成得非常快,而第三个映射器甚至没有启动五分钟。正是这种映射器需要很长时间才能启动,这确实让我感到困扰。 :)
该群集位于具有约60个节点的群集上,并不繁忙。
我怀疑映射器的数量可能取决于表中找到的数据量,但我对此并不乐观。
主要问题:有什么想法为什么一个映射器需要这么长时间才能启动?
最佳答案
除了节点的硬件资源,我还将检查网络流量。您可能正在遭受网络饱和(接口(interface)错误,成帧错误等)的困扰。
之后,我将确保以下几点:
关于hadoop - 一个映射器有时无法启动,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23914522/