写在前面
- 目的是希望借助Docker容器技术,降低HBase基础学习门槛。
- 即,不需要掌握繁琐的配置过程,就可以基于IDE工具进行 HBase 相关开发。
- 毕竟,对于基于开源大数据技术生态体系的公司,HBase还是不可或缺的
- 此处废话,不可省略!
- 实验N次,或实现方式复杂,或Docker 容器服务访问失败。
- 最后, 本就想搭建个人HBase测试环境,没想到绕了一个大圈,回到源点解决了问题。
- 至于怎么解决的,啊哈, 我不会告诉你的!
- 你愁啥,就说你呢!
实验材料
- 虚拟机
- VMware Workstation - CentOS Linux 7 (Core)
- Docker环境
docker -v
Docker version 18.09.2, build 6247962
- 获取HBase镜像
创建HBase容器
- run 命令:
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 16301:16301 --name hbase1.3 --net=host harisekhon/hbase
- 参数具体含义(部分)
- 其中
--net host
参数为核心,即使用网络与宿主机一样。
参数 | 作用 |
---|
-d | 后台运行容器,并返回容器ID |
-h | 指定容器的hostname |
-p | 端口映射,格式为:主机(宿主)端口:容器端口 |
–name | 为容器指定一个名称 |
–net | 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型 |
访问效果
- 查看容器状态信息
docker ps
- HBase UI
- 查看容器元数据信息(部分)
- 查看命令
docker inspect 容器ID/name
- 部分配置结果
"HostConfig": {
"Binds": null,
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {}
},
"NetworkMode": "host",
"PortBindings": {
"16000/tcp": [{"HostIp": "","HostPort": "16000"}],
"16010/tcp": [{"HostIp": "","HostPort": "16010"}],
"16201/tcp": [{"HostIp": "","HostPort": "16201"}],
"16301/tcp": [{"HostIp": "","HostPort": "16301"}],
"2181/tcp": [{"HostIp": "","HostPort": "2181"}],
"8080/tcp": [{"HostIp": "","HostPort": "8080"}],
"8085/tcp": [{"HostIp": "","HostPort": "8085"}],
"9090/tcp": [{"HostIp": "","HostPort": "9090"}],
"9095/tcp": [{"HostIp": "","HostPort": "9095"}]},
"RestartPolicy": {
"Name": "no",
"MaximumRetryCount": 0
},
HelloHBase测试
package com.kngines;
import java.io.IOException;
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.NamespaceDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Durability;
import org.apache.hadoop.hbase.client.HBaseAdmin;
public class HelloHBase {
static Configuration conf = null;
static {
conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "192.168.232.128");
conf.set("hbase.zookeeper.property.clientPort", "2181");
conf.set("hbase.master", "192.168.232.128:16000");
}
public static void main(String[] args) {
createNamespaceAndCreateTable("HadoopHbase:InsertCSV");
}
@SuppressWarnings("deprecation")
public static void createNamespaceAndCreateTable(String tablename) {
HBaseAdmin admin = null;
try {
admin = new HBaseAdmin(conf);
admin.createNamespace(NamespaceDescriptor.create("HadoopHbase").build());
} catch (IOException e) {
e.printStackTrace();
}
HTableDescriptor tableDesc = new HTableDescriptor(TableName.valueOf(tablename));
tableDesc.setDurability(Durability.ASYNC_WAL);
HColumnDescriptor hcd = new HColumnDescriptor("info");
tableDesc.addFamily(hcd);
try {
if (admin.tableExists(TableName.valueOf(tablename))) {
System.out.println("++++ " + tablename + " exists.");
} else {
admin.createTable(tableDesc);
System.out.println("++++ HadoopHbase:InsertCSV is created successfully.");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
admin.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
16:59:35.463 [main-SendThread(192.168.232.128:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Reading reply sessionid:0x1694217d4e4001e, packet:: clientPath:null serverPath:null finished:false header:: 6,8 replyHeader:: 6,390,0 request:: '/hbase,F response:: v{'meta-region-server,'rs,'splitWAL,'backup-masters,'table-lock,'flush-table-proc,'master-maintenance,'online-snapshot,'switch,'master,'running,'draining,'namespace,'hbaseid,'table}
++++ HadoopHbase:InsertCSV is created successfully.
16:59:36.242 [main] DEBUG org.apache.zookeeper.ZooKeeper - Closing session: 0x1694217d4e4001e
16:59:36.242 [main] DEBUG org.apache.zookeeper.ClientCnxn - Closing client for session: 0x1694217d4e4001e
16:59:36.247 [main-SendThread(192.168.232.128:2181)] DEBUG org.apache.zookeeper.ClientCnxn - Reading reply sessionid:0x1694217d4e4001e, packet:: clientPath:null serverPath:null finished:false header:: 7,-11 replyHeader:: 7,394,0 request:: null response:: null
16:59:36.247 [main] DEBUG org.apache.zookeeper.ClientCnxn - Disconnecting client for session: 0x1694217d4e4001e
16:59:36.247 [main] INFO org.apache.zookeeper.ZooKeeper - Session: 0x1694217d4e4001e closed
16:59:36.248 [main-EventThread] INFO org.apache.zookeeper.ClientCnxn - EventThread shut down
- HBase 中结果
参考文章
唱票,
- 文章有用的话,点个赞呗
- 如有有问题,欢迎留言,有关代码、开发文档待阶段性更新至 GitHub再附链接。