我想高效地搜索大量日志(大约1 tb大小,放在多台机器上)。
为此,我想构建一个由flume、hadoop和solr组成的基础设施。flume将从几台机器上获取日志,并将它们放入hdfs中。
现在,我希望能够使用map reduce作业索引这些日志,以便能够使用solr搜索它们。我发现mapreduceindexertool为我做了这个,但是我发现它需要一条变形线。
我知道morphline通常会对它需要的数据执行一组操作,但是如果我想使用mapreduceindexertool,我应该执行什么样的操作呢?
我在变形线上找不到任何适合这张Map的例子。
恭敬地谢谢你。
2条答案
按热度按时间kninwzqo1#
cloudera有一个指南,在下面给出了几乎类似的用例
morphline
.在这个图中,flume源接收syslog事件并将它们发送到flume morphline接收器,后者将每个flume事件转换为一个记录,并将其通过管道传输到readline命令。readline命令提取日志行并将其导入grok命令。grok命令使用正则表达式模式匹配来提取行的一些子字符串。它将生成的结构化记录通过管道传输到loadsolr命令中。最后,loadsolr命令将记录加载到solr中,通常是solrcloud。在这个过程中,原始数据或半结构化数据会根据应用建模的要求转换成结构化数据。
示例中给出的用例是生产工具的样子
MapReduceIndexerTool
,Apache Flume Morphline Solr Sink
以及Apache Flume MorphlineInterceptor
和morphline lily hbase indexer正在作为其操作的一部分运行,如下图所示:pkmbmrz72#
一般来说,在Morpline中,您只需读取数据,将其转换为solr文档,然后调用
loadSolr
创建索引。例如,这是我与mapreduceindexertools一起用于将avro数据上载到solr的moprhline文件:
运行时,它读取avro容器,将avro字段Map到solr文档字段,删除所有其他字段,并使用提供的solr连接详细信息创建索引。它基于本教程。
这是我用来索引文件并将它们合并到运行集合的命令:
solr应该配置为与hdfs一起工作,并且应该存在集合。
所有这些设置都适用于CDH5.7Hadoop上的Solr4.10。