Hadoop analyzerJR

  • View
    195

  • Download
    0

Embed Size (px)

Transcript

  • Universita degli studi di salerno

    Progetto di Sistemi Operativi Avanzati

    2014-2015

    Hadoop Analyzer JR

    Autori:Amedeo LeoAlessio PetrozzielloSimone Romano

    DocenteGiuseppe Cattaneo

    Supervisore:Gianluca Roscigno

    February 7, 2015

  • 2

  • Contents

    Introduzione 5

    Dati da analizzare 6

    1.1 Analisi dstat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    1.1.1 Client/server dstat . . . . . . . . . . . . . . . . . . . . . . 6

    1.1.2 Analisi file .csv . . . . . . . . . . . . . . . . . . . . . . . 6

    1.2 Analisi log Hadoop . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    1.3 Profiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

    Output 10

    2.1 Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    2.1.1 Web page . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    2.1.2 Warning . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    2.1.3 Profiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    2.2 R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    2.2.1 Dati formattati excel . . . . . . . . . . . . . . . . . . . . . 17

    2.2.2 SpeedUp ed efficienza . . . . . . . . . . . . . . . . . . . . 17

    Manuale utente 19

    Caso di studio 28

    4.1 Configurazione cluster . . . . . . . . . . . . . . . . . . . . . . . . 28

    4.1.1 Yarn-site.xml . . . . . . . . . . . . . . . . . . . . . . . . . 28

    4.2 hdfs-site.xml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    4.3 WordCount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    4.4 Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

    4.4.1 Specifiche delle macchine . . . . . . . . . . . . . . . . . . 39

    4.5 Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

    4.6 Risultati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

    4.6.1 Analisi Dstat . . . . . . . . . . . . . . . . . . . . . . . . . 40

    4.6.2 Analisi Log Hadoop . . . . . . . . . . . . . . . . . . . . . 42

    4.7 Confronto esperimenti . . . . . . . . . . . . . . . . . . . . . . . . 46

    3

  • 4 CONTENTS

    Appendice 495.1 Java code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

    5.1.1 Parser csv . . . . . . . . . . . . . . . . . . . . . . . . . . . 495.1.2 ChartGenerator . . . . . . . . . . . . . . . . . . . . . . . . 545.1.3 JFreeChartGenerator . . . . . . . . . . . . . . . . . . . . . 67

    5.2 R code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705.2.1 chart generator.R . . . . . . . . . . . . . . . . . . . . . . . 705.2.2 excel.R . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855.2.3 graphHadoopGenerator.R . . . . . . . . . . . . . . . . . . 945.2.4 speedup.R . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

    5.3 C code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1005.3.1 client.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1005.3.2 server.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1045.3.3 AllSlaves.c . . . . . . . . . . . . . . . . . . . . . . . . . . 109

    Afterword 111

  • Introduzione

    Lo studio proposto punta a realizzare uno strumento per analizzare il funziona-mento di un cluster che utilizza il framework Hadoop [9]. Diversi sono gli inputche il tool puo analizzare a seconda delle esigenze. In particolare analizza iseguenti tipi di file:

    .csv generati con dstat [6]

    .txt generati con il profiler java [7]

    .man che raccolgono i log generati dal framework Hadoop

    Il tool genera grafici rappresentanti landamento di ciascuna macchina del clus-ter. I file .csv possono essere recuperati installando sul master e sugli slaverispettivamente un client e vari server appositamente realizzati. A tale scopoe possibile utilizzare librerie java o R[8]. In base alla modalita di generazioneselezionata dallutente (R, java) e possibile istruire il tool al fine di generareeventuali warning charts che danno suggerimenti per utilizzare il cluster inmaniera pi efficiente. E possibile inoltre visualizzare una timeline dei task svoltidal framework Hadoop, generabile dando in input i file .man generati con unoscript python appositamente realizzato. Loutput realizzato varia a secondadelle librerie selezionate dallutente (R o java) e puo essere:

    Pagina web - java

    file pdf - R

    I capitoli successivi analizzeranno in dettaglio quanto realizzato.

    5

  • Dati da analizzare

    Introduzione

    In questa sezione saranno analizzati i vari dati presi in input dal tool e il relativooutput generato dal tool.

    1.1 Analisi dstat

    Il tool analizza dunque file .csv generati con dstat[6] su ciascuno slave e sulmaster del cluster.

    1.1.1 Client/server dstat

    Il tool prevede la possibilita di raccogliere, da un solo terminale, di lanciare, inmaniera parallela, il software dstat su tutte le macchine necessarie del cluster.In particolare, sono stati sviluppati un client e un server in linguaggio C: ilserver e stato settato in avvio automatico sugli slave, il quale attende su unaspecifica porta (ad esempio 8080) le richieste effettuate dal master; il client, inesecuzione sul master, puo decidere quando avviare o terminare il software dstatsugli slave.

    1.1.2 Analisi file .csv

    I file .csv recuperati con lapplicazione client/server c possono essere dunqueanalizzati con Hadoop Analyzer JR. Come anticipato cio puo essere fatto uti-lizzando due diverse librerie:

    Java (Google-JfreeChart)

    R

    Alcune delle opzioni selezionabili (vedi 2.2.2) variano a seconda della libreriautilizzata.

    6

  • 1.1. ANALISI DSTAT 7

    Figura 1.1: Esempio di file generato con dstat

    Figura 1.2: Esempio di file preso in input dal parser

    Analisi .csv java

    Al fine di interpretare i file .csv generati con dstat e stato utilizzato un parser.csv [3]. La classe java che si occupa di analizzare tali file e mostrata in 5.1.1.Tale classe analizza il file .csv e:

    ripulisce il file eliminando elementi superflui che danno problemi con ilparser

    ricava in automatico lintervallo con cui dstat e stato lanciato sullemacchine del cluster

    Il file che prende in input e mostrato in figura 1.1. Tale file viene dunque ripulitoper poterne effettuare il parsing. Il nuovo file e mostrato in figura 1.2. Sulnuovo file generato e dunque possibile andare ad estrarre di volta in volta lecolonne desiderate per ricavare informazioni necessarie per generare i grafici.

    Analisi .csv R

    E stato creato uno script in linguaggio R per la creazione dei grafici relativiallanalisi dei dati di dstat. Lo script prende in input un file di configurazionecontenente diversi campi: - Tempo espresso in secondi, minuti o ore, relativoall asse delle ascisse per la timeline. - Un valore per definire la scelta dellacolorazione dei grafici (in scala di grigi o colorato). - Un valore per definire la

  • 8 CONTENTS

    scelta delle linee (continue o tratteggiate). - Un valore per stabilire la presenzadel titolo nei grafici. - Un valore per scegliere come generare i grafici (un singolopdf o molteplici). - Un valore per scegliere la tipologia dei grafici (single,average, all nodes). - Un valore per determinare la scelta dei valori dellaCPU desiderati (usr, sys, idl, wai, hiq, siq). - Un valore per determinarela scelta dei valori della RAM desiderati (used, buff, cach, free). - Unvalore per determinare lupperbound della RAM desiderato. - Un valore perdeterminare la scelta di visualizzazione dellI/O (su un solo grafico o separati).- Un valore per determinare la scelta di visualizzazione del paging, in e out (su unsolo grafico o separati). - Un valore per determinare la scelta di visualizzazionedellutilizzo della rete, espresso in MB/s, in e out (su un solo grafico o separati).- Un valore per determinare la scelta di visualizzazione dellutilizzo della rete,espresso in numero di pacchetti, ricevuti o inviati (su un solo grafico o separati).Attraverso il settaggio dei vari parametri, si puo avere unampia scelta sullagenerazione dei grafici. Dato un file dstat in formato csv, ne viene generatoun dataframe su cui, estrapolate le informazioni necessarie, saranno creati idiversi grafici. La timeline e espressa in secondi, minuti o ore a seconda dellascelta dellutente; il delay tra le misurazioni e automaticamente riconosciutodallo script.

    1.2 Analisi log Hadoop

    Una parte fondamentale del nostro tool e lanalisi dei log generati dal framework.I log devono essere recuperati, in primo luogo, dallHadoop MapReduce HistoryServer. Le REST API dellHistory Server permettono allutente di ottenere lostatus delle applicazioni terminate. Tali risorse forniscono informazioni generalisullHistory Server; attraverso delle URI e possibile ottenere dati partendo daun id specificato, Sono supportate operazioni HTTP come GET. Le rispostepossono essere in formato JSON o XML. Per recuperare i file di log, e statocreato uno script utilizzando il linguaggio Python; in particolare, dato in inputlid del job, restituisce in output una cartella contenente solo i file utili pergenerare il grafico, in modo da evitare allutente lonere di scaricare a mano imolteplici file restituiti dallHistory Server.

    Esempio: Con lURL http://localhost:19888/ws/v1/history/mapreduce/jobs/job\_1419686689081\_0001 si ottengono varie informazioni sul job in in-put, come il submitTime, utile per essere considerato come il tempo 0 del jobHadoop da inserire nel grafico. Con lURL http://localhost:19888/ws/v1/history/mapreduce/jobs/job\_1419686689081\_0001/tasks otteniamo le in-formazioni dei task di map e reduce. Effettuato il parsing della risorsa gener