大数据产品的备份及恢复

  • Hbase
    • Distcp方式
    • 整体下载上传方式
    • CopyTable备份
    • Export工具
  • elasticsearch
    • 建立备份快照数据挂载点
    • 建立快照仓储repository
    • 建立snapshot快照备份
    • 恢复snapshot快照数据
      • 原集群恢复
      • 新集群恢复
  • HDFS

 

Hbase的备份恢复

hbase数据备份策略有两类:

  1. 离线备份(关闭Hbase集群进行全备份,包括distcp方式、整体下载上传)
  2. 在线备份(在线对集群进行备份,存在数据丢失的风险)

 进行离线备份时,必须全部关闭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.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文件,支持数据多版本。此工具一次只能操作一张表,导出的顺序文件可以通过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.建立备份快照数据挂载点

  1. 安装EPEL
    rpm -i https://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

     如果这个链接失效,可访问官网http://fedoraproject.org/wiki/EPEL

  2. 安装sshfs
    yum -y install sshfs fuse

     

  3. 目录共享
    #假设将数据共享到节点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 root@data.company.cn:
    /mnt/es-data $elasticsearch_HOME/backup -o allow_other

     

 

2.建立快照仓储repository

 

  1. 修改ES配置文件
    vi config/elasticsearch.yml

     添加仓库路径(字符串中的路径就是在第一步中设定的共享目录路径)

     path.repo: ["/opt/module/elasticsearch-2.4.2/backup"]

     

  2.  重启elasticsearch
    kill `jps |grep Elasticsearch |cut -c1-5`
    bin/elasticsearch -d

     

  3. 创建仓库
    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快照数据

  1. 如果备份数据要在新集群恢复,则需要先在新集群创建相同结构的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"}}}}
    }'
    ==========================
    #这里只是举例

     

  2. 需要先关闭index,否则会出现问题【cannot restore index [myindex] because it's open
    curl -X POST  http://192.168.0.38:9200/yuqing/_close

     

  3. 恢复数据(去掉参数即可恢复所有索引,否则恢复指定索引 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

      

  4. 重新开启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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/416784.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centos7 greenplum6.1开源版本编译

greenplum开源版本 https://greenplum.org/ 其官方手册 https://greenplum.org/documentation/ 其下载介质地址 https://github.com/greenplum-db/gpdb/releases 本次下载src-full https://github.com/greenplum-db/gpdb/releases/download/6.1.0/6.1.0-src-full.zip 编译参…

Centos7 Greenplum6.1开源版本集群部署

目录 1.前言 1.1参照文档 1.2部署包 1.3服务器环境 2 准备工作 2.1 Linux用户 2.2 主机名和hosts配置 2.3 防火墙 2.4 系统资源配置 2.5 暂时启用gpadmin sudo 2.6 复制配置文件到所有节点上 3 安装Greenplum DB 3.1 在Master节点上安装Greenplum DB 3.2 在Master…

转 C#对多个集合和数组的操作(合并,去重,判断)

在开发过程中.数组和集合的处理是最让我们担心.一般会用for or foreach 来处理一些操作.这里介绍一些常用的集合跟数组的操作函数. 首先举例2个集合A,B. List<int> listA new List<int> {1,2,3,5,7,9}; List<int> listB new List<int> {13,4,17,29…

centos7 postgresql9和postgis2.1插件编译部署

目录 依赖安装 下载编译libgeos 下载编译proj4 编译Postgresql9 编译PostGIS2 启动postgresql服务 开通外部网络访问 数据库开启PostGIS扩展 查看PostGIS版本 升级PostGIS版本 依赖安装 这个命令里面安装的包可能会多&#xff0c;由于是编译GreenPlum用的&#xff0…

三国人物共现网络

三国部分人物共现图 转载于:https://www.cnblogs.com/jzssuanfa/p/6814865.html

Spark单独集群模式部署

目录 网络配置 SSH 免密码登录 部署 执行测试 网络配置 192.168.81.157 node1 master 192.168.81.158 node2 slave1 192.168.81.159 node3 slave2 相同的配置先在一个节点上配置&#xff0c;配置完成后复制到其它节点上。 vi /etc/hosts 192.168.81.157 node1 192.168.…

flutter网络权限申请

在此文件&#xff08;android/src/main/AndroidManifest.xml&#xff09;中的manifest节点下添加如下代码&#xff1a; 注意&#xff0c;不是profile文件夹下的。 <uses-permission android:name"android.permission.READ_PHONE_STATE" /> <uses-permissio…

10.1.2 Document类型【JavaScript高级程序设计第三版】

JavaScript 通过Document 类型表示文档。在浏览器中&#xff0c;document 对象是HTMLDocument&#xff08;继承自Document 类型&#xff09;的一个实例&#xff0c;表示整个HTML 页面。而且&#xff0c;document 对象是window 对象的一个属性&#xff0c;因此可以将其作为全局对…

Ubuntu18.04 Flutter开发环境搭建

目录 flutter安装 android studio安装 Android Studio创建Flutter项目 运行应用程序 flutter安装 下载flutter https://flutter.dev/docs/development/tools/sdk/releases?tablinux https://storage.googleapis.com/flutter_infra/releases/stable/linux/flutter_linux_…

[原创] 毕设---在myeclipes中安装Hadoop开发插件

1、安装Hadoop开发插件hadoop安装包contrib/目录下有个插件hadoop-0.20.2-eclipse-plugin.jar&#xff0c;拷贝到myeclipse根目录下/dropins目录下。2、 启动myeclipse&#xff0c;打开Perspective&#xff1a;【Window】->【Open Perspective】->【Other...】->【Map…

ubuntu安装显卡驱动

1.卸载系统里低版本的英伟达驱动 sudo apt-get purge nvidia* 2.把显卡驱动加入PPA sudo add-apt-repository ppa:graphics-drivers sudo apt-get update 3.查找英伟达显卡驱动最新版本号 sudo apt-cache search nvidia 使用终端命令查看Ubuntu推荐的驱动版本 ubuntu-driver…

[转]cubemap soft shadow

https://community.arm.com/graphics/b/blog/posts/dynamic-soft-shadows-based-on-local-cubemap转载于:https://www.cnblogs.com/wantnon/p/6819103.html

flutter打开第三方应用

添加依赖 url_launcher: ^5.4.1 ————————main.dart import package:url_launcher/url_launcher.dart;void main() > runApp(MyApp());const String TITLEwhqtest;class MyApp extends StatelessWidget {overrideWidget build(BuildContext context) {return Materi…

vue2 watch引用类型 失败原因

vue中watch基本用法&#xff1a;  new Vue({el: #t1,data: {a: {b: 1,c: 2},},methods: {ch() {this.a.d5   //不打印ok 原理是watch只watch挂在data中的数据&#xff0c;初始化时给他们分别赋予setter与getter&#xff0c;如果是中途加上的属性&#xff0c;由于没有sette…

flutter webview浏览器及与js交互、打开第三方app

添加pubspec.yaml依赖 url_launcher: ^5.4.1 webview_flutter: ^0.3.181 --------------main.dart import package:flutter/material.dart; import package:url_launcher/url_launcher.dart; import package:webview_flutter/webview_flutter.dart;void main() > runApp(M…

Flutter1.12与原生Android交互(kotlin)

开发原生部分&#xff0c;还是点击Open for Editing in Android Studio好用&#xff0c;提示、自动引用功能都能正常使用。 -----------android/app/src/main/kotlin/com/glodon/gzzjy_app/MainActivity.kt import android.os.Bundle import android.os.PersistableBundle impo…

IP及端口号

IP&#xff1a;代表一台机器 端口号&#xff1a;每一个程序都有一个端口号与之对应 一个域名对应一个虚拟主机转载于:https://www.cnblogs.com/hwgok/p/6822372.html

Greenplum5单机部署连接报错 System was started in master-only utility mode问题修复

psql连接单机部署的Greenplum5会报错&#xff1a; psql: FATAL: System was started in master-only utility mode - only utility mode connections are allowed 命令可以使用 PGOPTIONS-c gp_session_roleutility psql -d postgres 但是程序、客户端都不行&#xff0c; …

ArcEngine临时数据存储 创建内存工作空间

参考网址&#xff0c;这里 工作中有时候需要使用临时数据&#xff0c;以前都是创建一个默认的shapefile或者gdb&#xff0c;今天发现esri官方帮助文档给出了一个方法&#xff0c;可以创建内存工作空间&#xff0c;代码如下&#xff1a; public static IWorkspace CreateInMemor…

postgresql数据库迁移技巧(降低版本迁移到GreenPlum pg11-pg8)

工具&#xff1a;navicat12 步骤&#xff1a; 1.创建scheme 2.导出源scheme的结构sql 3.在目标数据库执行源scheme结构sql中创建序列部分 4.直接操作拷贝scheme所有表&#xff08;使用生成sql会有版本不兼容的问题&#xff0c;我是从11降到8&#xff0c;跨度比较大&#xff09…