hadoop第三坑

来源:互联网 发布:数控旋压机编程 编辑:程序博客网 时间:2024/05/17 09:00

看书的进度比我预计的要慢一些。坑太多,需要慢慢爬。
依旧是MaxTemperature的联系。添加了一些测试MRUnit的测试之类的。
遇到的问题如下:
1 MRUnit的依赖添加不进来。
在dependency导入是,1.1.0以及1.0.0版本均有问题。然后我换到0.8.0-incubating版本忽然就好了。由于还没有去看源码,所以没有办法确认是什么版本差异导致了这个原因。

2 遇到如下报错:
Exception in thread “main” java.lang.VerifyError: Bad type on operand stack
Exception Details:
Location:
org/apache/hadoop/mapred/JobTrackerInstrumentation.create(Lorg/apache/hadoop/mapred/JobTracker;Lorg/apache/hadoop/mapred/JobConf;)Lorg/apache/hadoop/mapred/JobTrackerInstrumentation; @5: invokestatic
Reason:
Type ‘org/apache/hadoop/metrics2/lib/DefaultMetricsSystem’ (current frame, stack[2]) is not assignable to ‘org/apache/hadoop/metrics2/MetricsSystem’
Current Frame:
bci: @5
flags: { }
locals: { ‘org/apache/hadoop/mapred/JobTracker’, ‘org/apache/hadoop/mapred/JobConf’ }
stack: { ‘org/apache/hadoop/mapred/JobTracker’, ‘org/apache/hadoop/mapred/JobConf’, ‘org/apache/hadoop/metrics2/lib/DefaultMetricsSystem’ }
Bytecode:
0000000: 2a2b b200 03b8 0004 b0
这个问题比较难找,stackOverFlow上有相同的报错,当事的答主是由于jar包冲突导致,移除多余不要的包就好了。然而我的项目是maven项目,所以不可能是由于导入多余jar包导致的。但其实报错中也说的很清楚了,DefaultMetricsSystem不能被分配为MetricsSystem。当时猜测是由于hadoop版本导致的,实验了一下,确实是这样,我使用的是3.0.0-alpha的版本,降至2.2-2.6的版本就好了。
当然还碰到一些其他的坑。比如reduce方法没有重写成功之类的,大多由于眼瞎导致。
有一些要注意的问题:大胆尝试。感觉自己在hadoop这里还是有些太过于谨慎。

0 0
原创粉丝点击