L'implementazione di analisi dei file di log su larga scala
Domanda
Qualcuno mi può indicare un riferimento o fornire una panoramica di alto livello di come le aziende come Facebook, Yahoo, Google, ecc al eseguono la grande scala (ad esempio gamma multi-TB) analisi dei log che lo fanno per le operazioni e soprattutto di analisi web ?
Concentrandosi sul web analytics, in particolare, sono interessati a due aspetti strettamente connessi:. Prestazioni delle query e la memorizzazione dei dati
So che l'approccio generale è quello di utilizzare carta di ridurre per distribuire ogni query su un cluster (ad esempio utilizzando Hadoop). Tuttavia, ciò che è il formato di archiviazione più efficiente da usare? Si tratta di dati di registro, in modo che possiamo assumere ogni evento ha un timbro di tempo, e che, in generale, i dati sono strutturati e non sparse. La maggior parte delle domande di web analytics coinvolgono l'analisi fette di dati tra due timestamp arbitrarie e il recupero di statistiche aggregate o anomalie nei dati stessi.
Sarebbe un DB di colonna-oriented come Big Table (o HBase) essere un modo efficace per memorizzare, e ancora più importante, interrogare tali dati? Il fatto che si sta selezionando un sottoinsieme di righe (in base alla data e ora) lavorare contro la premessa di base di questo tipo di stoccaggio? Sarebbe meglio per memorizzare i dati non strutturati, ad es. un indice di inversione?
Soluzione
Purtroppo non esiste una taglia unica risposta.
Attualmente sto usando Cascading, Hadoop, S3, e Aster dati per elaborare 100 di concerti al giorno attraverso una conduttura messa in scena all'interno di AWS.
Aster dati viene utilizzato per le query e reporting in quanto fornisce un'interfaccia SQL per le enormi set di dati puliti e analizzato da Cascading processi su Hadoop. Utilizzando le interfacce JDBC Cascading, loading Aster dati è un processo piuttosto banale.
Tenete a mente come strumenti HBase e Hypertable sono negozi chiave / valore, in modo da non fanno query ad-hoc e si unisce senza l'aiuto di un MapReduce / Cascading app per eseguire la join fuori banda, che è molto utile modello.
nella divulgazione completa, io sono uno sviluppatore del progetto di Cascading.
Altri suggerimenti
Il libro Hadoop: The Definitive Guide di O'Reilly ha un capitolo che spiega come Hadoop è usato in due aziende del mondo reale
.Dai un'occhiata al giornale interpretazione dei dati: Analisi parallelo con Sawzall da Google. Si tratta di un documento sullo strumento Google utilizza per l'analisi dei log.