上饶网站制作需要多少钱,网站百度地图标注,手机网站APP网络推广商城网站,服务器网站管理软件Hbase Distcp方式整体下载上传方式CopyTable备份Export工具elasticsearch 建立备份快照数据挂载点建立快照仓储repository建立snapshot快照备份恢复snapshot快照数据 原集群恢复新集群恢复HDFSHbase的备份恢复 hbase数据备份策略有两类#xff1a; 离线备份#xff08;关闭Hb…Hbase Distcp方式整体下载上传方式CopyTable备份Export工具elasticsearch 建立备份快照数据挂载点建立快照仓储repository建立snapshot快照备份恢复snapshot快照数据 原集群恢复新集群恢复HDFS Hbase的备份恢复 hbase数据备份策略有两类 离线备份关闭Hbase集群进行全备份包括distcp方式、整体下载上传在线备份在线对集群进行备份存在数据丢失的风险 进行离线备份时必须全部关闭Hbase集群或者disable所有表然后通过distcp命令将HDFS上的Hbase数据复制到另外或者同一个集群的不同目录就可以了。 如果两个集群互不可见那只能将数据文件下载到本地再上传整体下载上传方式。 Distcp方式如果是想将数据迁移到另一个Hbase集群的话另一个hbase集群必须关闭并且数据要复制到hbase.rootdir下。 ①在新备份集群下建立一个文件夹,用来保存需要备份的数据 $HADOOP_HOME/bin/hadoop fs -mkdir /backup ②在旧集群执行 $HADOOP_HOME/bin/hadoop distcp hdfs://maste:9000/hbase hdfs://backup:9000/backup hdfs://maste:9000/hbase 是取的hbase-site.xml文件中hbase.rootdir的属性值一定要参照rootdir的值因为namenode做了HA的话这里是有差异的 hdfs://backup:9000/backup 是备份数据的接收地址。 执行命令以后hadoop会启动一个MapReduce任务可以在50030页面进行查看 执行成功后在新集群执行 $HADOOP_HOME/bin/hadoop fs -ls /backup 会发现backup目录下有一个hbase目录 ③如果需要使用备份数据进行恢复的话将数据移动到hbase.rootdir下然后启动hbase即可。 如果使用ambari的话路径会有些差异这里给出完整例子从集群mycluster移动到集群mc2其中mc2的active namenode是node1.mc.cn #ssh连接mycluster机器的某节点
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如果要恢复数据的话需要确认数据目录的Owner是hbase否则hbase无法成功启动 hadoop fs -chown -R hbase:hdfs /apps/hbase/data 整体下载上传方式当两集群互不可见时如果要离线备份恢复可以使用这种方式。 ①将备份集群和恢复集群都关闭 ②下载待备份数据到本地 ③将备份数据上传到待恢复集群 ④启动集群 示例 #注意命令执行的所在节点#将待备份数据下载到本地
hadoop fs -copyToLocal /apps/hbase/data ~/backup/#将本地数据打包拷贝到其他集群#在其他集群将打包后数据解压并上传到hdfs
hadoop fs -put ~/backup/* /apps/hbase/ CopyTable备份使用CopyTable可以将一张表的数据备份到另外一张表也可以备份到另一集群的其他表中要注意的是CopyTable备份不支持多版本。①在新备份集群创建一张表该表需要与备份表相同的结构 create newtable,a,b ②使用命令进行全表备份 $HBASE_HOME/bin/hbase org.apache.hadoop.hbase.mapreduce.CopyTable --new.namenewtable --peer.adrzookeeperhbase.zookeeper.quorum:2181:/hbase oldtable 也可以只备份指定的某个列簇下面的命令表示备份oldtable表中的列簇a到newtable表中 $HBASE_HOME/bin/hbase org.apache.hadoop.hbase.mapreduce.CopyTable --familiesa --new.namenewtable --peer.adrzookeeperhbase.zookeeper.quorum:2181:/hbase oldtable Export工具备份为Hdfs文件支持数据多版本。此工具一次只能操作一张表导出的顺序文件可以通过Import工具导入HBase。 ①使用Export命令将表数据写为文件 $HBASE_HOME/bin/hbase org.apache.hadoop.hbase.mapreduce.Export oldtable /backup/tableName 查看HDFS上的backup目录会发现三个文件(_SUCCESS、_logs、part-m-00000) hadoop fs -ls /backup ②使用distcp或者copyToLocal的方式将备份的数据从原hdfs集群拷贝到目标hdfs集群 ③需要先建一个表来接收备份的表 create newtable,a,b ④使用Import命令导入存储文件恢复Hbase数据 $HBASE_HOME/bin/hbase org.apache.hadoop.hbase.mapreduce.Import newtable /backup/tableName ElasticSearch的备份恢复 总体步骤 建立备份快照数据挂载点建立快照仓储repository建立snapshot快照备份恢复snapshot快照数据 1.建立备份快照数据挂载点 安装EPEL rpm -i https://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm 如果这个链接失效可访问官网http://fedoraproject.org/wiki/EPEL 安装sshfs yum -y install sshfs fuse 目录共享 #假设将数据共享到节点data.company.cn的目录 /mnt/es-data/最好不要放在系统盘所在目录在该节点上执行
mkdir -m 777 /mnt/es-data#假设es集群的共享目录是 $elasticsearch_HOME/backup
#在es集群的每个节点上执行
cd $elasticsearch_HOME
mkdir -m 777 backup#挂载共享目录
sshfs rootdata.company.cn:/mnt/es-data $elasticsearch_HOME/backup -o allow_other 2.建立快照仓储repository 修改ES配置文件 vi config/elasticsearch.yml 添加仓库路径字符串中的路径就是在第一步中设定的共享目录路径 path.repo: [/opt/module/elasticsearch-2.4.2/backup] 重启elasticsearch kill jps |grep Elasticsearch |cut -c1-5
bin/elasticsearch -d 创建仓库 curl -X PUT \http://192.168.0.38:9200/_snapshot/mybackup \-d {type: fs,settings:{compress: true,location:/opt/module/elasticsearch-2.4.2/backup}
}#删除仓库
curl -X DELETE http://192.168.0.38:9200/_snapshot/mybackup 3.建立snapshot快照备份 快照指定索引去掉参数数据的话就是快照所有索引 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快照数据 如果备份数据要在新集群恢复则需要先在新集群创建相同结构的index及type并创建快照仓储参照第二步 curl -X POST \http://192.168.0.39:9200/yuqing \-d {settings:{number_of_shards:5,number_of_replicas:1},mappings:{article:{dynamic:strict,properties:{title:{type:string,store:yes,index:analyzed,analyzer: ik_max_word,search_analyzer: ik_max_word},types:{type:string,store:yes,index:analyzed,analyzer: ik_max_word,search_analyzer: ik_max_word},url:{type:string,store:no,index:no}}}}
}#这里只是举例 需要先关闭index否则会出现问题【cannot restore index [myindex] because its open】 curl -X POST http://192.168.0.38:9200/yuqing/_close 恢复数据去掉参数即可恢复所有索引否则恢复指定索引 myindex curl -X POST http://192.168.0.38:9200/_snapshot/mybackup/snapshot_1/_restore \
-d {indices: myindex
}#查看恢复进度
curl -X GET http://192.168.0.38:9200/yuqing/_recovery#取消恢复(索引yuqing正在被恢复)
curl -X DELETE http://192.168.0.38:9200/yuqing 重新开启index curl -X POST http://192.168.0.38:9200/yuqing/_open 执行下面语句就可以看到备份的数据了 curl -X GET http://192.168.0.38:9200/yuqing/article/_search 参考 Hbase数据备份和恢复 hbase 备份及恢复 Elasticsearch权威指南 转载于:https://www.cnblogs.com/TiestoRay/p/6807520.html