前几天,突然接到任务,须连同Hbase数据库,因之前没有接触过,以为这就是和普通数据库连接方式一样,后来在操作过程中,才发现,坑真的很多,话不多说,直接上代码:
1.首先查看远程服务器(本人是开发库)的Hbase版本,通过Hbase shell命令连接到Hbase
查看到版本为1.2.0,此外还有其他查看方式,查看/lib/*****.jar文件也可看出版本号,查看此版本的原因是要与pom.xml文件里面的依赖相对应,避免因版本号不一致而导致无法连接
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-hadoop</artifactId>
<version>2.5.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>1.2.0</version>
<exclusions>
<exclusion>
<artifactId>guava</artifactId>
<groupId>com.google.guava</groupId>
</exclusion>
</exclusions>
</dependency>
添加好依赖以后,就开始写测试类:
private static String ip = "*.*.*.116,*.*.*.173,*.*.*.174";
public static void init() {
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.property.maxclientcnxns", "300");
conf.set("hbase.ipc.client.socket.timeout.connect","1000");
conf.set("zookeeper.session.timeout", "500");
conf.set("hbase.regionserver.handler.count", "500");
System.setProperty("hadoop.home.dir", "D:/Documents/Desktop/hadoop-common-2.6.0");
conf.set("hbase.zookeeper.quorum",ip);
try {
conn = ConnectionFactory.createConnection(conf);
//createTable(TABLE_NAME, FAMILY_NAMES);
//getTablesList(conn);
scan("students");
} catch (IOException e) {
e.printStackTrace();
}
}
此处IP为集群的IP地址,请自行配置,配置完成后,切记还要提前配置好hadopp.hoop.dir,尽管本地未用到,不过不添加会报错,添加方式和JAVA_HOME的方式一致,需配置路径,配置完这个地方后,还需要配置C:\Windows\System32\drivers\etc\hosts文件,
切记,红色框内的名称要和hsite.xml文件保持一致,不然报错一直找不到classpath=null,到此,配置基本完成,
最后,运行代码
17:06:57.718 [main] DEBUG org.apache.hadoop.hbase.ipc.RpcClientImpl - Use SIMPLE authentication for service ClientService, sasl=false
17:06:57.735 [main] DEBUG org.apache.hadoop.hbase.ipc.RpcClientImpl - Connecting to worker3/*.*.*.176:60020
17:06:57.872 [hconnection-0x7770f470-shared--pool1-t1] DEBUG org.apache.hadoop.hbase.ipc.RpcClientImpl - Use SIMPLE authentication for service ClientService, sasl=false
17:06:57.873 [hconnection-0x7770f470-shared--pool1-t1] DEBUG org.apache.hadoop.hbase.ipc.RpcClientImpl - Connecting to worker2/*.*.*.175:60020
stu001 info:nme => tom
stu001_002 info:name => zhangtb
stu001_002_003 info:name => licy
stu002_001 info:name => weil
取出学生信息,以上为本人亲测,如有问题,请留言沟通