Hunk: analýza surových dat do 60 minut
Hunk: analýza surových dat do 60 minut
Kamil Brzak, SCSR Project Manager at Trask solutions a.s.
1
Hunk: analýza surových dat do 60 minut
Obsah 0. – 20. minuta: Nastavení prostředí .............................................................................................................................. 3 20. – 40. minuta: Konfigurace Hunk s využitím UI ......................................................................................................... 3 20. – 40. minuta: Konfigurace Hunk pomocí konfiguračních souborů ......................................................................... 9 Krok 1 ........................................................................................................................................................................... 9 Krok 2 .........................................................................................................................................................................10 Krok 3 .........................................................................................................................................................................11 49. – 50. minuta: Analyzujte data z Hadoopu ..............................................................................................................11 59. – in infinitum: Hunkujte ..........................................................................................................................................12
Originál článku: „Hunk: Raw data to analytics in < 60 minutes“, Ledion Bitincka 8.11.2013 2
Hunk: analýza surových dat do 60 minut
0. – 20. minuta: Nastavení prostředí Příprava prostředí vyžaduje instalaci následujících komponent: 1. 2. 3.
Instalační balíček Hunk – je ke stažení jako 60-denní zkušební verze na tomto místě, Java – alespoň ve verzi 1.6 a vyšší (případně verze odpovídající potřebám klientských knihoven Hadoop), Klientské knihovny Hadoop – lze je získat od dodavatele Hadoopu, v případě distribuce Apache jsou ke stažení právě zde.
Instalace Hunku probíhá velmi jednoduše: #1. untar the package > tar -xvf splunk-6.0-
-Linux-x86_64.tgz #2. start Splunk > ./splunk/bin/splunk start
Je potřeba dodržet postup dle instalačních průvodců pro Javu a klientských knihoven Hadoop. Ujistěte se jen, že jsou vytvořené JAVA_HOME a HADOOP_HOME, jelikož s nimi budeme dále pracovat.
20. – 40. minuta: Konfigurace Hunk s využitím UI Hunk je možno konfigurovat buď prostřednictvím grafického rozhraní (UI) v sekci Settings > Virtual Indexes, anebo editací konfiguračních souborů, indexes.conf. Protože jde o popis dvou metod, vyskytují se kapitoly, popisující 20. – 40. minutu v textu dvakrát, jednou pro každou metodu. 1.
Přihlašte se do Hunku (výchozí username: admin, password: changeme)
3
Hunk: analýza surových dat do 60 minut
2.
Přejděte do Settings > Virtual Indexes
3.
Vytvořte připojení pro zobrazování výsledků z externího zdroje (ERP – External Resource Provider) kliknutím na zelené tlačítko New provider
4
Hunk: analýza surových dat do 60 minut
4.
Zadejte informace o prostředí jako je: domovský adresář Java, domovský adresář Hadoop, informace o clusteru jako je verze Hadoopu, host a port JobTrackeru, výchozí souborový systém apod.
5
Hunk: analýza surových dat do 60 minut
5.
Po uložení ERP můžete přikročit k tvorbě virtuálních indexů pro tento konkrétní ERP. Jednoduše překliknete ze záložky Providers (1) na záložku Virtual Indexes (0)
6
Hunk: analýza surových dat do 60 minut
6.
Hlavním konfiguračním požadavkem virtuálních indexů je cesta k datům, která mají reprezentovat virtuální indexy. Můžete využít volitelně whitelist regex, který přiřadí pouze ty soubory, které mají být součástí indexu. A dále pokud jsou data rozdělena podle času, můžete rovněž Hunku říci, jak je tohle časové dělení implementováno (time/date partitioning je popsán níže)
7
Hunk: analýza surových dat do 60 minut
7.
Po uložení virtuálních indexů můžete okamžitě začít s prozkoumáváním jejich obsahu kliknutím na odkaz Search
Následující sekci můžete přeskočit, pokud se nechcete zabývat konfigurací Hunku prostřednictvím konfiguračních souborů.
8
Hunk: analýza surových dat do 60 minut
20. – 40. minuta: Konfigurace Hunk pomocí konfiguračních souborů V této sekci je popsán postup konfigurace Hunku editací konfiguračních souborů. Soubor, který bude editován je následující: $SPLUNK_HOME/etc/system/local/indexes.conf
Krok 1 Nejprve musíme říci Hunku o Hadoop clusteru, kde leží data a jak s nimi komunikovat – v terminologii Hunku jde o ERP (External Resource Provider). Následující stanza ukazuje příklad takové definice ERP v Hunku. [provider:hadoop-dev01] # this exact setting is required vix.family = hadoop # location of the Hadoop client libraries and Java vix.env.HADOOP_HOME = /opt/hadoop/hadoop-dev01 vix.env.JAVA_HOME = /opt/java/latest/ # job tracker and default file system vix.fs.default.name = hdfs://hadoop-dev01nn.splunk.com:8020 vix.mapred.job.tracker = hadoop-dev01-jt.splunk.com:8021 # uncomment this line if you're running Hadoop 2.0 with MRv1 #vix.command.arg.3 = $SPLUNK_HOME/bin/jars/SplunkMRs6.0-h2.0.jar vix.splunk.home.hdfs = /home/ledion/hunk vix.splunk.setup.package = /opt/splunkbeta-6.0-171187Linux-x86_64.tgz
Většina z výše uvedených konfigurací je jednoduše vysvětlitelná, přesto se zastavme u některých řádků: [stanza name] Musí začínat „provider:“, aby Hunk poznal, že se jedná o ERP. Zbytek řetězce je pojmenování poskytovatele. vix.splunk.home.hdfs Cesta v HDFS (nebo v čemkoliv co je výchozím souborovým systémem), kterou využívá Hunk jako umístění pracovního adresáře (scratch space). vix.splunk.setup.package Cesta v Hunk serveru, kde může Hunk nalézt balíček Linux x64_64, který bude vyexpedován a používán na TaskTrackerech/Datových uzlech.
9
Hunk: analýza surových dat do 60 minut
Krok 2 Nyní je potřeba vydefinovat virtuální index, který obsahuje data, jež chceme analyzovat. V tomto případě je využito dat z Apache access logu. Ta jsou rozdělená podle času, uložená v HDFS v adresářové struktuře, která může vypada např. takto: /home/ledion/data/weblogs/20130628/access.log.gz /home/ledion/data/weblogs/20130627/access.log.gz /home/ledion/data/weblogs/20130626/access.log.gz ...
A teď lze nakonfigurovat virtuální index (opět v souboru indexes.conf), který bude obsahovat následující data: [hunk] # name of the provider stanza we defined above # without the "provider:" prefix vix.provider = hadoop-dev01 # path to data that this virtual index encapsulates vix.input.1.path = /home/ledion/data/weblogs/... vix.input.1.accept = /access\.log\.gz$ vix.input.1.ignore = ^$ # (optional) time range extraction from paths vix.input.1.et.regex = /home/ledion/data/weblogs/(\d+) vix.input.1.et.format = yyyyMMdd vix.input.1.et.offset = 0 vix.input.1.lt.regex = /home/ledion/data/weblogs/(\d+) vix.input.1.lt.format = yyyyMMdd vix.input.1.lt.offset = 86400
V souboru se nachází mnoho míst, která je dobré blíže vysvětlit: vix.input1.path Odkazuje na adresář ve výchozím souborovém systému (např. HDFS) poskytovatele. Tam se nalézají data virtuálního indexu. POZN.: „...“ na konci cesty znamená, že Hunk rekurzivně přidá i obsah všech podadresářů. vix.input.1.accept a vix.input.1.ignore Umožňují specifikovat regulární výraz, který filtruje vstupní a výstupní soubory (na základě plné cesty), jež mají nebo nemají být vnímané jako součást tohoto virtuálního indexu. Je potřeba podotknout že ignore má vyšší prioritu, než accept. Obecným příkladem, kdy využít ignore, je např. u dočasných souborů nebo u souborů, do kterých je právě zapisováno. .et a .lt prvky Je to koncept první třídy ze Splunku (Hunk je vlastně přizpůsobená aplikace Splunku nad Hadoopem). Data jsou organizovaná v adresářové struktuře a využívá se rozdělování na základě data. .et a .lt říkají Hunku v rámci jaké časové rozteče se vyhledávání v adresáři očekává. Vychází se z následující logiky: porovnává se regex vůči cestě, spojí se všechny zachycené skupiny, interpretují v daném formátu a nakonec se přidá nebo odebere počet sekund (offset) k výslednému času. Offset přijde vhod, pokud chcete rozšířit vyextrahovaný časový rámec – např. pokud 10
Hunk: analýza surových dat do 60 minut
několik minut daného dne končí v adresářích z předešlého nebo následujícího dne nebo dochází k rozdílům daným časovými pásmy umístěného Hadoop serveru oproti Hunk serveru. Celá rutina časové extrakce se provádí dvakrát za sebou, právě aby došlo k vymezení nejdřívějšího a nejpozdějšího času. Jakmile je časová extrakce nakonfigurovaná, Hunk může přeskočit nebo ignorovat adresáře a soubory, které nespadají do odpovídajícího časového rámce. V terminologii Hunku jde o průřez dělením na základě času (time based partition pruning).
Krok 3 Dále je potřeba Hunku sdělit, jak schematizovat data na základě časového vyhledávání. V tomto okamžiku vkládáme změny do klasické konfigurace Splunku. Kromě toho budeme editovat další soubor, ze kterého na sebe Hunk naváže schema. $SPLUNK_HOME/etc/system/local/props.conf
[source::/home/ledion/data/weblogs/...] priority = 100 sourcetype = access_combined
Tato stanza řekne Hunku, aby napojil sourcetype access_combined na všechna data v našem virtuálním indexu (např. všechna data v adresáři /home/crm_team/data/weblogs/). Sourcetype access_combined je vydefinován v $SPLUNK_HOME/etc/system/default/props.conf a říká, jak budou data z access logu zpracovávána (např. že každá událost je na samostatném řádku, kde najde časové razítko a jak vyextrahuje ta správná pole ze surové události).
49. – 50. minuta: Analyzujte data z Hadoopu Nyní jsme připraveni začít s průzkumem a analýzou dat. Jednoduše provádíme vyhledávání nad virtuálním indexem, jakoby to byl nativní index Splunku. Jako na následujícím příkladu. 1.
Prozkoumejte surová data
11
Hunk: analýza surových dat do 60 minut
2.
Zobrazte graf s pořadím stavových kódů v průběhu 30 dní s granularitou (bucketem) jednoho dne:
59. – in infinitum: Hunkujte
12