Hdfs数据备份
Hdfs数据备份
一、概述
本文的hdfs数据备份是在两个集群之间进行的,如果使用snapshot在同一个集群上做备份,如果datanode损坏或误操作清空了数据,这样的备份就无法完全保证数据安全性。所以选择将hdfs里面的数据备份到另外的地方进行存储,选择hadoop的分布式复制工具distcp。将集群的数据备份到一个制作备份使用的集群,不要怕浪费资源,因为只是做备份使用,所以配置不要求太高,并且可以只是用一个节点接收数据。平常的话此服务器可以跑其他的任务,只有在备份的时间周期内才会有备份任务。至于备份任务的周期可以自己根据实际情况以及可以接受丢失数据时间来确定备份计划任务,我这里采用的是每天备份一次,尽量选择线上的hadoop集群任务不繁忙的时候进行。因为我们的数据量不是很大,需要备份的数据目录也不是很多,所以就选择为每天备份一次。
二、备份之前首先要了解distcp的工作原理以及考虑同步数据的速度以及磁盘io、网络带宽等。
1、distcp介绍
http://hadoop.apache.org/docs/r1.2.1/distcp.html
以下摘自官网:
DistCp (distributed copy) is a tool used for large inter/intra-cluster copying. It uses MapReduce to effect its distribution, error handling and recovery, and reporting. It expands a list of files and directories into input to map tasks, each of which will copy a partition of the files specified in the source list. Its MapReduce pedigree has endowed it with some quirks in both its semantics and execution. The purpose of this document is to offer guidance for common tasks and to elucidate its model.
2、使用方法
1)相同版本
#hadoop distcp -p -skipcrccheck -update –m 10 \
hdfs://spark:9000/data/metastore/userlogs \
hdfs://backup:9000/data/userlogs \
参数解释:
-p:带权限复制
-skipcrccheck: 跳过hdfs检查
-update: 比较两边文件的大小,如果不一样就更新,相同就不操作。如果不是追加数据,而是修改的数据,并且数据大小没有变,那就要结合-overwrite、-delete来使用
2)如果版本不相同,则可以使用只读的HftpFileSystem,需要在目标集群上执行:
#hadoop distcp -p -skipcrccheck -update –m 10 \
hftp://spark:50090/data/metastore/userlogs \
hdfs://backup:9000/data/userlogs \
hftp的端口是在hdfs-site.xml:
<property>
<name>dfs.namenode.http-address</name>
<value>spark:50090</value>
</property>
OPTIONS:
-p[rbugp] Preserve status
r: replication number
b: block size
u: user
g: group
p: permission
-p alone is equivalent to -prbugp
-i Ignore failures
-log <logdir> Write logs to <logdir>
-m <num_maps> Maximum number of simultaneous copies
-overwrite Overwrite destination
-update Overwrite if src size different from dst size
-f <urilist_uri> Use list at <urilist_uri> as src list
-filelimit <n> Limit the total number of files to be <= n
-sizelimit <n> Limit the total size to be <= n bytes
-delete Delete the files existing in the dst but not in src
3、计划任务
脚本:
#!/bin/bash
# copy spark:/data/metastore/userlogs to docker:/data/userlogs
/data/hadoop-2.7.3/bin/hadoop distcp -skipcrccheck -update -m 10 hdfs://spark:9000/data/metastore/userlogs hdfs://backup:9000/data/userlogs
#-m 是指启动10个map任务执行,每个map任务默认256m,如果设定为10,则每个map是总数据量/10
#使用update是因为历史数据没有修改,如果修改则可以加上overwrite.
使用jenkins的pipline执行计划任务
pipeline {
agent {label 'spark' }
stages {
stage('userlogs') {
steps {
dir('/data/scripts'){
sh 'sh userlogs.sh' }
}
}
}
post {
failure {
emailext subject: '$DEFAULT_SUBJECT',
body: '$DEFAULT_CONTENT',
recipientProviders: [
[$class: 'CulpritsRecipientProvider'],
[$class: 'DevelopersRecipientProvider'],
[$class: 'RequesterRecipientProvider']
],
replyTo: '$DEFAULT_REPLYTO',
to: '93048029849203@qq.com'
}
}
}
Hdfs数据备份的更多相关文章
- 基于HBase的手机数据备份系统 .
基于HBase实现的手机数据备份系统,实现了手机关键信息的备份,如短信.联系人等. 包括服务器端(Server)和客户端(Client) Server运行环境:Hadoop+HBase+Tomcat ...
- HBase数据备份及恢复(导入导出)的常用方法
一.说明 随着HBase在重要的商业系统中应用的大量增加,许多企业需要通过对它们的HBase集群建立健壮的备份和故障恢复机制来保证它们的企业(数据)资产.备份Hbase时的难点是其待备份的数据集可能非 ...
- hbase数据备份或者容灾方案
HBase的数据备份或者容灾方案有这几种:Distcp,CopyTable,Export/Import,Snapshot,Replication,以下分别介绍(以下描述的内容均是基于0.94.20版本 ...
- Hbase数据备份&&容灾方案
Hbase数据备份&&容灾方案 标签(空格分隔): Hbase 一.Distcp 在使用distcp命令copy hdfs文件的方式实现备份时,需要禁用备份表确保copy时该表没有数据 ...
- 数据备份的OSS接口
最近在做一个新的项目,从RDS备份到OSS,进行数据备份以及后续的还原.这边对阿里云的OSS数据上传接口进行说明,先做下笔记先简单介绍下OSS: ①Object 在OSS中,用户操作的基本数据单元是O ...
- 两种适用于中小量数据的mysql数据备份
近来项目的业务量开始大了,感觉如果数据不周期性地备份一下,很可能会出现问题,虽然我每天都有阿里云的自动快照,上网找了一下方法,找到两种相对简单而又适合中小项目或者中小公司的数据备份策略,以下都是数据库 ...
- redis主从复制 从而 数据备份和读写分离
蜗牛Redis系列文章目录http://www.cnblogs.com/tdws/tag/NoSql/ 爬虫转载注明地址本文地址—博客园蜗牛 http://www.cnblogs.com/tdws/p ...
- MySQL 数据备份与还原
一.数据备份 1.使用mysqldump命令备份 mysqldump命令将数据库中的数据备份成一个文本文件.表的结构和表中的数据将存储在生成的文本文件中. mysqldump命令的工作原理很简单.它先 ...
- 转 MySQL 数据备份与还原
MySQL 数据备份与还原 原贴:http://www.cnblogs.com/kissdodog/p/4174421.html 一.数据备份 1.使用mysqldump命令备份 mysqldum ...
随机推荐
- what is HTTP OPTIONS verb
The options verb is sent by browser to see if server accept cross origin request or not, this proces ...
- Jenkins中执行docker命令报错
Cannot connect to the Docker daemon. Is the docker daemon running on this host? 在配置Jenkins从Gitlab自 ...
- 对Cookie和Session的理解
本篇文章系自己总结经验,如果有朋友感觉哪里有问题,欢迎留言评论,谢谢~! Cookie和Session的产生背景: 在动态页面里面,每个变量都是有有效期的,所有的变量的最大生命周期就是一个脚本的周期( ...
- .net core AOP之Filter
当我们进行项目开发时,往往在开发过程中需要临时加入一些常用功能性代码,如身份验证.日志记录.异常获取等功能.如果每个方法中都加入这些功能性代码的话,无疑使项目显得过于臃肿,代码繁杂.这时候就要加入过滤 ...
- IDEA取消默认工作区间
- 自定义控件和View
一.自定义控件 MotionEvent.ACTION_UP:抬起 MotionEvent.ACTION_DOWN: 按下 MotionEvent.ACTION_POINTER_UP: MotionEv ...
- 「BZOJ1095」[ZJOI2007] Hide 捉迷藏
题目描述 Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子.某天,Jiajia.Wind和孩子们决定在家里玩捉迷藏游戏.他们的家很大且构造很奇特,由N个屋子和N-1条双向走廊组成,这N-1条 ...
- tableView cell 设置圆角 响应链
1. tableView的样式必须为 UITableViewStyleGrouped 样式否则cell设置的圆角无效. 2. delegate用weak和assign的区别: A:用weak修饰是为 ...
- JavaScript基础DOM介绍和常用操作(5)
day53 参考:https://www.cnblogs.com/liwenzhou/p/8011504.html JavaScript引入方式 location对象 window.location ...
- Python网络通信
day26 网络通信 参考: http://www.cnblogs.com/yuanchenqi/articles/5692716.html 男生是client端,字条是socket(sk),通过sk ...