Skip to content

Commit ac3b6ce

Browse files
committed
hbase backup backprot
1 parent b0edb77 commit ac3b6ce

File tree

89 files changed

+18892
-44
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

89 files changed

+18892
-44
lines changed

bin/hbase

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,8 @@ show_usage() {
9999
echo " ltt Run LoadTestTool"
100100
echo " canary Run the Canary tool"
101101
echo " version Print the version"
102+
echo " backup Backup tables for recovery"
103+
echo " restore Restore tables from existing backup image"
102104
echo " completebulkload Run BulkLoadHFiles tool"
103105
echo " regionsplitter Run RegionSplitter tool"
104106
echo " rowcounter Run RowCounter tool"
@@ -700,6 +702,32 @@ elif [ "$COMMAND" = "canary" ] ; then
700702
HBASE_OPTS="$HBASE_OPTS $HBASE_CANARY_OPTS"
701703
elif [ "$COMMAND" = "version" ] ; then
702704
CLASS='org.apache.hadoop.hbase.util.VersionInfo'
705+
elif [ "$COMMAND" = "backup" ] ; then
706+
CLASS='org.apache.hadoop.hbase.backup.BackupDriver'
707+
if [ -n "${shaded_jar}" ] ; then
708+
for f in "${HBASE_HOME}"/lib/hbase-backup*.jar; do
709+
if [ -f "${f}" ]; then
710+
CLASSPATH="${CLASSPATH}:${f}"
711+
break
712+
fi
713+
done
714+
fi
715+
elif [ "$COMMAND" = "restore" ] ; then
716+
CLASS='org.apache.hadoop.hbase.backup.RestoreDriver'
717+
if [ -n "${shaded_jar}" ] ; then
718+
for f in "${HBASE_HOME}"/lib/hbase-backup*.jar; do
719+
if [ -f "${f}" ]; then
720+
CLASSPATH="${CLASSPATH}:${f}"
721+
break
722+
fi
723+
done
724+
for f in "${HBASE_HOME}"/lib/commons-lang3*.jar; do
725+
if [ -f "${f}" ]; then
726+
CLASSPATH="${CLASSPATH}:${f}"
727+
break
728+
fi
729+
done
730+
fi
703731
elif [ "$COMMAND" = "regionsplitter" ] ; then
704732
CLASS='org.apache.hadoop.hbase.util.RegionSplitter'
705733
elif [ "$COMMAND" = "rowcounter" ] ; then

hbase-assembly/pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,10 @@
192192
<groupId>org.apache.hbase</groupId>
193193
<artifactId>hbase-compression-zstd</artifactId>
194194
</dependency>
195+
<dependency>
196+
<groupId>org.apache.hbase</groupId>
197+
<artifactId>hbase-backup</artifactId>
198+
</dependency>
195199
<dependency>
196200
<groupId>jline</groupId>
197201
<artifactId>jline</artifactId>

hbase-assembly/src/main/assembly/hadoop-three-compat.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
<include>org.apache.hbase:hbase-testing-util</include>
5858
<include>org.apache.hbase:hbase-thrift</include>
5959
<include>org.apache.hbase:hbase-zookeeper</include>
60+
<include>org.apache.hbase:hbase-backup</include>
6061
</includes>
6162
<!-- Binaries for the dependencies also go in the hbase-jars directory -->
6263
<binaries>

hbase-assembly/src/main/assembly/hadoop-two-compat.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
<include>org.apache.hbase:hbase-testing-util</include>
6060
<include>org.apache.hbase:hbase-thrift</include>
6161
<include>org.apache.hbase:hbase-zookeeper</include>
62+
<include>org.apache.hbase:hbase-backup</include>
6263
</includes>
6364
<!-- Binaries for the dependencies also go in the hbase-jars directory -->
6465
<binaries>

hbase-backup/pom.xml

Lines changed: 307 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,307 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
3+
<!--
4+
/**
5+
* Licensed to the Apache Software Foundation (ASF) under one
6+
* or more contributor license agreements. See the NOTICE file
7+
* distributed with this work for additional information
8+
* regarding copyright ownership. The ASF licenses this file
9+
* to you under the Apache License, Version 2.0 (the
10+
* "License"); you may not use this file except in compliance
11+
* with the License. You may obtain a copy of the License at
12+
*
13+
* http://www.apache.org/licenses/LICENSE-2.0
14+
*
15+
* Unless required by applicable law or agreed to in writing, software
16+
* distributed under the License is distributed on an "AS IS" BASIS,
17+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18+
* See the License for the specific language governing permissions and
19+
* limitations under the License.
20+
*/
21+
-->
22+
<modelVersion>4.0.0</modelVersion>
23+
<parent>
24+
<groupId>org.apache.hbase</groupId>
25+
<artifactId>hbase-build-configuration</artifactId>
26+
<version>2.5.1-SNAPSHOT</version>
27+
<relativePath>../hbase-build-configuration</relativePath>
28+
</parent>
29+
<artifactId>hbase-backup</artifactId>
30+
<name>Apache HBase - Backup</name>
31+
<description>Backup for HBase</description>
32+
<dependencies>
33+
<!-- Intra-project dependencies -->
34+
<dependency>
35+
<groupId>org.apache.hbase</groupId>
36+
<artifactId>hbase-annotations</artifactId>
37+
<type>test-jar</type>
38+
<scope>test</scope>
39+
</dependency>
40+
<dependency>
41+
<groupId>org.apache.hbase</groupId>
42+
<artifactId>hbase-logging</artifactId>
43+
<type>test-jar</type>
44+
<scope>test</scope>
45+
</dependency>
46+
<dependency>
47+
<groupId>org.apache.hbase</groupId>
48+
<artifactId>hbase-client</artifactId>
49+
</dependency>
50+
<dependency>
51+
<groupId>org.apache.hbase</groupId>
52+
<artifactId>hbase-server</artifactId>
53+
<exclusions>
54+
<exclusion>
55+
<groupId>javax.xml.bind</groupId>
56+
<artifactId>jaxb-api</artifactId>
57+
</exclusion>
58+
<exclusion>
59+
<groupId>javax.ws.rs</groupId>
60+
<artifactId>jsr311-api</artifactId>
61+
</exclusion>
62+
</exclusions>
63+
</dependency>
64+
<dependency>
65+
<groupId>org.apache.hbase</groupId>
66+
<artifactId>hbase-server</artifactId>
67+
<type>test-jar</type>
68+
<scope>test</scope>
69+
</dependency>
70+
<dependency>
71+
<groupId>org.apache.hbase</groupId>
72+
<artifactId>hbase-mapreduce</artifactId>
73+
<type>test-jar</type>
74+
<scope>test</scope>
75+
</dependency>
76+
<dependency>
77+
<groupId>org.apache.hbase</groupId>
78+
<artifactId>hbase-mapreduce</artifactId>
79+
</dependency>
80+
<dependency>
81+
<groupId>org.apache.hbase</groupId>
82+
<artifactId>hbase-common</artifactId>
83+
</dependency>
84+
<dependency>
85+
<groupId>org.apache.hbase</groupId>
86+
<artifactId>hbase-protocol-shaded</artifactId>
87+
</dependency>
88+
<dependency>
89+
<groupId>org.apache.hbase</groupId>
90+
<artifactId>hbase-testing-util</artifactId>
91+
<scope>test</scope>
92+
<exclusions>
93+
<exclusion>
94+
<groupId>com.google.guava</groupId>
95+
<artifactId>guava</artifactId>
96+
</exclusion>
97+
<exclusion>
98+
<groupId>javax.xml.bind</groupId>
99+
<artifactId>jaxb-api</artifactId>
100+
</exclusion>
101+
</exclusions>
102+
</dependency>
103+
<!-- General dependencies -->
104+
<dependency>
105+
<groupId>org.apache.commons</groupId>
106+
<artifactId>commons-lang3</artifactId>
107+
</dependency>
108+
<dependency>
109+
<groupId>org.slf4j</groupId>
110+
<artifactId>slf4j-api</artifactId>
111+
</dependency>
112+
<dependency>
113+
<groupId>org.apache.hbase.thirdparty</groupId>
114+
<artifactId>hbase-shaded-miscellaneous</artifactId>
115+
</dependency>
116+
<dependency>
117+
<groupId>org.apache.zookeeper</groupId>
118+
<artifactId>zookeeper</artifactId>
119+
</dependency>
120+
<dependency>
121+
<groupId>org.slf4j</groupId>
122+
<artifactId>jcl-over-slf4j</artifactId>
123+
<scope>test</scope>
124+
</dependency>
125+
<dependency>
126+
<groupId>org.slf4j</groupId>
127+
<artifactId>jul-to-slf4j</artifactId>
128+
<scope>test</scope>
129+
</dependency>
130+
<dependency>
131+
<groupId>org.apache.logging.log4j</groupId>
132+
<artifactId>log4j-api</artifactId>
133+
<scope>test</scope>
134+
</dependency>
135+
<dependency>
136+
<groupId>org.apache.logging.log4j</groupId>
137+
<artifactId>log4j-core</artifactId>
138+
<scope>test</scope>
139+
</dependency>
140+
<dependency>
141+
<groupId>org.apache.logging.log4j</groupId>
142+
<artifactId>log4j-slf4j-impl</artifactId>
143+
<scope>test</scope>
144+
</dependency>
145+
<dependency>
146+
<groupId>org.apache.logging.log4j</groupId>
147+
<artifactId>log4j-1.2-api</artifactId>
148+
<scope>test</scope>
149+
</dependency>
150+
<dependency>
151+
<groupId>junit</groupId>
152+
<artifactId>junit</artifactId>
153+
<scope>test</scope>
154+
</dependency>
155+
</dependencies>
156+
<build>
157+
<plugins>
158+
<plugin>
159+
<!--Make it so assembly:single does nothing in here-->
160+
<artifactId>maven-assembly-plugin</artifactId>
161+
<configuration>
162+
<skipAssembly>true</skipAssembly>
163+
</configuration>
164+
</plugin>
165+
<!-- Make a jar and put the sources in the jar -->
166+
<plugin>
167+
<groupId>org.apache.maven.plugins</groupId>
168+
<artifactId>maven-source-plugin</artifactId>
169+
</plugin>
170+
<plugin>
171+
<groupId>net.revelc.code</groupId>
172+
<artifactId>warbucks-maven-plugin</artifactId>
173+
</plugin>
174+
</plugins>
175+
</build>
176+
<profiles>
177+
<!-- profile for building against Hadoop 2.x. This is the default. -->
178+
<profile>
179+
<id>hadoop-2.0</id>
180+
<activation>
181+
<property>
182+
<!--Below formatting for dev-support/generate-hadoopX-poms.sh-->
183+
<!--h2-->
184+
<name>!hadoop.profile</name>
185+
</property>
186+
</activation>
187+
<dependencies>
188+
<dependency>
189+
<groupId>org.apache.hadoop</groupId>
190+
<artifactId>hadoop-distcp</artifactId>
191+
</dependency>
192+
<dependency>
193+
<groupId>org.apache.hadoop</groupId>
194+
<artifactId>hadoop-common</artifactId>
195+
</dependency>
196+
<dependency>
197+
<groupId>org.apache.hadoop</groupId>
198+
<artifactId>hadoop-mapreduce-client-core</artifactId>
199+
</dependency>
200+
<!-- Hadoop needs Netty 3.x at test scope for the minicluster -->
201+
<dependency>
202+
<groupId>io.netty</groupId>
203+
<artifactId>netty</artifactId>
204+
<version>${netty.hadoop.version}</version>
205+
</dependency>
206+
</dependencies>
207+
<build>
208+
<plugins>
209+
<plugin>
210+
<artifactId>maven-dependency-plugin</artifactId>
211+
<executions>
212+
<execution>
213+
<id>create-mrapp-generated-classpath</id>
214+
<goals>
215+
<goal>build-classpath</goal>
216+
</goals>
217+
<phase>generate-test-resources</phase>
218+
<configuration>
219+
<!-- needed to run the unit test for DS to generate
220+
the required classpath that is required in the env
221+
of the launch container in the mini mr/yarn cluster
222+
-->
223+
<outputFile>${project.build.directory}/test-classes/mrapp-generated-classpath</outputFile>
224+
</configuration>
225+
</execution>
226+
</executions>
227+
</plugin>
228+
</plugins>
229+
</build>
230+
</profile>
231+
<!--
232+
profile for building against Hadoop 3.0.x. Activate using:
233+
mvn -Dhadoop.profile=3.0
234+
-->
235+
<profile>
236+
<id>hadoop-3.0</id>
237+
<activation>
238+
<property>
239+
<name>hadoop.profile</name>
240+
<value>3.0</value>
241+
</property>
242+
</activation>
243+
<dependencies>
244+
<dependency>
245+
<groupId>org.apache.hadoop</groupId>
246+
<artifactId>hadoop-distcp</artifactId>
247+
</dependency>
248+
<dependency>
249+
<groupId>org.apache.hadoop</groupId>
250+
<artifactId>hadoop-common</artifactId>
251+
</dependency>
252+
<dependency>
253+
<groupId>org.apache.hadoop</groupId>
254+
<artifactId>hadoop-mapreduce-client-core</artifactId>
255+
</dependency>
256+
</dependencies>
257+
<build>
258+
<plugins>
259+
<plugin>
260+
<artifactId>maven-dependency-plugin</artifactId>
261+
<executions>
262+
<execution>
263+
<id>create-mrapp-generated-classpath</id>
264+
<goals>
265+
<goal>build-classpath</goal>
266+
</goals>
267+
<phase>generate-test-resources</phase>
268+
<configuration>
269+
<!-- needed to run the unit test for DS to generate
270+
the required classpath that is required in the env
271+
of the launch container in the mini mr/yarn cluster
272+
-->
273+
<outputFile>${project.build.directory}/test-classes/mrapp-generated-classpath</outputFile>
274+
</configuration>
275+
</execution>
276+
</executions>
277+
</plugin>
278+
</plugins>
279+
</build>
280+
</profile>
281+
<profile>
282+
<id>eclipse-specific</id>
283+
<activation>
284+
<property>
285+
<name>m2e.version</name>
286+
</property>
287+
</activation>
288+
<build>
289+
<pluginManagement>
290+
<plugins>
291+
<!--This plugin's configuration is used to store Eclipse m2e settings
292+
only. It has no influence on the Maven build itself.-->
293+
<plugin>
294+
<groupId>org.eclipse.m2e</groupId>
295+
<artifactId>lifecycle-mapping</artifactId>
296+
<configuration>
297+
<lifecycleMappingMetadata>
298+
<pluginExecutions/>
299+
</lifecycleMappingMetadata>
300+
</configuration>
301+
</plugin>
302+
</plugins>
303+
</pluginManagement>
304+
</build>
305+
</profile>
306+
</profiles>
307+
</project>

0 commit comments

Comments
 (0)