大数据产品的备份及恢复
- Hbase
- Distcp方式
- 整體下載上傳方式
- CopyTable備份
- Export工具
- elasticsearch
- 建立備份快照數(shù)據(jù)掛載點
- 建立快照倉儲repository
- 建立snapshot快照備份
- 恢復snapshot快照數(shù)據(jù)
- 原集群恢復
- 新集群恢復
- HDFS
?
Hbase的備份恢復
hbase數(shù)據(jù)備份策略有兩類:
?進行離線備份時,必須全部關閉Hbase集群,或者disable所有表,然后通過distcp命令將HDFS上的Hbase數(shù)據(jù)復制到另外或者同一個集群的不同目錄就可以了。
如果兩個集群互不可見,那只能將數(shù)據(jù)文件下載到本地再上傳(整體下載上傳方式)。
??
- Distcp方式
如果是想將數(shù)據(jù)遷移到另一個Hbase集群的話,另一個hbase集群必須關閉,并且數(shù)據(jù)要復制到hbase.rootdir下。
①在新備份集群下建立一個文件夾,用來保存需要備份的數(shù)據(jù):
$HADOOP_HOME/bin/hadoop fs -mkdir /backup?
②在舊集群執(zhí)行:
$HADOOP_HOME/bin/hadoop distcp hdfs://maste:9000/hbase hdfs://backup:9000/backuphdfs://maste:9000/hbase 是取的hbase-site.xml文件中hbase.rootdir的屬性值(一定要參照rootdir的值,因為namenode做了HA的話,這里是有差異的)
hdfs://backup:9000/backup 是備份數(shù)據(jù)的接收地址。
執(zhí)行命令以后hadoop會啟動一個MapReduce任務,可以在50030頁面進行查看;
執(zhí)行成功后,在新集群執(zhí)行
$HADOOP_HOME/bin/hadoop fs -ls /backup?會發(fā)現(xiàn)backup目錄下有一個hbase目錄
③如果需要使用備份數(shù)據(jù)進行恢復的話,將數(shù)據(jù)移動到hbase.rootdir下,然后啟動hbase即可。
如果使用ambari的話,路徑會有些差異,這里給出完整例子(從集群mycluster移動到集群mc2,其中mc2的active namenode是node1.mc.cn)
#ssh連接mycluster機器的某節(jié)點 su hdfs#備份到本集群 hadoop distcp hdfs://mycluster/apps/hbase/data hdfs://mycluster/backup#遷移到另一集群mc(在mc上恢復) hadoop distcp hdfs://mycluster/apps/hbase/data hdfs://node1.mc.cn:8020/apps/hbase/#備份到另一集群mc(不恢復,只備份) hadoop distcp hdfs://mycluster/apps/hbase/data hdfs://node1.mc.cn:8020/backup如果要恢復數(shù)據(jù)的話,需要確認數(shù)據(jù)目錄的Owner是hbase,否則hbase無法成功啟動
? hadoop fs -chown -R hbase:hdfs /apps/hbase/data
??
- 整體下載上傳方式
當兩集群互不可見時,如果要離線備份恢復,可以使用這種方式。
①將備份集群和恢復集群都關閉
②下載待備份數(shù)據(jù)到本地
③將備份數(shù)據(jù)上傳到待恢復集群
④啟動集群
示例:
#注意命令執(zhí)行的所在節(jié)點#將待備份數(shù)據(jù)下載到本地 hadoop fs -copyToLocal /apps/hbase/data ~/backup/#將本地數(shù)據(jù)打包,拷貝到其他集群#在其他集群將打包后數(shù)據(jù)解壓,并上傳到hdfs hadoop fs -put ~/backup/* /apps/hbase/??
- CopyTable備份
使用CopyTable可以將一張表的數(shù)據(jù)備份到另外一張表,也可以備份到另一集群的其他表中,要注意的是CopyTable備份不支持多版本。
①在新備份集群創(chuàng)建一張表,該表需要與備份表相同的結構:
?
②使用命令進行全表備份:
$HBASE_HOME/bin/hbase org.apache.hadoop.hbase.mapreduce.CopyTable --new.name=newtable --peer.adr=zookeeperhbase.zookeeper.quorum:2181:/hbase oldtable也可以只備份指定的某個列簇,下面的命令表示備份oldtable表中的列簇a到newtable表中
$HBASE_HOME/bin/hbase org.apache.hadoop.hbase.mapreduce.CopyTable --families=a --new.name=newtable --peer.adr=zookeeperhbase.zookeeper.quorum:2181:/hbase oldtable??
- Export工具
備份為Hdfs文件,支持數(shù)據(jù)多版本。此工具一次只能操作一張表,導出的順序文件可以通過Import工具導入HBase。
①使用Export命令將表數(shù)據(jù)寫為文件
$HBASE_HOME/bin/hbase org.apache.hadoop.hbase.mapreduce.Export oldtable /backup/tableName查看HDFS上的backup目錄會發(fā)現(xiàn)三個文件(_SUCCESS、_logs、part-m-00000):
hadoop fs -ls /backup?
②使用distcp或者copyToLocal的方式將備份的數(shù)據(jù)從原h(huán)dfs集群拷貝到目標hdfs集群
③需要先建一個表來接收備份的表
create 'newtable','a','b'?
④使用Import命令導入存儲文件,恢復Hbase數(shù)據(jù)
$HBASE_HOME/bin/hbase org.apache.hadoop.hbase.mapreduce.Import newtable /backup/tableName?
?
ElasticSearch的備份恢復
總體步驟:
- 建立備份快照數(shù)據(jù)掛載點
- 建立快照倉儲repository
- 建立snapshot快照備份
- 恢復snapshot快照數(shù)據(jù)
?
1.建立備份快照數(shù)據(jù)掛載點
?如果這個鏈接失效,可訪問官網(wǎng)http://fedoraproject.org/wiki/EPEL
?
#掛載共享目錄 sshfs root@data.company.cn:/mnt/es-data $elasticsearch_HOME/backup -o allow_other
?
?
2.建立快照倉儲repository
?
?添加倉庫路徑(字符串中的路徑就是在第一步中設定的共享目錄路徑)
path.repo: ["/opt/module/elasticsearch-2.4.2/backup"]?
?
?
3.建立snapshot快照備份
?快照指定索引(去掉參數(shù)數(shù)據(jù)的話,就是快照所有索引)
?
curl -X PUT \http://192.168.0.38:9200/_snapshot/mybackup/snapshot_1 \-d '{"indices": "myindex" }'#附 #查看索引快照情況 curl -X GET http://192.168.0.38:9200/_snapshot/mybackup/snapshot_1/_status?pretty#刪除快照(也可用于中斷正在進行的快照) curl -X DELETE http://192.168.0.38:9200/_snapshot/mybackup/snapshot_1??
4.恢復snapshot快照數(shù)據(jù)
==========================
#這里只是舉例
?
?
??
?執(zhí)行下面語句就可以看到備份的數(shù)據(jù)了
curl -X GET http://192.168.0.38:9200/yuqing/article/_search??
參考:
- Hbase數(shù)據(jù)備份和恢復
-
hbase 備份及恢復
-
?
Elasticsearch:權威指南?
?
轉載于:https://www.cnblogs.com/TiestoRay/p/6807520.html
總結
以上是生活随笔為你收集整理的大数据产品的备份及恢复的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle 在数据库打开状态下进行备份
- 下一篇: 经典游戏制作教程[zz]