借助Apache Hadoop大规模扩展Apache Solr实时实时索引
播客的第22集是與Patrick Hunt的談話
我們討論了Apache Solr(上游)中的新工作,使它可以在Apache Hadoop上工作。 Solr支持將其索引和事務(wù)日志文件寫入和讀取到HDFS分布式文件系統(tǒng)。 這不使用Hadoop Map-Reduce處理Solr數(shù)據(jù),而是僅使用HDFS文件系統(tǒng)存儲索引和事務(wù)日志文件。 https://cwiki.apache.org/confluence/display/solr/Running+Solr+on+HDFS
我們還討論了Solr Cloud以及分片功能如何使Solr可以通過Hadoop集群進行擴展https://cwiki.apache.org/confluence/display/solr/SolrCloud 。
Apache Solr能夠設(shè)置結(jié)合了容錯能力和高可用性的Solr服務(wù)器集群。 這些功能稱為SolrCloud ,這些功能提供了分布式索引和搜索功能,支持以下功能:
- 整個集群的集中配置
- 自動負載平衡和查詢故障轉(zhuǎn)移
- ZooKeeper集成用于集群協(xié)調(diào)和配置。
SolrCloud是靈活的分布式搜索和索引,無需主節(jié)點即可分配節(jié)點,分片和副本。 相反,Solr使用ZooKeeper來管理這些位置,具體取決于配置文件和架構(gòu)。 可以將文檔發(fā)送到任何服務(wù)器,ZooKeeper會找出來。
Patrick向我介紹了Morphlines (適用于Hadoop的Cloudera開發(fā)工具包的一部分) http://cloudera.github.io/cdk/docs/current/cdk-morphlines/index.html
Cloudera Morphlines是一個開源框架,可減少構(gòu)建和更改Hadoop ETL流處理應(yīng)用程序所需的時間和技能,這些應(yīng)用程序可將數(shù)據(jù)提取,轉(zhuǎn)換并加載到Apache Solr,HBase,HDFS,企業(yè)數(shù)據(jù)倉庫或分析在線儀表板中。 是否想在不進行編程和不具備大量MapReduce技能的情況下構(gòu)建或促進ETL作業(yè)? 以最少的麻煩和支持費用完成工作? 這是入門方法。
morphline是一個豐富的配置文件,可以輕松定義一個轉(zhuǎn)換鏈,該轉(zhuǎn)換鏈可以使用來自任何類型數(shù)據(jù)源的任何類型的數(shù)據(jù),處理數(shù)據(jù)并將結(jié)果加載到Hadoop組件中。 它用簡單的配置步驟代替了Java編程,并相應(yīng)地減少了與開發(fā)和維護定制ETL項目相關(guān)的成本和集成工作。
Morphlines是一個庫,可嵌入任何Java代碼庫中。 morphline是轉(zhuǎn)換命令的內(nèi)存容器。 命令是用于執(zhí)行諸如加載,解析,轉(zhuǎn)換或以其他方式處理單個記錄之類的任務(wù)的morphline插件。 記錄是具有可選blob附件或POJO附件的名稱/值對的內(nèi)存中數(shù)據(jù)結(jié)構(gòu)。 該框架是可擴展的,并且以直接的方式集成了現(xiàn)有功能和第三方系統(tǒng)。
morphline命令是Cloudera Search的一部分。 Morphlines支持ETL數(shù)據(jù)從Flume和MapReduce以及HBase流入Apache Solr。 Flume涵蓋了實時情況,而MapReduce涵蓋了批處理情況。 自從推出Cloudera Search morphline開發(fā)以來,畢業(yè)于Cloudera Development Kit (CDK)的目的是使除Search之外的更多用戶和產(chǎn)品都可以使用該技術(shù)。 CDK是一組庫,工具,示例和文檔,旨在簡化在Hadoop生態(tài)系統(tǒng)之上構(gòu)建系統(tǒng)的過程。 CDK托管在GitHub上,并鼓勵社區(qū)參與。 例如,可以將變形線嵌入Crunch,HBase,Impala,Pig,Hive或Sqoop中。 讓我們知道您想去哪里!
Morphlines可以看作是Unix管道的演進,其中數(shù)據(jù)模型被通用化以與通用記錄流(包括任意二進制有效載荷)一起工作。 morphline是一種使用記錄(例如Flume事件,HDFS文件,RDBMS表或Avro對象),將它們轉(zhuǎn)換為記錄流并通過一系列易于配置的轉(zhuǎn)換將記錄流通過管道傳遞給用戶的一種有效方式。目標應(yīng)用程序(例如Solr),如下圖所示:
在此圖中,Flume Source接收系統(tǒng)日志事件并將其發(fā)送到Flume Morphline Sink,后者將每個Flume事件轉(zhuǎn)換為一條記錄,并將其通過管道傳遞給readLine命令。 readLine命令提取日志行并將其通過管道grok到grok命令。 grok命令使用正則表達式模式匹配來提取該行的某些子字符串。 它將生成的結(jié)構(gòu)化記錄通過管道loadSolr到loadSolr命令。 最后, loadSolr命令將記錄加載到Solr(通常為SolrCloud)中。 在此過程中,原始數(shù)據(jù)或半結(jié)構(gòu)化數(shù)據(jù)根據(jù)應(yīng)用程序建模要求轉(zhuǎn)換為結(jié)構(gòu)化數(shù)據(jù)。
Morphline框架附帶了一組常用的高級轉(zhuǎn)換和I / O命令,可以將它們組合為特定于應(yīng)用程序的方式。 插件系統(tǒng)允許添加新的轉(zhuǎn)換和I / O命令,并以簡單的方式集成現(xiàn)有功能和第三方系統(tǒng)。
這種集成可以實現(xiàn)快速的Hadoop ETL應(yīng)用程序原型制作,實時的復(fù)雜流和事件處理,靈活的日志文件分析,多種異構(gòu)輸入模式和文件格式的集成,以及在Hadoop ETL應(yīng)用程序之間重用ETL邏輯構(gòu)造塊。
CDK附帶了一個高效的運行時,該運行時可以動態(tài)編譯一個嗎啉。 運行時在同一線程中執(zhí)行給定嗎啉的所有命令。 將記錄從一個命令傳遞到另一個命令僅意味著廉價的Java方法調(diào)用。 特別是,沒有隊列,沒有線程之間的切換,沒有上下文切換,也沒有命令之間的序列化,這使性能開銷最小化。
變形線處理連續(xù)或任意大的記錄流。 命令將一條記錄轉(zhuǎn)換為零個或多個記錄。 數(shù)據(jù)模型可以描述如下:記錄是一組命名字段,其中每個字段都有一個或多個值的有序列表。 值可以是任何Java對象。 即,一條記錄本質(zhì)上是一個哈希表,其中每個哈希表條目都包含一個String鍵和一個Java Objects列表作為值。 請注意,一個字段可以具有多個值,并且任何兩個記錄都不必使用公共字段名。 這種靈活的數(shù)據(jù)模型完全符合Solr / Lucene數(shù)據(jù)模型的特征。
不僅結(jié)構(gòu)化數(shù)據(jù),而且二進制數(shù)據(jù)都可以傳遞到嗎啉并由其處理。 按照約定,一條記錄可以包含一個名為_attachment_body的可選字段,該字段可以是Java java.io.InputStream或Java byte []。 可選地,可以通過設(shè)置名為_attachment_mimetype(例如“ application / pdf”)和_attachment_charset(例如“ UTF-8”)和_attachment_name(例如“ cars.pdf”)的字段來更詳細地表征此類二進制輸入數(shù)據(jù),這有助于檢測和解析數(shù)據(jù)類型。 這類似于電子郵件的工作方式。
此通用數(shù)據(jù)模型對于支持廣泛的應(yīng)用程序很有用。 例如, Apache Flume Morphline Solr Sink嵌入了morphline庫并執(zhí)行了morphline,將水槽事件轉(zhuǎn)換為morphline記錄并將其加載到Solr中。 該接收器將Flume事件的主體填充到morphline記錄的_attachment_body字段中,并將Flume事件的標題復(fù)制到同名的記錄字段中。 作為另一個示例, MapReduceIndexerTool的Mappers將JavaXML java.io.InputStream引用當前處理的HDFS文件填充到morphline記錄的_attachment_body字段中。 MapReduceIndexerTool的Mappers還將有關(guān)HDFS文件的元數(shù)據(jù)填充到記錄字段中,例如文件的名稱,路徑,大小,上次修改時間等。這樣,嗎啉可以作用于從Flume和HDFS接收的所有數(shù)據(jù)。 作為另一個示例, Morphline Lily HBase索引器將HBase結(jié)果Java POJO填充到morphline記錄的_attachment_body字段中。 這樣,諸如extractHBaseCells類的extractHBaseCells命令就可以從HBase更新中提取數(shù)據(jù)并相應(yīng)地更新Solr索引。
我們還談到了許多有關(guān)Apache Zookeeper的信息,以及有關(guān)Zookeeper最初在Yahoo!上的歷史。 和帕特里克從那以后的經(jīng)歷。 要聽到帕特里克必須說的一切,請訂閱播客。
翻譯自: https://www.javacodegeeks.com/2014/05/apache-solr-real-time-live-index-updates-at-scale-with-apache-hadoop.html
總結(jié)
以上是生活随笔為你收集整理的借助Apache Hadoop大规模扩展Apache Solr实时实时索引的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10电脑工具菜单在哪(win10电
- 下一篇: 成本低适合一个女人做的生意(低成本适合女