Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Big Data e Machine Learning: Elaborazione, Scalabilità e Sistemi Distribuiti, Appunti di Analisi Dei Dati

Una introduzione alla elaborazione di big data e al ruolo del data scientist. Esplora i sistemi di elaborazione big data, la natura eterogenea dei dati, il ruolo del data scientist e le competenze richieste. Inoltre, tratta il concetto di machine learning, la scalabilità e i sistemi distribuiti, con un focus su spark e la scalabilità orizzontale.

Tipologia: Appunti

2020/2021

Caricato il 24/05/2021

anna_di_cecco
anna_di_cecco 🇮🇹

4.5

(21)

5 documenti

1 / 3

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
BIG DATA E MACHINE LEARNING
1. A COSA SERVONO I SISTEMI DI ELABORAZIONE BIG DATA
Big Data = Dati eterogenei, di diversa natura e origine. Quando si parla di big data non ci si
riferisce ad uno strumento specifico, ma ad un set di più strumenti. Il lavoro di un data scientist è
capire quale sia lo strumento più adatto, a volte anche costruirseli.
2. CHI È IL DATA SCIENTIST
Figura professionale molto recente ed ibrida. Trova soluzioni a problemi nuovi, deve inventarsi dei
nuovi tools per risolverli. Questo perché deve avere diverse competenze, non è specifica di un
determinato settore. Si muove principalmente in 3 ambiti:
1. Programmazione. Deve conoscere diversi linguaggi di programmazione, perché ognuno ha
i suoi punti di forza ed è utile per diverse attività.
2. Approccio ai sistemi operativi. Importante perché spesso si trova a gestire server, flusso di
dati, etc.
3. Matematica e statistica.
Machine Learning: processo di apprendimento automatico da parte di macchine il cui
comportamento è appreso da una rete di calcolo connessa casualmente o progettata per imparare
solo alcune attività. Il mio algoritmo non è bloccato o programmato per eseguire un determinato
compito specifico, ma viene domandato al programma stesso di capire quali sono le interazioni
necessarie e agire di conseguenza. Si usano reti neurali, un sistema che prevede di non dare
informazioni specifiche. Per esempio, i sistemi di recommendation di amazon (esempio di sistema
neurale).
Spark (libreria), poggiato su sistema programmazione “Scala”, ma ad esempio può essere
utilizzato anche su Python o Java.
4. SCALABILITÀ E SISTEMI DISTRIBUITI
“Scalare”: avere maggiore scalabilità, ossia il sistema necessita un server più grande a causa
dell’aumento delle richieste da processare. Come risolvere questo problema di scalabilità?
Due soluzioni:
1. Scalabilità verticale: implica l’aggiunta di risorse con l’obiettivo di aumentarne la capacità,
come espandere la memoria o la RAM oppure aggiungere più CPU al server. Facendo così
aumentano i costi, molto spesso esponenzialmente, perché ho bisogno di tecnologie molto
sofisticate rispetto alla media.
2. Scalabilità orizzontale: prevede l’aggiunta di più unità, messe insieme tra loro affinché
funzionino come una sola e unica unità. È il modello più utilizzato nei sistemi di big data.
Non creo il “super calcolatore” che mi risolve il problema da solo, ma cerco di mettere
assieme più server e riuscire a farli “dialogare” tra loro. La più utilizzata.
Sistema di big data: non è un solo pc o un solo server, ma un sistema distribuito: metto in gioco
diversi attori e diversi server, non avrò soltanto un database che tiene in memoria tutti i miei dati
ma ne ho diversi. Però devo vederli come se fossero uno solo.
I sistemi distribuiti fanno risparmiare dal punto economico, ma richiedono una maggiore
complessità computazionale.
Bisogna trovare un trade-off (compromesso) per risolvere il problema davanti al quale ci si trova,
scegliendo tra scalabilità verticale ed orizzontale in base alle capacità e alla disponibilità
economica.
Comunicazione e sincronizzazione sono problemi che possono emergere utilizzando la scalabilità
orizzontale, ed è proprio il compito del data scientist quello di riuscire a sincronizzare i dati tra i
diversi server.
In base alla tipologia di dati con cui ci troviamo a lavorare decidiamo quale tipologia di scalabilità
adottare.
5. TEOREMA CAP NEI SISTEMI DISTRIBUITI
pf3

Anteprima parziale del testo

Scarica Big Data e Machine Learning: Elaborazione, Scalabilità e Sistemi Distribuiti e più Appunti in PDF di Analisi Dei Dati solo su Docsity!

BIG DATA E MACHINE LEARNING

1. A COSA SERVONO I SISTEMI DI ELABORAZIONE BIG DATA

Big Data = Dati eterogenei, di diversa natura e origine. Quando si parla di big data non ci si riferisce ad uno strumento specifico, ma ad un set di più strumenti. Il lavoro di un data scientist è capire quale sia lo strumento più adatto, a volte anche costruirseli.

2. CHI È IL DATA SCIENTIST Figura professionale molto recente ed ibrida. Trova soluzioni a problemi nuovi, deve inventarsi dei nuovi tools per risolverli. Questo perché deve avere diverse competenze, non è specifica di un determinato settore. Si muove principalmente in 3 ambiti:

  1. Programmazione. Deve conoscere diversi linguaggi di programmazione, perché ognuno ha i suoi punti di forza ed è utile per diverse attività.
  2. Approccio ai sistemi operativi. Importante perché spesso si trova a gestire server, flusso di dati, etc.
  3. Matematica e statistica. Machine Learning : processo di apprendimento automatico da parte di macchine il cui comportamento è appreso da una rete di calcolo connessa casualmente o progettata per imparare solo alcune attività. Il mio algoritmo non è bloccato o programmato per eseguire un determinato compito specifico, ma viene domandato al programma stesso di capire quali sono le interazioni necessarie e agire di conseguenza. Si usano reti neurali, un sistema che prevede di non dare informazioni specifiche. Per esempio, i sistemi di recommendation di amazon (esempio di sistema neurale). Spark (libreria), poggiato su sistema programmazione “Scala”, ma ad esempio può essere utilizzato anche su Python o Java. 4. SCALABILITÀ E SISTEMI DISTRIBUITI “Scalare”: avere maggiore scalabilità, ossia il sistema necessita un server più grande a causa dell’aumento delle richieste da processare. Come risolvere questo problema di scalabilità? Due soluzioni:
  4. Scalabilità verticale: implica l’aggiunta di risorse con l’obiettivo di aumentarne la capacità, come espandere la memoria o la RAM oppure aggiungere più CPU al server. Facendo così aumentano i costi, molto spesso esponenzialmente, perché ho bisogno di tecnologie molto sofisticate rispetto alla media.
  5. Scalabilità orizzontale: prevede l’aggiunta di più unità, messe insieme tra loro affinché funzionino come una sola e unica unità. È il modello più utilizzato nei sistemi di big data. Non creo il “super calcolatore” che mi risolve il problema da solo, ma cerco di mettere assieme più server e riuscire a farli “dialogare” tra loro. La più utilizzata. Sistema di big data: non è un solo pc o un solo server, ma un sistema distribuito: metto in gioco diversi attori e diversi server, non avrò soltanto un database che tiene in memoria tutti i miei dati ma ne ho diversi. Però devo vederli come se fossero uno solo. I sistemi distribuiti fanno risparmiare dal punto economico, ma richiedono una maggiore complessità computazionale. Bisogna trovare un trade-off (compromesso) per risolvere il problema davanti al quale ci si trova, scegliendo tra scalabilità verticale ed orizzontale in base alle capacità e alla disponibilità economica. Comunicazione e sincronizzazione sono problemi che possono emergere utilizzando la scalabilità orizzontale, ed è proprio il compito del data scientist quello di riuscire a sincronizzare i dati tra i diversi server. In base alla tipologia di dati con cui ci troviamo a lavorare decidiamo quale tipologia di scalabilità adottare. 5. TEOREMA CAP NEI SISTEMI DISTRIBUITI

In un sistema distribuito dobbiamo tenere in considerazione tre cose:

  1. La coerenza (consistency ): le informazioni presenti su diversi server devono essere uguali e coerenti. Non devono esserci asimmetrie informative
  2. La disponibilità (availability): le informazioni presenti sui diversi server devono essere sempre presenti e disponibili: voglio poter dire sempre se le operazioni fatte sul mio sistema sono andate a buon fine oppure no, il sistema deve sempre rispondermi.
  3. T olleranza alla partizione (Partitioning ): tutte le informazioni devono poter essere distribuite e presenti su ogni server. Voglio poter distribuire le mie informazioni su diverse parti, non su un unico server: voglio avere la possibilità di “spezzettare” i dati. Questi tre elementi formano il teorema CAP : secondo questo teorema, non è mai possibile avere in un sistema informatico distribuito contemporaneamente le tre componenti. Normalmente in questi casi si trovano dei “modi per girarci intorno” per avere i tre elementi contemporaneamente. Posso averne due, e simulare e una terza. Per esempio, utilizzando un sistema di ridondanza. Sicuramente uno dei temi del data scientist è essere in grado di mettere a disposizione un sistema che sia in grado di integrare questi tre elementi al suo interno. 6. ARCHITETTURA DI UN SISTEMA BIG DATA OLAP: On-Line Analytical Processing Processo di analisi di dati che elabora informazioni in modo dettagliato, ma che rilascia report periodicamente, non in tempo reale. Necessita analisi approfondite per essere realizzato. Esempio: analisi su video. Vengono utilizzati dei sistemi diversi da quelli che vengono utilizzati dai sistemi real time. Mi danno un risultato dettagliato con analisi approfondite. OLTP (On-Line Transaction Processing) Processo di analisi di dati che elabora informazioni rilasciando report in tempo reale. L’elaborazione va fatta il più velocemente possibile, magari su una quantità di dati inferiore rispetto agli OLAP. In questo caso, le elaborazioni non sono molto approfondite, ma più rapide, basate solo magari sulle ultime ore e non su periodi di settimane come nel caso degli OLAP. Sono due strumenti generali: non è detto che avremo la necessità di utilizzarli. **ALGORITMO MAP-REDUCE
  4. Parte 1** Gli algoritmi devono cogliere a pieno le caratteristiche migliori del nostro sistema distribuito. L’algoritmo di map reduce sfrutta a pieno un sistema distribuito. Ciclo Fore: crea algoritmi sequenziali. Non sfrutta tutti i server, ne può utilizzare solo uno. Quindi non è adatto a un sistema distribuito. La soluzione sta nell0utilizzare un algoritmo di map reduce. E fatto da due parti: mapping e reduce. La parte di mapping associa ogni elemento di input a un output: processo di individuazione di dati e assegnazione di attributi ad ognuno di essi in modalità 1:1. La parte del reduce invece è un processo di elaborazione dei dati che hanno lo stesso attributo. Prende tutti gli elementi con la stessa etichetta e li elabora, in base alla modalità decisa dal programmatore. 8. Parte 2 Quanto tempo ci mettono i due algoritmi a svolgere il loro lavoro (Ciclo Fore e Map Reduce)? Con map reduce, la parte di mapping è di per se parallelizzabile: se io potessi dedicare un processo ad ogni elemento di imput che voglio etichettare, posso parallelizzarlo avendo come unico vincolo il numero di server (di processi) a mia disposizione. Se ho 100 elementi e 10 processi a disposizione, il tempo a livello teorico che necessito, ossia la complessità computazionale del mapping, equivale a numero di elementi / numero di processi, quindi 100/ ossia 10. Il Reduce, invece, elabora a due a due tutti gli elementi etichettati dello stesso tipo. Quindi sarà una complessità computazionale calcolata: log2 (n. Massimo di elementi in un set x numero di elementi diversi) / numero di processi