Perbedaan antara HBase dan Hadoop / HDFS

130

Ini semacam pertanyaan yang naif tapi saya baru dengan paradigma NoSQL dan tidak tahu banyak tentang itu. Jadi jika seseorang dapat membantu saya dengan jelas memahami perbedaan antara HBase dan Hadoop atau jika memberikan beberapa petunjuk yang dapat membantu saya memahami perbedaannya.

Sampai sekarang, saya melakukan riset dan akses. untuk pemahaman saya Hadoop menyediakan kerangka kerja untuk bekerja dengan potongan data mentah (file) dalam HDFS dan HBase adalah mesin basis data di atas Hadoop, yang pada dasarnya bekerja dengan data terstruktur alih-alih potongan data mentah. Hbase menyediakan lapisan logis atas HDFS seperti halnya SQL. Apakah itu benar?

Tlg bebas untuk mengoreksi saya.

Terima kasih.

Dhaval Shah
sumber
7
Mungkin judul pertanyaannya adalah "Perbedaan antara HBase dan HDFS"?
Matt Ball

Jawaban:

248

Hadoop pada dasarnya adalah 3 hal, FS (Hadoop Distributed File System), kerangka perhitungan (MapReduce) dan jembatan manajemen (Yet Another Resource Negotiator). HDFS memungkinkan Anda menyimpan data dalam jumlah besar dengan cara yang terdistribusi (menyediakan akses baca / tulis yang lebih cepat) dan berlebihan (menyediakan ketersediaan yang lebih baik). Dan MapReduce memungkinkan Anda untuk memproses data besar ini secara terdistribusi dan paralel. Tetapi MapReduce tidak terbatas hanya pada HDFS. Menjadi FS, HDFS tidak memiliki kemampuan baca / tulis acak. Ini bagus untuk akses data berurutan. Dan di sinilah HBase muncul. Ini adalah database NoSQL yang berjalan di atas cluster Hadoop Anda dan memberi Anda akses baca / tulis real-time acak ke data Anda.

Anda dapat menyimpan data terstruktur dan tidak terstruktur di Hadoop, dan HBase juga. Keduanya memberikan Anda beberapa mekanisme untuk mengakses data, seperti shell dan API lainnya. Dan, HBase menyimpan data sebagai pasangan kunci / nilai secara kolumnar sedangkan HDFS menyimpan data sebagai file datar. Beberapa fitur yang menonjol dari kedua sistem adalah:

Hadoop

  1. Dioptimalkan untuk akses streaming file besar.
  2. Mengikuti ideologi baca-sekali-baca-banyak.
  3. Tidak mendukung baca / tulis acak.

HBase

  1. Menyimpan pasangan kunci / nilai secara kolumnar (kolom dipukuli bersama sebagai keluarga kolom).
  2. Memberikan akses latensi rendah ke sejumlah kecil data dari dalam kumpulan data besar.
  3. Menyediakan model data yang fleksibel.

Hadoop paling cocok untuk pemrosesan batch offline, agak banyak hal sementara HBase digunakan ketika Anda memiliki kebutuhan real-time.

Perbandingan analog akan antara MySQL dan Ext4.

Tariq
sumber
bagaimana dengan menggunakan hbase sebagai datalake untuk data dalam jumlah sangat besar (file kecil)? dapatkah dia mengelola data sebanyak hdfs?
Mehdi TAZI
@MehdiTAZI pasti. HBase berjalan di atas HDFS sehingga tidak perlu khawatir tentang skalabilitas. Anda hanya perlu memastikan bahwa Anda menggunakan HBase seperti yang seharusnya digunakan untuk mendapatkan kinerja maksimal
Tariq
bagaimana dengan masalah operasional?
Mehdi TAZI
Saya tidak akan mengatakan HBase adalah mimpi buruk tim ops, tetapi memiliki beberapa area di mana masih ada beberapa ruang lingkup perbaikan, dan masyarakat bekerja sangat keras untuk memperbaikinya. Tetapi itu berlaku untuk perangkat lunak apa pun. Tidak ada alat bukti / IMHO teknologi masalah. Jika cocok dengan kebutuhan Anda, maka Anda harus mencobanya. Ini adalah alat mazing untuk menangani kebutuhan baca / tulis real time acak Anda.
Tariq
22

Proyek Apache Hadoop mencakup empat modul utama

  1. Hadoop Common : Utilitas umum yang mendukung modul Hadoop lainnya.
  2. Sistem File Terdistribusi Hadoop (HDFS ™) : Sistem file terdistribusi yang menyediakan akses throughput tinggi ke data aplikasi.
  3. Hadoop YARN : Kerangka kerja untuk penjadwalan pekerjaan dan manajemen sumber daya klaster.
  4. Hadoop MapReduce : Sistem berbasis YARN untuk pemrosesan paralel set data besar.

HBase adalah basis data terukur dan terdistribusi yang mendukung penyimpanan data terstruktur untuk tabel besar. Sama seperti Bigtablememanfaatkan penyimpanan data terdistribusi yang disediakan oleh Sistem File Google, Apache HBase menyediakan kemampuan Bigtable seperti di atas Hadoop dan HDFS.

Kapan menggunakan HBase:

  1. Jika aplikasi Anda memiliki skema variabel di mana setiap baris sedikit berbeda
  2. Jika Anda menemukan bahwa data Anda disimpan dalam koleksi, itu semua dikunci pada nilai yang sama
  3. Jika Anda memerlukan akses baca / tulis secara acak ke Data Besar Anda.
  4. Jika Anda memerlukan akses berbasis kunci ke data saat menyimpan atau mengambil.
  5. Jika Anda memiliki sejumlah besar data dengan cluster Hadoop yang ada

Tetapi HBase memiliki beberapa keterbatasan

  1. Itu tidak dapat digunakan untuk aplikasi transaksional klasik atau bahkan analisis relasional.
  2. Ini juga bukan pengganti lengkap untuk HDFS ketika melakukan MapReduce batch besar.
  3. Itu tidak berbicara SQL, memiliki pengoptimal, mendukung transaksi catatan silang atau bergabung.
  4. Itu tidak dapat digunakan dengan pola akses yang rumit (seperti gabungan)

Ringkasan:

Pertimbangkan HBase ketika Anda memuat data dengan kunci, mencari data dengan kunci (atau rentang), menyajikan data dengan kunci, meminta data dengan kunci atau ketika menyimpan data dengan baris yang tidak sesuai dengan skema.

Lihatlah Do's and Don't of HBase dari cloudera blog.

Ravindra babu
sumber
bagaimana dengan menggunakan hbase sebagai datalake untuk data dalam jumlah sangat besar (file kecil)? dapatkah dia mengelola data sebanyak hdfs?
Mehdi TAZI
1
Jika Anda menghasilkan banyak file kecil, maka, tergantung pada pola akses, jenis penyimpanan yang berbeda mungkin lebih tepat. HBase menyimpan data dalam MapFiles (Indexed SequenceFiles), dan merupakan pilihan yang baik jika Anda perlu melakukan streaming gaya MapReduce style menganalisa dengan sesekali mencari acak
Ravindra babu
4

Hadoop menggunakan sistem file terdistribusi yaitu HDFS untuk menyimpan bigdata. Tetapi ada Keterbatasan tertentu HDFS dan Inorder untuk mengatasi keterbatasan ini, database NoSQL seperti HBase, Cassandra dan Mongodb muncul.

Hadoop hanya dapat melakukan pemrosesan batch, dan data akan diakses hanya secara berurutan. Itu berarti kita harus mencari seluruh dataset bahkan untuk pekerjaan yang paling sederhana. Sebuah dataset besar ketika diproses menghasilkan kumpulan data besar lainnya, yang juga harus diproses secara berurutan. Pada titik ini, solusi baru diperlukan untuk mengakses setiap titik data dalam satu unit waktu (akses acak).

Seperti semua FileSystems lainnya, HDFS menyediakan penyimpanan kepada kami, tetapi dengan cara yang toleran terhadap kesalahan dengan throughput yang tinggi dan risiko kehilangan data yang lebih rendah (karena replikasi). Namun, sebagai Sistem File, HDFS tidak memiliki akses baca dan tulis acak. Di sinilah HBase muncul. Ini adalah penyimpanan data yang terdistribusi, terukur, dan besar, meniru Google BigTable. Cassandra agak mirip dengan hbase.

Praveen Mulchandani
sumber
4

Baik HBase dan HDFS dalam satu gambar

Baik HBase dan HDFS dalam satu gambar

catatan:

Periksa iblis HDFS (Highlighted in green) seperti DataNode (collocated Region Server) dan NameNode di cluster dengan memiliki HBase dan Hadoop HDFS

HDFS adalah sistem file terdistribusi yang sangat cocok untuk penyimpanan file besar. yang tidak menyediakan pencarian catatan cepat individu dalam file.

HBase , di sisi lain, dibangun di atas HDFS dan menyediakan pencarian catatan cepat (dan pembaruan) untuk tabel besar. Ini kadang-kadang bisa menjadi titik kebingungan konseptual. HBase secara internal menempatkan data Anda di "StoreFiles" yang diindeks yang ada pada HDFS untuk pencarian berkecepatan tinggi.

Bagaimana ini terlihat?

Nah, pada tingkat infrastruktur, setiap mesin salep di kluster memiliki setan berikut

  • Server Wilayah - HBase
  • Node Data - HDFS

Mesin budak

Bagaimana cara cepat dengan pencarian?

HBase mencapai pencarian cepat pada HDFS (kadang-kadang sistem file terdistribusi lainnya juga) sebagai penyimpanan yang mendasarinya, menggunakan model data berikut

  • Meja

    • Tabel HBase terdiri dari beberapa baris.
  • Baris

    • Baris dalam HBase terdiri dari kunci baris dan satu atau lebih kolom dengan nilai yang terkait dengannya. Baris diurutkan berdasarkan abjad dengan kunci baris saat disimpan. Untuk alasan ini, desain kunci baris sangat penting. Tujuannya adalah untuk menyimpan data sedemikian rupa sehingga baris terkait saling berdekatan. Pola kunci baris yang umum adalah domain situs web. Jika kunci baris Anda adalah domain, Anda mungkin harus menyimpannya secara terbalik (org.apache.www, org.apache.mail, org.apache.jira). Dengan cara ini, semua domain Apache berdekatan satu sama lain dalam tabel, daripada disebarkan berdasarkan huruf pertama dari subdomain.
  • Kolom

    • Kolom dalam HBase terdiri dari keluarga kolom dan kualifikasi kolom, yang dibatasi oleh karakter: (titik dua).
  • Keluarga Kolom

    • Keluarga kolom secara fisik menempatkan satu set kolom dan nilai-nilainya, seringkali karena alasan kinerja. Setiap keluarga kolom memiliki seperangkat properti penyimpanan, seperti apakah nilainya harus di-cache dalam memori, bagaimana datanya dikompresi atau kunci barisnya disandikan, dan lainnya. Setiap baris dalam tabel memiliki keluarga kolom yang sama, meskipun baris yang diberikan mungkin tidak menyimpan apa pun dalam keluarga kolom yang diberikan.
  • Kualifikasi Kolom

    • Kualifikasi kolom ditambahkan ke keluarga kolom untuk memberikan indeks untuk sepotong data tertentu. Diberikan konten keluarga kolom, kualifikasi kolom mungkin konten: html dan lainnya mungkin konten: pdf. Meskipun keluarga kolom ditetapkan pada pembuatan tabel, kualifikasi kolom bisa berubah dan mungkin sangat berbeda di antara baris.
  • Sel

    • Sel adalah kombinasi baris, kumpulan kolom, dan kualifikasi kolom, dan berisi nilai dan stempel waktu, yang mewakili versi nilai.
  • Stempel waktu

    • Stempel waktu ditulis di samping setiap nilai dan merupakan pengidentifikasi untuk versi nilai yang diberikan. Secara default, cap waktu menunjukkan waktu pada RegionServer saat data ditulis, tetapi Anda dapat menentukan nilai cap waktu yang berbeda saat Anda memasukkan data ke dalam sel.

Alur permintaan baca klien:

Klien membaca aliran permintaan

Apa tabel meta pada gambar di atas?

tabel meta

Setelah semua informasi, HBase read flow adalah untuk pencarian sentuhan entitas ini

  1. Pertama, pemindai mencari sel Row di cache Block - read-cache. Nilai-nilai Kunci Baca Baru-baru ini di-cache di sini, dan Paling Baru-baru Ini Digunakan diusir ketika memori diperlukan.
  2. Selanjutnya, pemindai terlihat di MemStore , cache tulis di memori yang berisi penulisan terbaru.
  3. Jika pemindai tidak menemukan semua sel baris di MemStore dan Block Cache, maka HBase akan menggunakan indeks Block Cache dan filter bloom untuk memuat HFiles ke dalam memori, yang mungkin berisi sel-sel baris target.

sumber dan informasi lebih lanjut:

  1. Model data HBase
  2. Arsitek HBase
mrsrinivas
sumber
1

Referensi: http://www.quora.com/What-is-the-difference-between-HBASE-and-HDFS-in-Hadoop

Hadoop adalah nama umum untuk beberapa subsistem: 1) HDFS. Sistem file terdistribusi yang mendistribusikan data melintasi sekelompok mesin yang menangani redundansi, dll. 2) Pengurangan Peta. Sistem manajemen pekerjaan di atas HDFS - untuk mengelola pekerjaan pengurangan peta (dan jenis lainnya) yang memproses data yang disimpan di HDFS.

Pada dasarnya ini berarti sistem offline - Anda menyimpan data pada HDFS dan Anda dapat memprosesnya dengan menjalankan pekerjaan.

HBase di sisi lain dalam basis data berbasis kolom. Ia menggunakan HDFS sebagai penyimpanan - yang menangani cadangan \ redundensi \ dll tetapi merupakan "toko online" - yang berarti Anda dapat menanyakannya untuk baris tertentu \ baris dll dan mendapatkan nilai langsung.

Jiaji Li
sumber
0

HDFS adalah sistem file terdistribusi berbasis Java yang memungkinkan Anda untuk menyimpan data besar di beberapa node dalam cluster Hadoop. Sedangkan HBase adalah database NoSQL (mirip dengan NTFS dan MySQL).

Karena HDFS dan HBase menyimpan semua jenis data seperti terstruktur, semi-terstruktur dan tidak terstruktur dalam lingkungan terdistribusi.

Perbedaan antara HDFS & HBase

  • HBase menyediakan akses latensi rendah ke sejumlah kecil data dalam kumpulan data besar sementara HDFS menyediakan operasi latensi tinggi.
  • HBase mendukung membaca dan menulis secara acak sementara HDFS mendukung WORM (Tulis sekali Baca Banyak atau Beberapa kali).
  • HDFS pada dasarnya atau terutama diakses melalui pekerjaan MapReduce sementara HBase diakses melalui perintah shell, Java API, REST, Avro atau Thrift API.

HDFS menyimpan kumpulan data besar dalam lingkungan terdistribusi dan memanfaatkan pemrosesan batch pada data tersebut.

Sementara HBase menyimpan data dengan cara yang berorientasi kolom di mana setiap kolom disimpan bersama sehingga, membaca menjadi lebih cepat meningkatkan pemrosesan waktu nyata.

masukkan deskripsi gambar di sini

Ghulam Dastgeer
sumber