相关博客
-
win10安装hadoop3.1.2
-
HBase集群中原有数据:
com.google.guava
guava
11.0.2
第二步:加入log4j.properties
### 设置###
log4j.rootLogger = debug,stdout,D,E
### 输出信息到控制抬 ###
```java
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
### 输出DEBUG 级别以上的日志到=E://logs/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File =logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### 输出ERROR 级别以上的日志到=E://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
第三步:搭建代码框架
功能代码框架
public class HBaseUtil {
private static Admin admin = null;
private static Connection conn = null;
static {
//使用HBaseConfiguration的单例方法实例化
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "hcmaster:2181,hcslave1:2181,hcslave2:2181");
conf.set("hbase.zookeeper.property.clientPort", "2181"); //此行为默认值,可以省略
try {
conn = ConnectionFactory.createConnection(conf);
admin = conn.getAdmin();
} catch (IOException e) {
e.printStackTrace();
}
}
}
测试代码框架
public class HBaseUtilTest {
}
具体代码
判断表是否存在
- 功能代码
public static boolean isTableExist(String tableName) throws Exception {
boolean res = admin.tableExists(TableName.valueOf(tableName));
admin.close();
return res;
}
- 测试代码
@Test
public void isTableExist() throws Exception {
System.out.println(HBaseUtil.isTableExist("stu"));
System.out.println(HBaseUtil.isTableExist("student"));
System.out.println(HBaseUtil.isTableExist("hc:stu"));
}
- 结果
- 功能代码
public static void createTable(String tableName, String... columnFamily) throws Exception {
//判断表是否存在
if (isTableExist(tableName)) {
System.out.println("表" + tableName + "已存在");
return;
}
//创建表描述器,表名需要转字节
TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(TableName.valueOf(tableName));
//添加列族
for (String cf : columnFamily) {
ColumnFamilyDescriptor descriptor = ColumnFamilyDescriptorBuilder.of(cf);
builder.setColumnFamily(descriptor);
}
//根据对表的配置,创建表
admin.createTable(builder.build());
admin.close();
System.out.println("表" + tableName + "创建成功!");
}
- 测试代码
@Test
public void createTable() throws Exception {
HBaseUtil.createTable("stu2", "info1","info2");
}
- 结果
- 功能代码
public static void dropTable(String tableName) throws Exception {
if (isTableExist(tableName)) {
admin.disableTable(TableName.valueOf(tableName));
admin.deleteTable(TableName.valueOf(tableName));
admin.close();
System.out.println("表" + tableName + "删除成功!");
} else {
System.out.println("表" + tableName + "不存在!");
}
}
- 测试代码
@Test
public void dropTable() throws Exception {
HBaseUtil.dropTable("stu2");
}
- 结果
在整合项目的时候可能会出现各种错误,可以参考网页:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/client/TableDesc
riptor at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.apache.hadoop.util.RunJar.run(RunJar.java:214)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.client.TableDescriptor
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 4 more
原因: 缺少 org/apache/hadoop/hbase/client/ ?? 编辑 pom.xml , 添加依赖包复制: org.apache.maven.plugins maven-dependency-plugin 3.1.0 copy-dependencies prepare-package copy-dependencies ${project.build.directory}/classes/lib true true
OK
*/
问题Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hbase/thirdparty/com/google/c
ommon/cache/CacheLoader at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java
:202) at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java
:114) at lsq.HelloHBase.Chapter4.init(Chapter4.java:31)
at lsq.HelloHBase.Chapter4.createTable(Chapter4.java:50)
at lsq.HelloHBase.Chapter4.main(Chapter4.java:18)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Caused by: java.lang.ClassNotFoundException: org.apache.hbase.thirdparty.com.google.common.cache.Ca
cheLoader at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 11 more
解决方案,添加依赖(版本号要为11.0.2):
com.google.guava
guava
11.0.2
问题
hadoop jar HelloHBase-0.0.1-SNAPSHOT.jar lsq.HelloHBase.Chapter4
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hbase/thirdparty/com/google/c
ommon/util/concurrent/ListeningExecutorService at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java
:202) at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java
:114) at lsq.HelloHBase.Chapter4.init(Chapter4.java:31)
at lsq.HelloHBase.Chapter4.createTable(Chapter4.java:50)
at lsq.HelloHBase.Chapter4.main(Chapter4.java:18)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Caused by: java.lang.ClassNotFoundException: org.apache.hbase.thirdparty.com.google.common.util.con
current.ListeningExecutorService at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 11 more
解决方案,添加依赖(版本号要为11.0.2):
org.apache.hbase.thirdparty
hbase-shaded-netty
2.1.0
org.apache.hbase.thirdparty
hbase-shaded-protobuf
2.1.0
org.apache.hbase.thirdparty
hbase-shaded-miscellaneous
2.1.0
问题
/*
18/10/30 09:17:20 DEBUG util.NativeCodeLoader: Trying to load the custom-built native-hadoop librar
y...18/10/30 09:17:20 DEBUG util.NativeCodeLoader: Loaded the native-hadoop library
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/shaded/protobuf/
generated/MasterProtos$MasterService$BlockingInterface at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java
:210) at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java
:114) at lsq.HelloHBase.Chapter4.init(Chapter4.java:31)
at lsq.HelloHBase.Chapter4.createTable(Chapter4.java:50)
at lsq.HelloHBase.Chapter4.main(Chapter4.java:18)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.shaded.protobuf.generated.Mast
erProtos$MasterService$BlockingInterface at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 24 more
解决方案:
org.apache.hbase
hbase-protocol-shaded
2.1.3
问题
18/10/30 09:22:22 DEBUG util.NativeCodeLoader: Trying to load the custom-built native-hadoop librar
y...18/10/30 09:22:22 DEBUG util.NativeCodeLoader: Loaded the native-hadoop library
java.io.IOException: java.lang.reflect.InvocationTargetException
at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java
:221) at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java
:114) at lsq.HelloHBase.Chapter4.init(Chapter4.java:31)
at lsq.HelloHBase.Chapter4.createTable(Chapter4.java:50)
at lsq.HelloHBase.Chapter4.main(Chapter4.java:18)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java
:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorI
mpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java
:219) ... 10 more
Caused by: java.lang.NoClassDefFoundError: org/apache/commons/lang3/ArrayUtils
at org.apache.hadoop.hbase.HConstants.(HConstants.java:1177)
at org.apache.hadoop.hbase.client.ConnectionUtils.getPauseTime(ConnectionUtils.java:82)
at org.apache.hadoop.hbase.client.AsyncProcess.(AsyncProcess.java:201)
at org.apache.hadoop.hbase.client.ConnectionImplementation.(ConnectionImplementation.
java:265) ... 15 more
Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang3.ArrayUtils
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 19 more
Exception in thread "main" java.lang.NullPointerException
at lsq.HelloHBase.Chapter4.createTable(Chapter4.java:52)
at lsq.HelloHBase.Chapter4.main(Chapter4.java:18)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
解决办法,添加依赖包:
org.apache.commons:commons-lang3:jar:3.6
问题
18/10/30 10:24:01 INFO zookeeper.ZooKeeper: Client environment:java.compiler=
18/10/30 10:24:01 INFO zookeeper.ZooKeeper: Client environment:os.name=Linux
18/10/30 10:24:01 INFO zookeeper.ZooKeeper: Client environment:os.arch=amd64
18/10/30 10:24:01 INFO zookeeper.ZooKeeper: Client environment:os.version=2.6.32-358.el6.x86_64
18/10/30 10:24:01 INFO zookeeper.ZooKeeper: Client environment:user.name=lsq
18/10/30 10:24:01 INFO zookeeper.ZooKeeper: Client environment:user.home=/u/lsq
18/10/30 10:24:01 INFO zookeeper.ZooKeeper: Client environment:user.dir=/panks/data02/lsq/idx030/da
ta18/10/30 10:24:01 INFO zookeeper.ZooKeeper: Initiating client connection, connectString=idx046:2181
sessionTimeout=90000 watcher=org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient$$Lambda$12/259950055@4c285d8118/10/30 10:24:01 INFO zookeeper.ClientCnxn: Opening socket connection to server idx046.njcc.com/19
2.168.30.46:2181. Will not attempt to authenticate using SASL (unknown error)18/10/30 10:24:01 INFO zookeeper.ClientCnxn: Socket connection established to idx046.njcc.com/192.1
68.30.46:2181, initiating session18/10/30 10:24:01 INFO zookeeper.ClientCnxn: Session establishment complete on server idx046.njcc.c
om/192.168.30.46:2181, sessionid = 0x166bfdd54bf0006, negotiated timeout = 9000018/10/30 10:24:02 INFO zookeeper.ReadOnlyZKClient: Close zookeeper connection 0x36ebc363 to idx046:
2181java.io.IOException: java.lang.reflect.InvocationTargetException
at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java
:221) at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java
:87) at lsq.HelloHBase.Chapter4.init(Chapter4.java:32)
at lsq.HelloHBase.Chapter4.createTable(Chapter4.java:51)
at lsq.HelloHBase.Chapter4.main(Chapter4.java:18)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java
:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorI
mpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java
:219) ... 10 more
Caused by: java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/protobuf/generated/Authenticatio
nProtos$TokenIdentifier$Kind at org.apache.hadoop.hbase.ipc.AbstractRpcClient.(AbstractRpcClient.java:110)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at org.apache.hadoop.hbase.util.ReflectionUtils.instantiateWithCustomCtor(ReflectionUtils.j
ava:43) at org.apache.hadoop.hbase.ipc.RpcClientFactory.createClient(RpcClientFactory.java:88)
at org.apache.hadoop.hbase.ipc.RpcClientFactory.createClient(RpcClientFactory.java:64)
at org.apache.hadoop.hbase.client.ConnectionImplementation.(ConnectionImplementation.
java:289) ... 15 more
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.protobuf.generated.Authenticat
ionProtos$TokenIdentifier$Kind at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 22 more
Exception in thread "main" java.lang.NullPointerException
at lsq.HelloHBase.Chapter4.createTable(Chapter4.java:53)
at lsq.HelloHBase.Chapter4.main(Chapter4.java:18)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
18/10/30 10:24:02 INFO zookeeper.ZooKeeper: Session: 0x166bfdd54bf0006 closed
18/10/30 10:24:02 INFO zookeeper.ClientCnxn: EventThread shut down
解决办法:
org.apache.hbase
hbase-protocol
2.1.3
问题
Exception in thread "main" org.apache.hadoop.hbase.DoNotRetryIOException: java.lang.NoClassDefFound
Error: com/codahale/metrics/Metric at org.apache.hadoop.hbase.client.RpcRetryingCallerImpl.translateException(RpcRetryingCalle
rImpl.java:220) at org.apache.hadoop.hbase.client.RpcRetryingCallerImpl.callWithRetries(RpcRetryingCallerIm
pl.java:119) at org.apache.hadoop.hbase.client.HTable.get(HTable.java:386)
at org.apache.hadoop.hbase.client.HTable.get(HTable.java:360)
at org.apache.hadoop.hbase.MetaTableAccessor.getTableState(MetaTableAccessor.java:1078)
at org.apache.hadoop.hbase.MetaTableAccessor.tableExists(MetaTableAccessor.java:403)
at org.apache.hadoop.hbase.client.HBaseAdmin$6.rpcCall(HBaseAdmin.java:445)
at org.apache.hadoop.hbase.client.HBaseAdmin$6.rpcCall(HBaseAdmin.java:442)
at org.apache.hadoop.hbase.client.RpcRetryingCallable.call(RpcRetryingCallable.java:58)
at org.apache.hadoop.hbase.client.RpcRetryingCallerImpl.callWithRetries(RpcRetryingCallerIm
pl.java:107) at org.apache.hadoop.hbase.client.HBaseAdmin.executeCallable(HBaseAdmin.java:3084)
at org.apache.hadoop.hbase.client.HBaseAdmin.executeCallable(HBaseAdmin.java:3076)
at org.apache.hadoop.hbase.client.HBaseAdmin.tableExists(HBaseAdmin.java:442)
at lsq.HelloHBase.Chapter4.createTable(Chapter4.java:53)
at lsq.HelloHBase.Chapter4.main(Chapter4.java:18)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Caused by: java.lang.NoClassDefFoundError: com/codahale/metrics/Metric
at org.apache.hadoop.hbase.ipc.AbstractRpcClient.callMethod(AbstractRpcClient.java:402)
at org.apache.hadoop.hbase.ipc.AbstractRpcClient.callBlockingMethod(AbstractRpcClient.java:
328) at org.apache.hadoop.hbase.ipc.AbstractRpcClient.access$200(AbstractRpcClient.java:95)
at org.apache.hadoop.hbase.ipc.AbstractRpcClient$BlockingRpcChannelImplementation.callBlock
ingMethod(AbstractRpcClient.java:571)
at org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos$ClientService$BlockingStu
b.get(ClientProtos.java:42510)
at org.apache.hadoop.hbase.client.ClientServiceCallable.doGet(ClientServiceCallable.java:50)
at org.apache.hadoop.hbase.client.HTable$1.rpcCall(HTable.java:381)
at org.apache.hadoop.hbase.client.HTable$1.rpcCall(HTable.java:376)
at org.apache.hadoop.hbase.client.RegionServerCallable.call(RegionServerCallable.java:127)
at org.apache.hadoop.hbase.client.RpcRetryingCallerImpl.callWithRetries(RpcRetryingCallerIm
pl.java:107) ... 19 more
Caused by: java.lang.ClassNotFoundException: com.codahale.metrics.Metric
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 29 more
解决办法:
io.dropwizard.metrics metrics-core 3.2.6