hadoop的user多半是因为它的High availability和scalability能,而投向它的怀抱(当然,免钱也是个大家"心照不宣"的重要因素)。
不过,一家公司究竟该有几隻大象服务才够?多久该再买一隻大象?身为"象奴",要怎么"说服"主管你还需要更多的大象,其实是个很难的议题。基本上,如果知道目前hadoop cluster运作的相关数据,不仅可以用来规划未来的採购计画,对目前job的执行效能、排程等等也都很有帮助。今天在网路上看到一份资料,介绍了许多hadoop cluster的管理工具,很多甚至还没有听说过(愧!)。文中提到的管理工具,大致可以分为如下几类:
1. NameNode的GC分析:
开启NameNode的GC logging
使用GC Viewer之类工具来观察
分析记忆体的使用pattern、GC造成的暂停、或设定问题
2. HDFS的分析:
HDFS的FsImage档:binary形式的metadata,包含档案+目录的资讯。
转换成text format,然后可以分析资料量和档案的成长情况,每个user/group的使用情况,不适合MapReduce的小档案等等。
3. HDFS的进阶分析:
硬碟的成长与档案的"除役":利用FsImage的修改时间和存取时间来统计档案的使用情况和频率
replication factor的调整:经常存取的档案/目录可以设定较高的replication factor,已经落入"冷宫"的资料则可以降低复製的份数。
做法:log所有送到NameNode的存取请求(TAB分割的栏位),使用pig或MR来分析。
4. Job的分析:
对重复执行的job来说,可以利用歷史执行资料的统计值来调整input split、reducer数目、memory size、combiner等configuration,以改善执行校能
利用Replephant或twitter的hRaven之类的工具来协助分析执行情况
利用Jmxtrans来观察Java process的resource使用情况
利用Linked的White elephant来观察hadoop的资源使用情况
看来,可以玩的东西还很多呢~