Benutzer-Werkzeuge

Webseiten-Werkzeuge


nosql:flume_erste_schritte

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
nosql:flume_erste_schritte [2014/09/13 16:20] – [Quellen] gpipperrnosql:flume_erste_schritte [2014/09/13 16:40] – [Apache Flume im Überblick] gpipperr
Zeile 1: Zeile 1:
-==== Apache Flume im Überblick ==== 
  
-Mit Apache Flume können Log Events eingesammelt und zentral auf dem HDFS abgelegt werden.  
- 
- 
-  * Eine Art „syslog“ Demon  
-  * Übernimmt den Transport der Log Daten  
-  * Eine "Source" ließt die Quelle ein 
-  * Ein "Channel" puffert zwischen 
-  * Ein "Shink"   liefert die Daten ab / schreibt die Daten z.B. auf das HDFS 
- 
- 
-Übersicht: 
- 
-{{ :hadoop:apache_flume_v01.png?400 | Apache Flume Architektur}} 
- 
- 
- 
-==== Installation unter Linux auf einer Datenbank Umgebung ==== 
- 
-Da die Logs der Datenbanken auf dem Host sollen eingesammelt werden sollen, wird auf dem Host Flume installiert. 
-Weitere Libraries sind nicht notwendig. 
- 
-Download der Software : http://flume.apache.org/download.html und prüfen der md5 Summe: 
-<code bash> 
- 
-http://ftp-stud.hs-esslingen.de/pub/Mirrors/ftp.apache.org/dist/flume/1.5.0.1/apache-flume-1.5.0.1-bin.tar.gz  
- 
-md5sum apache-flume-1.5.0.1-bin.tar.gz 
-fa43105db822ce045f885a5ebc0f869e  apache-flume-1.5.0.1-bin.tar.gz 
- 
-tar xfvz apache-flume-1.5.0.1-bin.tar.gz 
- 
-mv apache-flume-1.5.0.1-bin /usr/lib/apache-flume-1.5.0.1-bin 
- 
-ln -s /usr/lib/apache-flume-1.5.0.1-bin  /usr/lib/flume-ng 
- 
-cd /usr/lib/flume-ng/bin 
- 
-# Testen ob flume sich starten läßt 
-./flume-ng version 
-Flume 1.5.0.1 
- 
- 
-#Prüfen ob auch ein "echtes" Java 7 ist installiert! 
- 
-java -version 
- 
-java version "1.7.0_67" 
- 
-#falls nicht installieren und mit alternatives bekannt geben! 
- 
-</code> 
- 
-==== Aufgabe - Lesen des Listener Logs einer Oracle 11g Datenbank==== 
- 
- 
-=== Architektur === 
- 
-==Struktur der XML Log Datei im DIAG Verzeichnis== 
- 
-zum Beispiel dieser typische Eintrag unter $ORACLE_BASE/diag/tnslsnr/<your-server>/listener/alert/log.xml: 
-<code xml> 
-<msg time='2014-09-06T11:21:44.179+02:00' org_id='oracle' comp_id='tnslsnr' 
- type='UNKNOWN' level='16' host_id='JUPITER' 
- host_addr='127.0.0.1'> 
- <txt>06-SEP-2014 11:21:44 * (CONNECT_DATA=(SID=GPI)(CID=(PROGRAM=null)(HOST=__jdbc__)(USER=null))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.10.10.1)(PORT=49831)) * establish * GPI * 0 
- </txt> 
-</msg> 
-</code> 
- 
-Da im Listener.log auch viele interne Vorgänge der Datenbanken, speziell im Cluster Umfeld, protokolliert werden, sollen bereits beim Lesen bestimmte Events ausgefiltert werden. Dazu muss dann später eine eigene "Source" definiert werden. 
- 
-Wir lesen die Logs direkt auf dem Oracle Server aus und schreiben die  Einträge in den Logs über eine eigenen Agent auf dem HDFS Node 1 in das HDFS. 
- 
-Übersicht: 
- 
-{{ :hadoop:read_listener_log_oracle_flume_v01.png?500 | Auslesen Oracle Listener Log mit Apache Fume}} 
- 
- 
-== Vorraussetzung == 
- 
-Flume ist installiert, Verzeichnis für die Konfiguration ist bekannt. 
- 
-<code bash> 
- 
-/usr/lib/flume-ng/bin/flume-ng version 
- 
-ls - /usr/lib/flume-ng/conf 
- 
-</code> 
- 
- 
-===Test 1  - Nur das Log auslesen und 1zu1 in das HDFS übertragen === 
- 
-Im ersten Test werden die Log Daten einfach in das HDFS geschrieben, um die Grundarchitektur und Konfiguration besser zu verstehen und um die Umgebung zu testen. 
- 
-Die Daten werden auf dem Oracle Server gelesen und auf den HDFS übertragen, dort übernimmt ein weitere Agent die Daten und schreibt das in das HDFS. 
- 
- 
-==Auf dem HDFS Node 1 - der OracleBigData Lite== 
- 
-Es wird ein Agent angelegt der Daten im Avro Format serialisiert annimmt und auf dann einfach auf das HDFS schreibt. 
- 
-Dazu wird eine Konfiguration erstellt und der Agent gestartet: 
-<code bash> 
- 
-vi /etc/flume-ng/conf/agent2-conf.properties 
- 
-# The configuration file needs to define the sources, the channels and the sinks 
-# Sources, channels and sinks are defined per agent, in this case called agent2 
- 
-agent2.sources  = OraLogFiles 
-agent2.channels = memoryChannel 
-agent2.sinks    = hdfsSink 
- 
-# Channel type avro 
- 
-agent2.sources.OraLogFiles.type = avro 
-agent2.sources.OraLogFiles.bind = 10.10.10.12 
-agent2.sources.OraLogFiles.port = 44444 
- 
- 
-# The channel can be defined as follows 
- 
-agent2.sources.OraLogFiles.channels = memoryChannel 
- 
- 
-# Each sinks type must be defined 
-agent2.sinks.hdfsSink.type = hdfs 
-agent2.sinks.hdfsSink.hdfs.path = hdfs://bigdatalite.localdomain:8020/user/oracle/gpi 
-agent2.sinks.hdfsSink.hdfs.filePrefix = OraLogs- 
-agent2.sinks.hdfsSink.hdfs.rollCount = 1000 
-agent2.sinks.hdfsSink.hdfs.batchSize = 10 
- 
-#Specify the channel the sink should use 
-agent2.sinks.hdfsSink.channel = memoryChannel 
- 
-# Each channels type is defined 
-agent2.channels.memoryChannel.type = memory 
-agent2.channels.memoryChannel.capacity = 100 
- 
-# 
-# starten 
-# 
- 
-flume-ng agent -n agent2 -c conf -f /etc/flume-ng/conf/agent2-conf.properties 
- 
-</code> 
- 
- 
-==Auf dem Oracle Server== 
- 
-Eine einfache Agent Konfiguration für eine Data Source vom Type "exec" erstellen (mit dem Typ **exec** wird ein OS Kommando als Datenquelle angegeben) und als Sink den Agent auf dem Hadoop Node angeben: 
- 
-<code bash> 
- 
-# Testen ob der Sink auf dem HDFS Node überhaupt erreichbar ist 
- 
-telnet bigdatalite.localdomain 44444 
- 
-Trying 10.10.10.12... 
-Connected to bigdatalite.localdomain. 
-Escape character is '^]'. 
- 
-#OK! 
- 
- 
-#Konfiguration anlegen 
- 
-vi /usr/lib/flume-ng/conf/agent-conf.properties 
- 
-# The configuration file needs to define the sources, the channels and the sinks 
-# Sources, channels and sinks are defined per agent, in this case called agent2 
- 
-agent.sources  = OraListener 
-agent.channels = memoryChannel 
-agent.sinks    = avro-forward 
- 
-# For each one of the sources, the type is defined 
- 
-# in this example we use a command from the os 
-# Channel type exec 
- 
-agent.sources.OraListener.type = exec 
-agent.sources.OraListener.command = tail -F /opt/oracle/diag/tnslsnr/oradb12c01/listener/alert/log.xml 
- 
-# The channel can be defined as follows 
-agent.sources.OraListener.channels = memoryChannel 
- 
-#sink 
-agent.sinks.avro-forward.type = avro 
-agent.sinks.avro-forward.hostname = 10.10.10.12 
-agent.sinks.avro-forward.port = 44444 
- 
-#Specify the channel the sink should use 
-agent.sinks.avro-forward.channel = memoryChannel 
- 
-# Each channels type is defined 
-agent.channels.memoryChannel.type = memory 
-agent.channels.memoryChannel.capacity = 100 
- 
-# 
-# starten 
-# 
- 
-export JAVA_HOME=/usr/java/jdk1.7.0_67 
- 
-/usr/lib/flume-ng/bin/flume-ng agent -n agent -c /usr/lib/flume-ng/conf -f /usr/lib/flume-ng/conf/agent-conf.properties 
- 
-# einen Eintrag in das Listener Log erzeugen 
- 
-$ORACLE_HOME/bin/lsnrctl status 
- 
-</code> 
- 
-Auf dem HDFS Server: 
- 
-<code bash> 
-# 
-# Logs auf dem HDFS kontrollieren: 
-# 
- 
-hdfs dfs -ls /user/oracle/gpi/ 
- 
-hdfs dfs -cat /user/oracle/gpi/OraLogs-.1410615198350 
- 
-SEQ!org.apache.hadoop.io.LongWritable"org.apache.hadoop.io.BytesWritabl]dñ´AZ¤¯¨ QHo9eU </txtHo9eV</msg>Ho9eWK<msg time='2014-09-13T15:34:58.686+02:00' org_id='oracle' comp_id='tnslsnr'Ho9eW= type='UNKNOWN' level='16' host_id='oradb12c01.pipperr.local'Ho9eW host_addr='10.10.10.110'>Ho9eX= <txt>WARNING: Subscription for node down event still pendinHo9eX </txtHo9eX</msg>Ho9eXK" 
- 
-# Daten sind angekommen! 
- 
-</code> 
- 
- 
-=== Erweitertes Beispiel ==== 
- 
-Im nächsten Schritt wird das Log vom Flume Agent mit einer eigenen Filter Source gelesen und übertragen. 
- 
- 
- 
- 
-==== Quellen ==== 
- 
- 
-  * http://flume.apache.org 
-  *  
-Doku: 
-  * http://flume.apache.org/releases/content/1.5.0.1/FlumeUserGuide.html 
-  * http://flume.apache.org/FlumeUserGuide.html 
-  * https://blogs.apache.org/flume/entry/flume_ng_architecture 
- 
-Netz: 
-  * http://yourstory.com/2012/04/hive-for-retail-analysis/ 
-  * http://www.lopakalogic.com/articles/hadoop-articles/log-files-flume-hive/ 
-  * http://harish11g.blogspot.de/2012/05/retail-analysis-hive-flume-hadoop.html 
-  * http://www.implementhadoop.com/use-case-1-apache-log-analysis/ 
-  * http://www.vmware.com/files/pdf/products/vsphere/VMware-vSphere-Data-Ingestion-Solution-Guide.pdf  
-  * http://www.rittmanmead.com/2014/05/trickle-feeding-webserver-log-files-to-hdfs-using-apache-flume/ 
-  * http://sanjivblogs.blogspot.de/2011/04/quick-flume-installation-and.html 
- 
- 
-Vorträge: 
-  * http://archive.apachecon.com/na2013/presentations/27-Wednesday/Big_Data/11:45-Mastering_Sqoop_for_Data_Transfer_for_Big_Data-Arvind_Prabhakar/Arvind%20Prabhakar%20-%20Planning%20and%20Deploying%20Apache%20Flume.pdf 
- 
- 
-XML Stream: 
- 
-  * http://www.ibm.com/developerworks/opensource/library/bd-flumews/index.html 
nosql/flume_erste_schritte.txt · Zuletzt geändert: 2014/11/16 16:26 von gpipperr