Confronto tra i file System Hadoop e Ceph

Completato

Viene ora fornito un riepilogo1 delle principali differenze tra HDFS e Ceph.

  • Differenze architetturali: HDFS segue il modello di collocazione di calcolo e archiviazione. I nodi DataNode HDFS si trovano in genere nella stessa posizione dei nodi MapReduce e l'idea principale alla base dell'intero modello consiste nel portare il calcolo ai dati. Ceph è progettato come servizio di archiviazione autonomo, anche se i nodi OSD che archiviano dati in Ceph possono trovarsi nella stessa posizione dei nodi MapReduce.
  • Compatibilità: i client HDFS devono essere implementati usando una delle API. HDFS non è stato progettato come file system POSIX e non supporta parte della semantica POSIX, ad esempio l'apertura di file esistenti per la scrittura. Esistono alcune soluzioni alternative, ad esempio un driver FUSE, che consentono di montare HDFS. Tuttavia, la maggior parte delle applicazioni deve essere reimplementata con un client HDFS se non supporta ancora la soluzione alternativa. Ceph, d'altro canto, espone più API, tra cui il driver CephFS conforme a POSIX, che semplifica notevolmente l'integrazione con applicazioni esistenti rispetto ad HDFS.
  • Layout dei dati: i nomi HDFS espongono la posizione fisica dei blocchi alle applicazioni client, che possono usare queste informazioni per migliorare potenzialmente la località degli accessi ai dati. Ceph è simile: i server di metadati espongono sempre la posizione dell'oggetto dati al client quando viene effettuata una richiesta di dati.
  • Supporto per file di piccole dimensioni: HDFS non supporta i file di piccole dimensioni perché è ottimizzato per dimensioni di blocchi di grandi dimensioni (64 MB per impostazione predefinita). In Ceph la larghezza degli stripe è in genere nell'ordine dei kilobyte e questo aspetto lo rende più adatto per l'utilizzo generico rispetto ad HDFS.
  • Scritture simultanee: HDFS è un modello write-once che consente solo a un singolo file di scrivere in un file alla volta. Ceph supporta più scritture simultanee e di conseguenza è il più flessibile tra i due file system.
  • Modello di coerenza: HDFS garantisce la coerenza limitando le scritture in un singolo client e non consentendo aggiornamenti di file, mentre Ceph può garantire coerenza sequenziale tranne in rari casi che coinvolgono una partizione di rete di alcuni osD.
  • Memorizzazione nella cache: HDFS supporta la memorizzazione nella cache read-ahead sul lato client tramite il modello di flusso. I client in Ceph possono includere cache di lettura e buffer di scrittura solo se al client è stato fornito un lease dal server di metadati (quando il client ha accesso esclusivo a un file). Quando più client accedono allo stesso file in Ceph, questi lease vengono revocati, forzando l'I/O in modo che sia sincrono, per gestire la coerenza.
  • Tolleranza di errore: HDFS è progettato per la tolleranza di errore con il supporto predefinito per la replica a livello di blocco ed è compatibile con il rack, ma namenode è un singolo punto di errore in HDFS. Ceph, d'altro canto, è piuttosto affidabile perché usa protocolli peer-to-peer complessi per garantire la tolleranza di errore. Il ripristino di emergenza in Ceph è anche piuttosto veloce grazie alla presenza di log di scrittura che possono essere riprodotti per ripristinare la velocità di un nodo.

Riferimenti

  1. Maltzahn, C., Molina-Estolano, E., Jsonrana, A., Nelson, A. J., Brandt, S. A., & Weil, S. (2010). Ceph as a scalable alternative to the Hadoop Distributed File System The USENIX Magazine vol.35