使用BulkLoad恢复hbase数据
2024-08-24 11:32:07
问题:
hbase 集群启动不了,maste一直在初始化,数据面临丢失风险。
解决:
把hbfs上 /hbase 目录移走 改名为/hbase-bak
删除zk上的数据,重新建立一个新的hbase集群.
使用如下代码, 把/hbase-bak里面的数据恢复到 现有的hbase集群中.
public class RestoreData {
public static final String HBASE_ZOOKEEPER_QUORUM = "hbase.zookeeper.quorum";
public static final String HBASE_CLIENT_RETRIES_NUMBER = "hbase.client.retries.number";
public static final String HBASE_MASTER_INFO_PORT = "hbase.master.info.port";
public static final String HBASE_ZOOKEEPER_PROPERTY_CLIENTPORT = "hbase.zookeeper.property.clientPort";
public static final String HBASE_RPC_TIMEOUT = "hbase.rpc.timeout";
public static final String HBASE_CLIENT_OPERATION_TIMEOUT = "hbase.client.operation.timeout";
public static final String HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD = "hbase.client.scanner.timeout.period";
public static final String HBASE_WRITEBUFFER_SIZE = "hbase.writebuffer.size";
private static Connection hbaseConn;
private static Configuration hbaseConf;
public static void main(String[] args) throws IOException {
hbaseConf = HBaseConfiguration.create();
hbaseConf.set(HBASE_ZOOKEEPER_QUORUM, "master");
hbaseConf.set(HBASE_ZOOKEEPER_PROPERTY_CLIENTPORT, "2181");
hbaseConf.set(HBASE_RPC_TIMEOUT, "30000");
hbaseConf.set(HBASE_CLIENT_OPERATION_TIMEOUT, "30000");
hbaseConf.set(HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD, "30000");
hbaseConn = ConnectionFactory.createConnection(hbaseConf);
String hfile = "hdfs://master:9000/hbase-bak/data/default/student/ab4112439aee7a2dea88f1b5119f0f4d";
String tableName = "student";
String[] array = new String[2];
array[0] = hfile;
array[1] = tableName;
try {
new LoadIncrementalHFiles(hbaseConf).run(array);
} catch (Exception e) {
e.printStackTrace();
}
}
}
pom文件
<dependencies>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>1.4.13</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-server</artifactId>
<version>1.4.13</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-common</artifactId>
<version>1.4.13</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-core</artifactId>
<version>1.0.4</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.8.3</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-hadoop2-compat</artifactId>
<version>1.4.13</version>
</dependency>
</dependencies>
打包
脚本
在集群上运行的脚本
export LD_LIBRARY_PATH=/data/hadoop-2.8.3/lib/native
java -cp /data/hadoop/data/hbase_production.jar\
:/data/hbase/lib/log4j-1.2.17.jar\
:/data/hbase/lib/slf4j-log4j12-1.7.25.jar\
:/data/hbase/lib/slf4j-api-1.7.25.jar\
:/data/hbase/lib/snappy-java-1.0.5.jar\
:/data/hadoop-2.8.3/share/hadoop/common/hadoop-nfs-2.8.3.jar\
:/data/hadoop-2.8.3/share/hadoop/common/hadoop-common-2.8.3.jar\
com.xxxx.hbase.RestoreData \
hdfs://master:9000/hbase-bak/data/default/student/$1 \
student
执行
./脚本 HFile路径
也可用于hbase 备份.
最新文章
- C程序设计语言学习笔记
- IIS7 Application Pool Integrate Mode 和 Classic Mode 的区别
- exists的用法
- 使用 Object.create 创建对象,super 关键字,class 关键字
- form 上传 html 代码
- 学习bash
- Linq&;Lumbda (2)
- 求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m
- Rudolph javascript 监听简单对象属性的变化 -- 回调函数的应用
- for each 循环
- 收集几个Web前端UI框架
- BZOJ 1406 密码箱
- 20140912-.NET平台技术思维导图
- 【java学习笔记】反射基础
- UNIX网络编程——TCP连接的建立和断开、滑动窗口
- docker-1-环境安装及例子实践
- 自动化安装-【kickstart】
- python全栈开发day15-递归函数、二分查找
- DOCTYPE的作用以及标准模式和兼容模式的区别
- 一种高效的序列化方式——MessagePack