HBase实战(4):使用JAVA操作分布式集群HBASE
Hbase开发测试程序在windows 10的IDEA中,Vmvare虚拟机部署Hadoop、hbase等集群,虚拟机操作系统linux。将通过windows本地IDEA连接虚拟机的Hbase系统,进行操作。
1,更改C:\Windows\System32\drivers\etc 的HOSTS文件
192.168.189.1 master
192.168.189.2 worker1
192.168.189.3 worker2
192.168.189.4 worker3
Microsoft Windows [版本 10.0.16299.371]
(c) 2017 Microsoft Corporation。保留所有权利。
C:\Users\lenovo>ping master
正在 Ping master [192.168.189.1] 具有 32 字节的数据:
来自 192.168.189.1 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.189.1 的回复: 字节=32 时间<1ms TTL=64
192.168.189.1 的 Ping 统计信息:
数据包: 已发送 = 2,已接收 = 2,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 0ms,平均 = 0ms
Control-C
^C
C:\Users\lenovo>ping worker1
正在 Ping worker1 [192.168.189.2] 具有 32 字节的数据:
来自 192.168.189.2 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.189.2 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.189.2 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.189.2 的回复: 字节=32 时间<1ms TTL=64
192.168.189.2 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 0ms,平均 = 0ms
C:\Users\lenovo>ping worker3
正在 Ping worker3 [192.168.189.4] 具有 32 字节的数据:
来自 192.168.189.4 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.189.4 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.189.4 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.189.4 的回复: 字节=32 时间<1ms TTL=64
192.168.189.4 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 0ms,平均 = 0ms
C:\Users\lenovo>
2,新建maven项目,编写pom.xml文件。下载HBASE的依赖包。
4.0.0
noc_hbase_test
noc_hbase_test
1.0-SNAPSHOT
2.11.8
2.2.1
2.8.2
1.2.14
9.2.5.v20141112
2.17
1.8
1.2.0
scala-tools.org
Scala-Tools Maven2 Repository
http://scala-tools.org/repo-releases
scala-tools.org
Scala-Tools Maven2 Repository
http://scala-tools.org/repo-releases
org.apache.hbase
hbase-client
${hbase.version}
org.slf4j
slf4j-log4j12
org.apache.hbase
hbase-common
${hbase.version}
org.slf4j
slf4j-log4j12
org.apache.hbase
hbase-server
${hbase.version}
org.slf4j
slf4j-log4j12
org.apache.hadoop
hadoop-common
2.6.0
org.apache.hadoop
hadoop-client
2.6.0
org.apache.hadoop
hadoop-hdfs
2.6.0
maven-assembly-plugin
dist
true
jar-with-dependencies
make-assembly
package
single
maven-compiler-plugin
1.7
net.alchim31.maven
scala-maven-plugin
3.2.2
scala-compile-first
process-resources
compile
${scala.version}
incremental
true
-unchecked
-deprecation
-feature
-Xms1024m
-Xmx1024m
-source
${java.version}
-target
${java.version}
-Xlint:all,-serial,-path
org.antlr
antlr4-maven-plugin
4.3
antlr
antlr4
none
src/test/java
true
true
3.在IDEA项目下面放上linux环境配置hadoop和hbase配置文件,hbase-site.xml和hdfs-site.xml.
hbase-site.xml
hbase.rootdir
hdfs://master:9000/hbase
hbase.cluster.distributed
true
hbase.zookeeper.quorum
192.168.189.1:2181,192.168.189.2:2181,192.168.189.3:2181
hbase.master.info.port
60010
hdfs-site.xml
dfs.replication
3
dfs.namenode.name.dir
/usr/local/hadoop-2.6.0/tmp/dfs/name
dfs.datanode.data.dir
/usr/local/hadoop-2.6.0/tmp/dfs/data
HBASE测试代码:
package HbaseTest;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.Admin;
import java.io.IOException;
public class HbaseMyTest {
public static Configuration configuration;
public static Connection connection;
public static Admin admin;
public static void main(String[] args) throws IOException {
listTables();
}
public static void listTables() throws IOException {
HbaseUtils.init();
HTableDescriptor hTableDescriptors[] = admin.listTables();
for (HTableDescriptor hTableDescriptor : hTableDescriptors) {
System.out.println("IDEA本地程序查询Hbase的表名: "+hTableDescriptor.getNameAsString());
}
HbaseUtils.close();
}
}
package HbaseTest;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import java.io.IOException;
public class HbaseUtils {
public static void init() {
HbaseMyTest.configuration = HBaseConfiguration.create();
HbaseMyTest.configuration.set("hbase.zookeeper.property.clientPort", "2181");
HbaseMyTest.configuration.set("hbase.zookeeper.quorum", "192.168.189.1,192.168.189.2,192.168.189.3");
HbaseMyTest.configuration.set("hbase.master", "192.168.189.1:60000");
try {
HbaseMyTest.connection = ConnectionFactory.createConnection(HbaseMyTest.configuration);
HbaseMyTest.admin = HbaseMyTest.connection.getAdmin();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void close() {
try {
if (null != HbaseMyTest.admin)
HbaseMyTest.admin.close();
if (null != HbaseMyTest.connection)
HbaseMyTest.connection.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行结果为: