最近跟着几篇错误的博客使用docker安装hbase,结果错误百出。被BUG折磨了两天,终于找到了问题,整理了一篇详细的安装步骤,希望大家安装顺利!
本次是在云服务器上进行的配置。
@ Date 2024年6月5日
@ Author yu
1. 拉取镜像
这里我们拉取的是1.3版本,已经测试过了,没有问题,建议大家也选择这个版本
docker pull harisekhon/hbase:1.3
我这边已经装过了,第一次下载显示的不会不一样
2. 运行容器
需要映射的端口号必须与下面的一致,否则后续将无法通过javaAPI连接!!!小编之前跟着低质量博客做的,就在这里卡了两天。。。如果使用的是云服务器,还必须要在安全组里打开所有安全组!!!
docker run -d -h myhbase -p 2181:2181 -p 8080:8080 -p 8085:8085 -p 9090:9090 -p 9095:9095 -p 16000:16000 -p 16010:16010 -p 16201:16201 -p 16020:16020 -p 16301:16301 --name hbase harisekhon/hbase:1.3
配置好后,通过Docker ps 可以看到上述信息
3. Master节点web校验
浏览器访问:http://换成你的ip地址:16010/
如果和下方显示一致,则说明安装成功:
4. 测试HBash shell
使用下面的命令可以通过shell操作Hbase
5. 使用java API
这里需要导一些包,建议创建Maven工程,由于Hbase是构架于HDFS之上的,所以需要导入hadoop依赖才能操作分布式文件系统
pom文件:
<!-- Hadoop所需依赖包 -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.5.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase-client -->
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-server</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>1.3.2</version>
</dependency>
测试连接:
/**
* ClassName: HBaseTest
* @Author 雨
* @Create 2024/6/5 8:02
* @Version 1.0
*/
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
import java.io.IOException;
public class HBaseTest{
public static void main(String[] args) {
try {
// 创建 HBase 配置
Configuration config = HBaseConfiguration.create();
config.set("hbase.zookeeper.quorum", "这里填写你的主机IP(如果是云服务器,添加公网IP)");
config.set("hbase.zookeeper.property.clientPort", "2181");
config.set("hbase.master", "这里填写你的主机IP(如果是云服务器,添加公网IP):16010");//这里的ip和上面的一样
// 创建 HBase 连接
Connection connection = ConnectionFactory.createConnection(config);
Admin admin = connection.getAdmin();
// 定义表名和列族名
TableName tableName = TableName.valueOf("test_table");
byte[] columnFamily = "data".getBytes();
//
HTableDescriptor tableDescriptor = new HTableDescriptor(tableName);
tableDescriptor.addFamily(new HColumnDescriptor(columnFamily));
// 检查表是否存在,如果不存在则创建
admin.createTable(tableDescriptor);
System.out.println("创建表成功!");
System.out.println("41");
// 向表中插入数据
Table table = connection.getTable(tableName);
System.out.println("44");
Put put = new Put(Bytes.toBytes("row1"));
put.addColumn(columnFamily, Bytes.toBytes("col1"), Bytes.toBytes("value1"));
put.addColumn(columnFamily, Bytes.toBytes("col2"), Bytes.toBytes("value2"));
System.out.println("48");
table.put(put);
System.out.println("50");
System.out.println("Data inserted successfully.");
// 关闭连接
table.close();
connection.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
只需要修改上方红框框住的内容,改成你的主机IP地址(如果是云服务器,可以添加云服务器的公网IP地址)
如果测试正常,那么恭喜你,安装成功!
如果出现阻塞,没反应,那就看看是不是哪些地方没有按照上述操作来。
如果严格按照上述步骤,应该问题不大。
如有转载,请注明出处。