Hunk/Hadoop: 性能最佳实践
文 | Jonathan Allen
翻译 | 李建盛
无论有没有使用Hunk,当运行Hadoop时,有很多种方式导致偶尔的性能底下。多数时候人们是增加更多的硬件来解决问题,但是有时候只需要简单更改下文件的名称就可以解决问题。
运行Map-Reduce任务[Hunk]
Hunk运行在Hadoop之上,但是这并不意味着一定做到有效的使用。如果Hunk运行在“复杂模式”,而不是“智能模式”的话,它就没有真正的用到Map-Reduce。相反它会直接将所有的Hadoop数据拉到Splunk引擎,并在那里处理它。
HDFS存储[hadoop]
在Hadoop的很多事项和Hunk有关联时如何部署文件?你需要在文件路径中包含时间戳,Hunk可以使用目录结构来当作一个过滤器,可以极大的减少被拉到Splunk的数据量。
在文件名称中包含时间戳也可以生效,但是效果较差,因为Hunk仍然会读取所有的文件名。
为了更好的性能,你可以在文件路径中包含一个健-值对。例如 “…/2015/3/2/app=webserver/…”。在遍历目录时查询指令会将包含键-值对的过滤掉,再次减少了被拉到Splunk的数据量。
基于时间戳的VIX/indexs.conf[hunk]
当文件存储模式对于任何的Hadoop Map-Reduce有利时,你就需要修改indexs.conf,以让Hunk可以识别目录结构。
文件格式[Hunk]
诸如JSON和CSV这样的自我描述的文件,对于Hunk来说是很容易读取的,它们更加的详细,且消除了代价昂贵的映射操作。
压缩类型/文件大小 [Hdaoop]
要避免过大的文件,例如500MB的GZ压缩且没有分片的文件。(诸如LZO压缩的分片文件也是可以接受的。)对于没有分片的文件来说,在core和文件之间是一对一的映射关系,这就意味着只能有一个core来处理大文件,而其它定core只能空转等待。也就是说处理没有分片的文件花费了大量的时间,那么Map-Reduce的任务就无法快速的处理。
同样,你也应该避免使用大量的大小在几十KB到几百KB之间的碎文件。如果文件太小,你会在启动和管理任务花费大量的时间,而不是真正的用在处理数据本身之上。
报告加速[hunk]
Hunk现在可以利用Splunk的报告加速功能了,这会在HDFS中缓存搜索的结果,减少或消除了需要从主的Hadoop集群中读取数据量。
在你启用此功能之前,请确保你的Hadoop集群拥有足够的空间来存储缓存。
硬件[Hadoop]
确保你拥有合适的硬件。虽然Hadoop是能够运行在甚至是双核的笔记本电脑中,但是你要真正使用它,还是需要每个节点拥有至少4颗4个核的CPU,为了能够确保拥有足够的暂存空间,你须配置至少12GB的内存,两块本地磁盘(10K或固态)
搜索Head Clustering[Hunk]
搜索Head Clustering在Splunk6.2中是相对较新的一个特性,在Splunk6.3中,对于基于Hunk的查询将是一个可行的属性。
来自InfoQ