HBase 增量备份
文中可能涉及到的API: Hadoop/HDFS:http://hadoop.apache.org/common/docs/current/api/ HBase: http://hbase.apache.org/apido
文中可能涉及到的API:
Hadoop/HDFS:
HBase: ?overview-summary.html
Begin!
使用了HBase提供的Export与Import工具。
Export:
Import:
看到这两个类所在目录我们了解到,Export与Import的实质是MapReduce任务。
关于这两个工具API中写的很清楚:
Export an HBase table. Writes content to sequence files up in HDFS. Use Import to read it back in again.
将HBase的表导出为HDFS的sequence files。
Export如其名,只是导出工具,如何完成备份功能呢?
二、功能实验
测试过程涉及很多数据,这里仅提供重要结论:
1、Export是以表为单位导出数据的,若想完成整库的备份需要执行n遍。
2、Export在shell中的调用方式类似如下格式:
./hbase org.apache.hadoop.hbase.mapreduce.Export 表名 备份路径 (版本号) (起始时间戳) (结束时间戳)
Export [-D
括号内为可选项,例如
./hbase org.apache.hadoop.hbase.mapreduce.Export 'contentTbl' /home/codeevoship/contentBackup20120920 1 123456789
备份contentTbl这张表到/home/codeevoship/contentBackup20120920目录下(最后一级目录必须由Export自己创建),,版本号为1,备份记录从123456789这个时间戳开始到当前时间内所有的执行过put操作的记录。
注意:为什么是所有put操作记录?因为在备份时是扫描所有表中所有时间戳大于等于123456789这个值的记录并导出。如果是delete操作,则表中这条记录已经删除,扫描时也无法获取这条记录信息。
3、当不指定时间戳时,备份的就是当前完整表中的数据。
三、实施细节
1、如何在增量备份时体现出对数据的删除操作?
由于Export按时间戳备份只能反映出Put过的表项,若我在一个备份(增量包)时间区间内删除了某条已有记录,当数据库回档时,这条被删除的记录又会出现在我的表中。
因此,我将所有的删除操作替换为Put操作:
a、给每行数据添加了一个无效标志位,在删除记录时使用Put给该标志位写为1。
b、在单条查询时,根据rowKey取出记录后会根据这个标志位判断这条记录是否已被“删除”,以此决定是否返回这条记录。在多条查询时(scan),使用列值过滤器,过滤出所有这个标志位不为1的记录。(可参见我之前的《HBase 条件查询》 )
2、在备份过程中新增的数据是否会影响备份内容的准确性?
可以指定小于等于当前时刻的结束时间戳,以便将需要备份的数据范围明确。
3、如何备份到其他机器?
a、Export支持提供地址的备份。最简单的方法,直接把远端存储挂载到本地,然后使用本地路径。
b、使用API调用时,Path如果使用file:///home/codeevoship/backup,代表使用本地文件系统。若直接写为/home/codeevoship 代表使用HDFS层的路径。在使用Shell调用时则相反。
4、如何使用API调用?
通过MapReduce的Job:
先通过Export类提供的方法创建Job实例,再调用Job的()或(boolean verbose);异步与同步。
四、其他解决方案
1、HDFS层的HDFS Replication或DistCp
2、Cluster Replication

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Keluaran terbaharu Apple bagi sistem iOS18, iPadOS18 dan macOS Sequoia telah menambah ciri penting pada aplikasi Photos, yang direka untuk membantu pengguna memulihkan foto dan video yang hilang atau rosak dengan mudah disebabkan pelbagai sebab. Ciri baharu ini memperkenalkan album yang dipanggil "Dipulihkan" dalam bahagian Alat pada apl Foto yang akan muncul secara automatik apabila pengguna mempunyai gambar atau video pada peranti mereka yang bukan sebahagian daripada pustaka foto mereka. Kemunculan album "Dipulihkan" menyediakan penyelesaian untuk foto dan video yang hilang akibat kerosakan pangkalan data, aplikasi kamera tidak disimpan ke pustaka foto dengan betul, atau aplikasi pihak ketiga yang menguruskan pustaka foto. Pengguna hanya memerlukan beberapa langkah mudah

Cara menggunakan MySQLi untuk mewujudkan sambungan pangkalan data dalam PHP: Sertakan sambungan MySQLi (require_once) Cipta fungsi sambungan (functionconnect_to_db) Fungsi sambungan panggilan ($conn=connect_to_db()) Laksanakan pertanyaan ($result=$conn->query()) Tutup sambungan ( $conn->close())

Untuk mengendalikan ralat sambungan pangkalan data dalam PHP, anda boleh menggunakan langkah berikut: Gunakan mysqli_connect_errno() untuk mendapatkan kod ralat. Gunakan mysqli_connect_error() untuk mendapatkan mesej ralat. Dengan menangkap dan mengelog mesej ralat ini, isu sambungan pangkalan data boleh dikenal pasti dan diselesaikan dengan mudah, memastikan kelancaran aplikasi anda.

Cara mengintegrasikan GoWebSocket dengan pangkalan data: Sediakan sambungan pangkalan data: Gunakan pakej pangkalan data/sql untuk menyambung ke pangkalan data. Simpan mesej WebSocket ke pangkalan data: Gunakan pernyataan INSERT untuk memasukkan mesej ke dalam pangkalan data. Dapatkan semula mesej WebSocket daripada pangkalan data: Gunakan pernyataan SELECT untuk mendapatkan semula mesej daripada pangkalan data.

Menggunakan fungsi panggil balik pangkalan data di Golang boleh mencapai: melaksanakan kod tersuai selepas operasi pangkalan data yang ditentukan selesai. Tambah tingkah laku tersuai melalui fungsi berasingan tanpa menulis kod tambahan. Fungsi panggil balik tersedia untuk operasi memasukkan, mengemas kini, memadam dan pertanyaan. Anda mesti menggunakan fungsi sql.Exec, sql.QueryRow atau sql.Query untuk menggunakan fungsi panggil balik.

Gunakan perpustakaan DataAccessObjects (DAO) dalam C++ untuk menyambung dan mengendalikan pangkalan data, termasuk mewujudkan sambungan pangkalan data, melaksanakan pertanyaan SQL, memasukkan rekod baharu dan mengemas kini rekod sedia ada. Langkah-langkah khusus ialah: 1. Sertakan penyata perpustakaan yang diperlukan 2. Buka fail pangkalan data 3. Buat objek Recordset untuk melaksanakan pertanyaan SQL atau memanipulasi data 4. Melintasi keputusan atau mengemas kini rekod mengikut keperluan tertentu;

Artikel ini akan memberikan pengenalan terperinci tentang cara memasang dan mendaftarkan aplikasi perdagangan bitcoin. Aplikasi perdagangan Bitcoin membolehkan pengguna mengurus dan berdagang kriptografi seperti Bitcoin. Artikel ini membimbing pengguna melalui proses pemasangan dan pendaftaran langkah demi langkah, termasuk memuat turun aplikasi, membuat akaun, melakukan pengesahan identiti, dan deposit pertama. Matlamat artikel ini adalah untuk menyediakan pemula dengan garis panduan yang jelas dan mudah difahami untuk membantu mereka dengan mudah memasuki dunia perdagangan bitcoin.

Artikel ini mencadangkan sepuluh aplikasi perdagangan mata wang digital teratas di dunia, termasuk Binance, OKX, Huobi Global, Coinbase, Kraken, Gate.io, Kucoin, Bitfinex, Gemini dan Bitstamp. Platform ini mempunyai ciri -ciri mereka sendiri dari segi kuantiti pasangan transaksi, kelajuan transaksi, keselamatan, pematuhan, pengalaman pengguna, dan lain -lain sebagai contoh, Binance dikenali dengan kelajuan transaksi yang tinggi dan perkhidmatan yang luas, sementara Coinbase lebih sesuai untuk orang baru. Memilih platform yang sesuai dengan anda memerlukan pertimbangan yang komprehensif terhadap keperluan anda sendiri dan toleransi risiko. Ketahui mengenai platform perdagangan mata wang digital arus perdana di dunia untuk membantu anda menjalankan perdagangan aset digital dengan selamat dan cekap.
