Загадочные ошибки с hadoop


Возможно мой совет вам пригодится. По-крайней мере мне он стоил полдня мучений. Ошибки детские, связанные с тем, что хочется всего и сразу.

Итак, поставился допустим кластер,
допустим он даже поднимает друзей на slave машинах
5087 Jps
4899 DataNode
4988 TaskTracker

И даже считает задачи, например пресловутый word_count!

Ставим hbase
и вот загадочно hbase - Hmaster погибает сразу после старта -
выдает неинформативную ошибку
при этом успевает наделать Peers на slave машинах

НО! Не создает HMaster
А без него - наша консоль в Hbase тусклая и не хочет отвечать даже на list

Читаем логи
2012-01-19 16:24:46,905 INFO org.apache.hadoop.hbase.ipc.HBaseRpcMetrics: Initializing RPC Metrics with hostName=HMaster, port=60000
2012-01-19 16:24:47,135 ERROR org.apache.hadoop.hbase.master.HMasterCommandLine: Failed to start master
java.lang.RuntimeException: Failed construction of Master: class org.apache.hadoop.hbase.master.HMaster
at org.apache.hadoop.hbase.master.HMaster.constructMaster(HMaster.java:1065)
at org.apache.hadoop.hbase.master.HMasterCommandLine.startMaster(HMasterCommandLine.java:142)
at org.apache.hadoop.hbase.master.HMasterCommandLine.run(HMasterCommandLine.java:102)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:76)
at org.apache.hadoop.hbase.master.HMaster.main(HMaster.java:1079)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.configuration.Configuration
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at org.apache.hadoop.metrics2.lib.DefaultMetricsSystem.(DefaultMetricsSystem.java:37)
at org.apache.hadoop.metrics2.lib.DefaultMetricsSystem.(DefaultMetricsSystem.java:34)
at org.apache.hadoop.security.UgiInstrumentation.create(UgiInstrumentation.java:51)
at org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java:209)
at org.apache.hadoop.security.UserGroupInformation.ensureInitialized(UserGroupInformation.java:177)
at org.apache.hadoop.security.UserGroupInformation.isSecurityEnabled(UserGroupInformation.java:229)
at org.apache.hadoop.security.KerberosName.(KerberosName.java:83)
at org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java:202)
at org.apache.hadoop.security.UserGroupInformation.ensureInitialized(UserGroupInformation.java:177)
at org.apache.hadoop.security.UserGroupInformation.isSecurityEnabled(UserGroupInformation.java:229)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.hbase.util.Methods.call(Methods.java:37)
at org.apache.hadoop.hbase.security.User.call(User.java:457)
at org.apache.hadoop.hbase.security.User.callStatic(User.java:447)
at org.apache.hadoop.hbase.security.User.access$200(User.java:49)
at org.apache.hadoop.hbase.security.User$SecureHadoopUser.isSecurityEnabled(User.java:435)
at org.apache.hadoop.hbase.security.User$SecureHadoopUser.login(User.java:406)
at org.apache.hadoop.hbase.security.User.login(User.java:146)
at org.apache.hadoop.hbase.master.HMaster.(HMaster.java:202)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.apache.hadoop.hbase.master.HMaster.constructMaster(HMaster.java:1060)
... 5 more

Жесть, я даже поглядел в исходник - от чего он не создает Hmaster???

Итак, оказывается дело не совсем в hbase (как мне пока кажется, стоит сказать что пока она только локально запущена, но поскольку видимо ошибка исправлена - она в два счета заработает в distribute mode как мне кажется)

Начинаем раскручивать, начинаем с hadoop
смотрим что же у нас стартовало ??

http://rodos:50070/dfshealth.jsp

(rodos - имя моей главной машины - у вас это будет свой мастер сервер)

и о боже! Видим что всего одна живая нода.

Но ведь на слейвах стартовали datanode? Где они!?

но поскольку я как обычно торопился, и не заглянул в логи Datanode на слейвах
2012-01-20 14:00:40,267 INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.0.51:54310. Already tried 6 time(s)

Я проморгал примерно такую строчку. (примерно - потому что я в итоге решил законфигурировать все на дефолтный hadoop порт)

Оказывается datanode стартует и терпеливо ждет пока же заработает голова.
Ха.

Починить просто, надо убрать из /etc/hosts
примерно из такого - slave1
127.0.0.1 localhost slave1

Чтобы получилось примерно так
127.0.0.1 localhost

192.168.0.52 slave1

Аналогично сделать на мастере. (соотвно там будет не slave1 а например master)

Ноды стартуют и размер кластера подрастает до двух живых нод.
Ура.

Остается это сделать на всех слейвах и заняться распределенной настройкой hbase


Комментарии

Популярные сообщения из этого блога

Be aware of "free" API when building any kind of your mash-up or start-up.

О работе с фрилансерами