mapreduceindexertool的变形线应该是什么样子?

ilmyapht  于 2021-06-01  发布在  Hadoop
关注(0)|答案(2)|浏览(728)

我想高效地搜索大量日志(大约1 tb大小,放在多台机器上)。
为此,我想构建一个由flume、hadoop和solr组成的基础设施。flume将从几台机器上获取日志,并将它们放入hdfs中。
现在,我希望能够使用map reduce作业索引这些日志,以便能够使用solr搜索它们。我发现mapreduceindexertool为我做了这个,但是我发现它需要一条变形线。
我知道morphline通常会对它需要的数据执行一组操作,但是如果我想使用mapreduceindexertool,我应该执行什么样的操作呢?
我在变形线上找不到任何适合这张Map的例子。
恭敬地谢谢你。

kninwzqo

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正在作为其操作的一部分运行,如下图所示:

pkmbmrz7

pkmbmrz72#

一般来说,在Morpline中,您只需读取数据,将其转换为solr文档,然后调用 loadSolr 创建索引。
例如,这是我与mapreduceindexertools一起用于将avro数据上载到solr的moprhline文件:

SOLR_LOCATOR : {
  collection : collection1
  zkHost : "127.0.0.1:2181/solr"
}
morphlines : [
  {
    id : morphline1
    importCommands : ["org.kitesdk.**"]    
    commands : [
      {
        readAvroContainer {}
      }    
      {
        extractAvroPaths {
          flatten : false
          paths : {
            id : /id
            field1_s : /field1
            field2_s : /field2
          }
        }
      }
      {
        sanitizeUnknownSolrFields {
          solrLocator : ${SOLR_LOCATOR}
        }
      }
      {
        loadSolr {
          solrLocator : ${SOLR_LOCATOR}
        }
      }
    ]
  }
]

运行时,它读取avro容器,将avro字段Map到solr文档字段,删除所有其他字段,并使用提供的solr连接详细信息创建索引。它基于本教程。
这是我用来索引文件并将它们合并到运行集合的命令:

sudo -u hdfs hadoop --config /etc/hadoop/conf \
jar /usr/lib/solr/contrib/mr/search-mr-job.jar org.apache.solr.hadoop.MapReduceIndexerTool \
--morphline-file /local/path/morphlines_file  \
--output-dir hdfs://localhost/mrit/out \
--zk-host localhost:2181/solr \
--collection collection1 \ 
--go-live \
hdfs:/mrit/in/my-avro-file.avro

solr应该配置为与hdfs一起工作,并且应该存在集合。
所有这些设置都适用于CDH5.7Hadoop上的Solr4.10。

相关问题