HBase
 sql >> Teknologi Basis Data >  >> NoSQL >> HBase

Mesin Pemroses Data Besar – Yang mana yang saya gunakan?:Bagian 1

Pos blog ini dipublikasikan di Hortonworks.com sebelum merger dengan Cloudera. Beberapa tautan, sumber daya, atau referensi mungkin tidak lagi akurat.

Terima kasih khusus kepada Bill Preachuk dan Brandon Wilson untuk meninjau dan memberikan keahlian mereka

Pengantar

Penyimpanan kolom adalah topik yang sering dibahas di dunia pemrosesan dan penyimpanan data besar saat ini – ada ratusan format, struktur, dan pengoptimalan di mana Anda dapat menyimpan data Anda dan bahkan lebih banyak cara untuk mengambilnya tergantung pada apa yang Anda rencanakan untuk dilakukan dengan itu. Banyaknya pilihan ini muncul karena kebutuhan untuk tidak hanya menyerap data dengan cepat menggunakan alat Pemrosesan Transaksional On-Line (OLTP), tetapi juga karena kebutuhan untuk menggunakan dan menganalisis data dengan efisiensi yang lebih besar menggunakan Pemrosesan Analitik On-Line (OLAP) peralatan. Ribuan kasus penggunaan yang berbeda masing-masing memiliki kebutuhan spesifik mereka sendiri dan dengan demikian, banyak pilihan telah muncul. Misalnya, membaca data ticker pasar saham membutuhkan pola pikir yang sama sekali berbeda dari menganalisis metrik kualitas di lini manufaktur. Dengan semua pilihan ini, mudah tersesat saat menavigasi ke tujuan akhir Anda:memilih alat yang sesuai untuk Anda.

HDP menggabungkan sejumlah solusi penyimpanan, yang masing-masing dibuat khusus untuk kasus penggunaan tertentu. Kami ingin memulai seri blog ini dengan membicarakan tiga alat/mesin berikut dan format penyimpanan terkaitnya:

  • Apache Hive menggunakan Apache ORC sebagai format penyimpanan kolom efisien yang memungkinkan  kinerja untuk pemrosesan kueri OLAP dan SQL mendalam
  • Apache Phoenix/Apache HBase bersama-sama membentuk database OLTP yang memungkinkan kueri waktu-nyata atas miliaran catatan dan menawarkan pencarian berbasis kunci acak yang cepat serta pembaruan
  • Apache Druid adalah penyimpanan data berkinerja tinggi yang memungkinkan analisis deret waktu real-time pada aliran peristiwa dan analisis OLAP atas data historis dengan latensi yang sangat rendah

Dalam artikel ini, kami bermaksud untuk mengartikulasikan alat mana yang sesuai untuk kasus penggunaan tertentu, membandingkan dan membedakan berbagai alat, dan memberikan panduan dasar untuk memilih alat atau kumpulan alat yang sesuai untuk menangani kasus penggunaan Anda.

Ini seperti bermain Tetris – setiap bagian memiliki ceruk yang berbeda tetapi masing-masing menambahkan nilai unik ke struktur yang lebih besar

Pemrosesan Big Data dan Persamaannya

Data dikelompokkan berdasarkan kolom dalam penyimpanan karena kita sering mencoba mempersempit jumlah, rata-rata, atau perhitungan lain pada kolom tertentu. Bayangkan Anda adalah maskapai penerbangan yang mencoba memahami berapa banyak bahan bakar yang harus diberikan kepada pesawat saat merapat – Anda mungkin ingin menghitung rata-rata mil yang diterbangkan oleh setiap penerbangan dari tabel data perjalanan-penerbangan. Ini akan membutuhkan melakukan fungsi rata-rata pada satu kolom. Kami akan menyimpan data ini dalam format kolom karena pembacaan sekuensial pada disk cepat, dan apa yang ingin kami lakukan dalam hal ini adalah membaca satu kolom penuh dari tabel secara berurutan (dan kemudian melakukan perhitungan rata-rata).

Ada banyak perbedaan antara mesin ini tetapi terlepas dari mesin pemrosesan data yang Anda pilih, Anda akan mendapat manfaat dari beberapa kesamaan. Salah satunya adalah fitur shared caching. Masing-masing dari ketiga mesin ini bekerja bahu-membahu dengan caching dalam memori untuk meningkatkan kinerja pemrosesannya tanpa mengubah format penyimpanan backend, mencapai waktu respons sub-detik. HBase memiliki BlockCache, Hive memiliki lapisan LLAP IO, dan Druid memiliki beberapa opsi caching dalam memori. Seringkali, bagian mahal dari melayani kueri melibatkan penguraian permintaan dan pergi ke penyimpanan persisten untuk mengambil subset data yang diminati pengguna. Namun, seluruh langkah itu dapat dihindari saat menggunakan mekanisme caching dalam memori sebanyak format penyimpanan kolumnar gunakan, memungkinkan proses untuk mencapai memori untuk data yang ditanyakan sebelumnya dalam sepersekian detik. Mari kita kembali ke contoh perhitungan bahan bakar kita:katakanlah saya baru saja meminta rata-rata mil terbang untuk semua penerbangan di perusahaan saya, tetapi menyadari bahwa penerbangan domestik akan memiliki kebutuhan bahan bakar yang jauh berbeda dari penerbangan internasional. Saya kemudian ingin memfilter kueri saya sebelumnya dengan klausa WHERE country='US' (atau kode negara yang setara). Pola kueri ini sangat umum untuk eksplorasi data. Karena kita sudah memiliki data kueri sebelumnya di memori, hasil kueri ini dapat dikembalikan tanpa harus melakukan pembacaan disk yang mahal.

Struktur lapisan LLAP Hive – bagian dari ruang memorinya digunakan untuk caching, sementara penyimpanan jangka panjang ada di HDFS. HBase dan Druid juga memiliki konsep cache dan penyimpanan yang serupa.

Kesamaan lain ada di pintasan yang digunakan masing-masing mesin ini untuk membidik data spesifik yang sedang ditanyakan. HBase memiliki akses acak O(1) berbasis HashMap, Druid menggunakan indeks bitmap terbalik untuk mengetahui nilai kolom mana yang berada di baris mana, dan tabel Hive memiliki statistik, indeks, dan partisi untuk akses data pintasan. Fitur-fitur ini memungkinkan mesin untuk menggabungkan cara data disimpan dengan cara diakses, memungkinkan analitik cepat sambil mengoptimalkan efisiensi perangkat keras dan memaksimalkan penggunaan CPU dan RAM.

Kesamaan terakhir adalah kesiapan perusahaan dari masing-masing mesin ini. Di sisi redundansi data, ketiga mesin ini menggunakan HDFS sebagai mekanisme penyimpanan dalam; faktor replikasi HDFS 3x memastikan bahwa salinan data ada di tempat lain bahkan jika dua node gagal secara bersamaan. Data dapat segera direplikasi sekali lagi ke node yang sehat untuk mempertahankan redundansi. Pada topik toleransi kesalahan dalam sebuah cluster, setiap alat mengisi celah dalam beberapa cara. HBase menawarkan replikasi wilayah, Druid memiliki duplikasi komponen master dan pekerja serta peningkatan faktor replikasi pada HDFS, dan Hive memiliki HDFS bersama logika toleransi kesalahan kerangka YARN. Kesiapan perusahaan memastikan mesin ini tahan terhadap kegagalan dan siap bekerja dalam produksi sejak hari pertama.

Perbedaan Antara Mesin Pemroses Data Besar kami

Apa cara terbaik untuk menyerap data? Setelah Anda menyerap data Anda, bagaimana Anda dengan cepat menarik wawasan darinya? Mari selami bagaimana ketiga mesin pemrosesan data besar ini mendukung rangkaian tugas pemrosesan data ini

Mesin ini terkadang digabungkan secara mental dan dipikirkan secara serupa karena kemampuannya untuk menyimpan serta memproses Big Data, tetapi seperti yang akan kita ketahui, mereka dipilih untuk kasus penggunaan dan tujuan yang secara khusus sesuai dengan kekuatannya. Anda akan melihat bahwa kumpulan alat yang terdapat di Hortonworks Data Platform sangat cocok untuk beban kerja data besar apa pun yang dapat Anda gunakan, terutama dengan HDP 3.0 dan kemampuan database waktu nyata yang telah kami perkenalkan.

Hive adalah mesin OLAP yang mewakili kasus penggunaan terbesar, paling sering menggunakan Hadoop Distributed File System (HDFS) sebagai lapisan penyimpanannya untuk memungkinkan penyimpanan hampir semua jenis data. Itu dapat menanyakan, memproses, dan menganalisis data teks tidak terstruktur, file CSV, XML, JSON semi-terstruktur, Parket kolom, dan sejumlah format lainnya. Hive juga mendukung media penyimpanan alternatif seperti penyimpanan Cloud, Isilon, dan lainnya. Standar penyimpanan de facto untuk Hive adalah ORC, yang mengoptimalkan paling efisien &menuai manfaat dari penyimpanan kolom. Setelah dikonversi ke ORC, data Anda dikompresi dan kolom di tabel Anda disimpan secara berurutan di disk, memungkinkan lapisan cache dalam memori Hive LLAP untuk menarik data dari disk sekali dan menyajikannya dari memori beberapa kali. Kombinasi Hive+LLAP digunakan untuk analisis ad-hoc, menghitung agregat besar, dan pelaporan latensi rendah. Contoh penggunaan yang bagus untuk Hive adalah menjalankan serangkaian laporan dasbor untuk pengguna setiap hari; kueri berulang tidak hanya memanfaatkan cache LLAP, tetapi juga fitur 'Cache Hasil Kueri' – yang mengembalikan hasil hampir instan jika data tidak berubah (Selain:Cache Hasil Kueri adalah fitur yang tersedia di Hive 3.0 – dirilis pada HDP 3.0). Di samping itu, Hive Data Warehouse adalah penggunaan yang hebat dari analitik ad-hoc yang mampu dilakukan oleh Hive; pengguna dapat menggabungkan data bersama, menjalankan kueri bersamaan, dan menjalankan transaksi ACID. Pertimbangkan Hive sebagai jack SQL dari semua perdagangan dalam hal itu, sementara dua mesin lainnya memberikan kinerja yang sangat cepat untuk kasus penggunaan khusus tertentu.

Mesin kedua kami, HBase, adalah penyimpanan nilai kunci terdistribusi yang memiliki kemampuan membaca, menulis, memperbarui, dan menghapus secara acak. HBase (varian NoSQL) dirancang  untuk menjadi mesin OLTP, memungkinkan arsitektur operasi transaksional volume tinggi – pikirkan platform perpesanan dengan pesan konstan yang dipertukarkan antara pengguna atau transaksi yang dihasilkan dalam sistem keuangan. HBase sangat efisien dalam memasukkan data dengan cepat, menyimpannya, dan menyajikannya kembali – Sisipan/Pembaruan/Hapus acak dengan latensi sangat rendah. Apa yang tidak dirancang untuk menggabungkan dan menggabungkan data – fungsi ini dicapai melalui Phoenix, lapisan SQL dan mesin di atas HBase, tetapi tidak disarankan untuk jumlah data yang lebih besar karena data tidak terstruktur dengan cara untuk mencapai optimal kinerja (gunakan Hive sebagai gantinya). Singkatnya, HBase hebat dalam memproses volume tinggi operasi Buat-Perbarui-Hapus, tetapi gagal ketika tiba saatnya untuk menyajikan data tersebut dalam format yang dapat dikonsumsi untuk pengguna.

Terakhir, Druid adalah mesin ketiga dan yang cocok untuk beban kerja deret waktu OLAP latensi rendah serta pengindeksan data streaming secara real-time. Druid menyediakan kueri OLAP kecepatan kubus untuk cluster Anda. Sifat time-series Druid adalah landasan mesin; itu dirancang dengan cara ini karena waktu adalah filter utama ketika data berbasis waktu dianalisis. Pikirkan ketika Anda menganalisis waktu penerbangan untuk memesan perjalanan – Saya ingin mengetahui biaya penerbangan terendah ke Italia dalam jangka waktu 2 minggu ini. Druid cocok dengan ceruk karena sangat cepat menyerap data serta menemukannya saat diminta. Di sisi lain juga memungkinkan pengguna bisnis dan analis untuk menanyakan data dan memahaminya melalui Superset, lapisan visualisasi yang terkait erat dengan Druid. Druid unggul dalam menunjukkan dengan tepat beberapa baris data di antara ratusan juta atau miliaran dalam waktu kurang dari satu detik, dan juga unggul dalam menghitung nilai agregat pada volume data yang sama dengan sangat cepat. Namun itu tidak bergabung dan karena itu tidak dapat digunakan untuk menggabungkan kumpulan data bersama untuk analisis. Jika Anda berencana untuk menganalisis kombinasi kumpulan data di Druid, Anda sebaiknya melakukan pra-gabung data sebelum memasukkannya ke Druid atau menggunakan Hive (dan tabel Hive yang didukung Druid) untuk melakukan penggabungan. Dengan kata lain, Druid sangat cocok dengan peran sebagai perhentian terakhir untuk data Anda setelah diproses dan diubah menjadi bagaimana pengguna bisnis Anda akan mengaksesnya. Druid sangat bagus untuk analis bisnis karena mereka dapat masuk ke Superset dan memvisualisasikan metrik dalam bentuk dasbor tanpa harus menulis kueri apa pun; mereka hanya menggunakan GUI untuk memilih sumber data kueri dan filter. Ini juga bagus sebagai sumber data pendukung untuk dasbor sistem, baik operasional maupun analitis, karena waktu kuerinya yang cepat.

Inilah salah satu cara Anda dapat memecah pengambilan keputusan tentang alat yang akan digunakan untuk beban kerja Anda:

HBase Sarang Druid
Latensi sangat rendah Akses acak (pencarian berbasis kunci) ACID, basis data waktu nyata, EDW OLAP latensi rendah, kueri serentak
OLTP volume besar Antarmuka SQL terpadu, JDBC Agregasi, penelusuran
Pembaruan Pelaporan, kumpulan Deret waktu
Hapus Gabung, agregat besar, ad-hoc Penerapan waktu-nyata

SQL Terpadu

Kami telah membahas beberapa sistem hingga saat ini dan mereka masing-masing memiliki cara sendiri untuk mengakses data mereka. Ini bagus ketika pengguna Anda mengetahui cara kerja semua alat ini, tetapi mereka mungkin berada dalam kurva pembelajaran sebelum mereka dapat mencapai produktivitas penuh jika mereka berasal dari dunia SQL, SQL, dan lebih banyak SQL seperti yang dilakukan sebagian besar analis. Inilah mengapa kami mencoba membuat interaksi ini sesederhana mungkin; dengan Hive 3.0 di HDP 3.0, Anda dapat menggunakan sintaks HQL seperti SQL dari Hive untuk berinteraksi dengan begitu banyak penyimpanan data yang berbeda di ruang ini. Hive dapat digunakan sebagai portal untuk mengakses dan memodifikasi Druid, HBase, dan apa pun yang menyediakan antarmuka dan driver JDBC. Hive dapat digunakan untuk mengelola tugas penyerapan Druid yang mendengarkan Kafka, menyediakan cara sederhana untuk penyerapan waktu nyata. Dan akhirnya, Hive dapat digunakan untuk menyatukan semuanya – simpan data Anda di tempat yang paling masuk akal dan akses dari satu tempat. Bergabunglah bersama, bahkan mungkin menyimpan hasil baru itu di lokasi lain. Kemungkinannya banyak, tetapi antarmuka telah sangat disederhanakan sehingga basis pengguna Anda dapat menghabiskan lebih sedikit waktu untuk mempelajari alat lain dan lebih banyak waktu untuk memberikan nilai bagi bisnis.

Kesimpulan

Hive, Druid, dan HBase semuanya memiliki tempat yang berbeda dalam arsitektur data seperti yang telah kita lihat dari analisis sebelumnya. Namun mereka adalah alat pelengkap; Anda dapat menyerap data transaksional dengan HBase dengan pencarian cepatnya, memindahkan data itu ke Druid untuk penelusuran/agregasi cepat, dan meminta Hive mengintegrasikan keduanya bersama dengan data yang dikelola Hive sendiri untuk memungkinkan pengguna menggabungkan data di mana pun ia berada satu pandangan dan banyak wawasan. Dengan pendekatan ini, Druid menyimpan data yang dapat diakses dengan sendirinya tetapi fungsionalitas itu ditambah oleh Hive, yang dapat menarik data Druid dan menggabungkannya dengan data tambahan. Tambahkan ke ini peningkatan utama yang ikut bermain dengan Hive 3.0, tidak sedikit di antaranya adalah tampilan yang terwujud, integrasi yang ditingkatkan dengan Druid serta banyak mesin lainnya, dan peningkatan fungsionalitas seperti gudang data, dan Anda punya grup alat yang dapat menyelesaikan hampir semua kasus penggunaan.

Arsitektur seperti yang disebutkan di atas menghadirkan yang terbaik dari setiap alat untuk mengoptimalkan alur kerja Anda dan pada saat yang sama mengabstraksikan detailnya untuk pengguna yang hanya peduli dengan data. Arsitek menyiapkan saluran pipa, meletakkan data di tempatnya berdasarkan kasus penggunaan. Itu kemudian mengarah ke analis data, yang menggunakan Hive sebagai antarmuka tunggal mereka untuk mendapatkan pengetahuan dan wawasan. Mereka dapat menemukan pola menarik dalam data daripada mengkhawatirkan di mana data disimpan atau mempelajari sintaks baru untuk mengaksesnya – Anda akan terkejut mengetahui seberapa sering kita melihat ini di dunia.

Pada titik ini kami telah menunjukkan kekuatan, kelemahan, dan praktik terbaik setiap alat; kami harap Anda pergi dengan pemahaman yang lebih baik tentang apa yang cocok di mana serta gambaran yang lebih besar dari menggabungkan ketiganya untuk mendapatkan hasil terbaik.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Spark di HBase dengan Spark shell

  2. Replikasi Apache HBase:Tinjauan Operasional

  3. HBase BlockCache 101

  4. Apache Phoenix untuk CDH

  5. Menyebarkan aplikasi pada CDP Operational Database (COD)