代码之家  ›  专栏  ›  技术社区  ›  Cosmin Ioniță

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

  •  1
  • Cosmin Ioniță  · 技术社区  · 7 年前

    我想高效地搜索大量日志(大约1 TB大小,放置在多台机器上)。

    为此,我想构建一个由Flume、Hadoop和Solr组成的基础设施。Flume将从几台机器上获取日志,并将其放入HDFS中。

    现在,我希望能够使用map reduce作业索引这些日志,以便能够使用Solr搜索它们。我发现了 MapReduceIndexerTool 这是为我做的,但我发现它需要 变形线

    我知道,通常情况下,morphline会对所需的数据执行一组操作,但是如果我想使用MapReduceIndexerTool,我应该执行什么样的操作呢?

    我找不到任何适用于此地图缩减作业的变形线上的示例。

    恭敬地谢谢你。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Gyanendra Dwivedi    7 年前

    Cloudera有一个 guide 下面给出了几乎相似的用例 morphline

    enter image description here

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

    enter image description here

        2
  •  1
  •   arghtype Castaldi    6 年前

    通常,在morplhine中,您只需读取数据,将其转换为solr文档,然后调用 loadSolr 创建索引。

    例如,这是我与MapReduceIndexerTools一起使用的moprhline文件,用于将Avro数据上载到Solr中:

    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字段映射到solr文档字段,删除所有其他字段,并使用提供的solr连接详细信息创建索引。它基于 this tutorial

    这是我用来索引文件并将其合并到正在运行的集合的命令:

    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一起使用,并且应该存在集合。

    所有这些设置都适用于CDH 5.7 Hadoop上的Solr 4.10。

    推荐文章