The dark side of Hadoop - BackType Technology
http://web.archive.org/web/20110510125644/http://tech.backtype.com/the-dark-side-of-hadoop
update@201509: 链接已经失效
谈到了一些在使用hadoop出现的一些问题,而这些问题是hadoop本身的。
- Critical configuration poorly documented 一些关键的参数和配置并没有很好地说明清楚。
- Terrible with memory usage 内存使用上面存在问题。hadoop里面有一些非常sloppy的实现,比如chmod以及ln -s等操作,并没有调用fs API而是直接创建一个shell进程来完成。因为fork出一个shell进程需要申请同样大小的内存(虽然实现上是COW),但是这样造成jvm出现oom。解决的办法是开辟一定空间的swap The solution to these memory problems is to allocate a healthy amount of swap space for each machine to protect you from these memory glitches. We couldn't believe how much more stable everything became when we added swap space to our worker machines.
- Thomas Jungblut's Blog: Dealing with "OutOfMemoryError" in Hadoop http://codingwiththomas.blogspot.jp/2011/07/dealing-with-outofmemoryerror-in-hadoop.html 作者给出的解决办法就是修改hadoop的代码,通过调用Java API而不是使用ProcessBuilder来解决。
- #note: 出现OOM的话必须区分JVM还是Linux System本身的OOM。JVM出现OOM是抛出异常,而Linux出现OOM是会触发OOM killer
- Zombies hadoop集群出现一些zombie进程,而这些进程会一直持有内存直到大量zombie进程存在最后需要重启。造成这些zombie进程的原因通常是因为jvm oom(增加了swap之后就没有出现这个问题了),但是奇怪的是tasktracker作为这些process的parent,并不负责cleanup这些zombie进程而是依赖这些zombie进程的自己退出,这就是hadoop设计方面的问题。
Making Hadoop easy to deploy, use, and operate should be the #1 priority for the developers of Hadoop.