# docker-hbase
**Repository Path**: percylee514/docker-hbase
## Basic Information
- **Project Name**: docker-hbase
- **Description**: Hadoop+HBase+Phoneix Docker 快速部署,用于快速构建开发环境
- **Primary Language**: Shell
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 23
- **Created**: 2021-09-16
- **Last Updated**: 2021-09-16
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
[](https://gitter.im/big-data-europe/Lobby)
# docker-hbase-phoenix
### Docker HBase + Phoenix 开发环境单机快速部署
## 项目简介
基于 [**big-data-europe**](https://github.com/big-data-europe/docker-hbase) 的仓库代码修改,主要升级了 HBase 版本到 2.X, 增加 Phoenix 的配置,增加 HBase 对 Hadoop 共享库的配置,同时修改 HBase 组件由 http 下载为本地二进制包拷贝(天朝的墙....),减少构建过程中键盘被砸坏的风险。
主要组件版本如下:
* Hadoop-2.7.4
* Zookeeper-3.4.10
* HBase-2.0.0
* Phoenix-5.0.0
## 使用过程
### 下载仓库
仓库中包含完整的 `hbase-2.0.0-bin.tar.gz` 二进制包和 `phoenix-5.0.0-hbase-2.0.tar.gz` 中的 `phoenix-5.0.0-server.jar` ,仓库体积比较大,这也是无奈,毕竟在国内从 apache 历史仓库下载 hbase 历史版本的体验简直就是噩梦。
```
git clone https://github.com/Al-assad/docker-hbase.git
```
国内环境可以从 gitee 镜像仓库下载,毕竟 github 小水管不是吹的;
```
git clone https://gitee.com/assad/docker-hbase.git
```
### 构建镜像
docker-compose 构建基础镜像。
```
make build
```
### 运行 Standalone 版本
`Standalone` 版本依赖结构与 [quickstart HBase documentation](https://hbase.apache.org/book.html#quickstart) 一致,只不过使用了 `Hadoop` 的 `HDFS` 版本作为底层储存。
主要用于开发测试环境的快速搭建。
```
docker-compose -f docker-compose-standalone.yml up -d
```
### 运行 Local Distributed 伪分布式版本
运行该版本会使用一个独立的 `Zookeeper`,`HMaster` 节点和 `HResgionserver` 节点也会分开为独立容器。
```
docker-compose -f docker-compose-distributed-local.yml up -d
```
启动完成后,可以访问下面的地址来查看集群的详细信息。
http://192.168.0.192:16010/
测试
HBase是一个面向列的数据库,在表中它由行组成。表模式只定义列族,也就是键值对。一个表有多个列族,每一个列族可以有任意数量的列。后续列的值连续地存储在磁盘上。表中的每个单元格值都具有时间戳。
表是行的集合。
行是列族的集合。
列族是列的集合。
列是键值对的集合。
集群启动后,我们可以使用hbase自带的shell来做一些数据库操作,如下:
# 启动shell
$ bin/hbase shell
# 创建 user 表,其中包括两个列族 base 和 address。
# base列族用来保存用户基本信息,username和password
# address列族用来保存家庭和办公地址
> create 'user', 'base', 'address'
Created table user
Took 2.9153 seconds
# 查看 user 表
> list 'user'
TABLE
user
1 row(s)
Took 0.1178 seconds
# 向 user 表写入数据
> put 'user', 'row1', 'base:username', 'user1'
> put 'user', 'row1', 'base:password', 'user1'
> put 'user', 'row1', 'address:home', 'user1 home'
> put 'user', 'row1', 'address:office', 'user1 office'
> put 'user', 'row2', 'base:username', 'user2'
> put 'user', 'row2', 'base:password', 'user2'
> put 'user', 'row2', 'address:home', 'user2 home'
> put 'user', 'row2', 'address:office', 'user2 office'
# 查询 user 表中的数据
> scan 'user'
ROW COLUMN+CELL
row1 column=address:home, timestamp=1516586881667, value=user1 home
row1 column=address:office, timestamp=1516586887852, value=user1 office
row1 column=base:password, timestamp=1516586875823, value=user1
row1 column=base:username, timestamp=1516586869321, value=user1
row2 column=address:home, timestamp=1516586916024, value=user2 home
row2 column=address:office, timestamp=1516586922659, value=user2 office
row2 column=base:password, timestamp=1516586946567, value=user2
row2 column=base:username, timestamp=1516586910234, value=user2
# 查询 user 表的一行数据
> get 'user', 'row1'
get 'user', 'row1'
COLUMN CELL
address:home timestamp=1516586881667, value=user1 home
address:office timestamp=1516586887852, value=user1 office
base:password timestamp=1516586875823, value=user1
base:username timestamp=1516586869321, value=user1
# 删除 user 表的一行数据
> delete 'user', 'row2'
# 删除 user 表。需要先disable user表,然后才能删除。
> disable 'user'
> drop 'user'
### 端口说明
| 节点 | 端口号 | 协议 | 使用 | 说明 |
| :--------------------- | :----- | :---------------------- | :---------------------------------- | :---------------------- |
| zookeeper | 2181 | | zkCli.sh -server zookeeper1:2181 | 客户端接入 |
| 2888,3888 | | N/A | 集群内部通讯 | |
| HDFS Namenode | 9000 | HDFS | hdfs dfs -ls hdfs://namenode1:9000/ | 客户端接入 |
| 50070 | HTTP | http://namenode1:50070/ | 集群监控 | |
| HDFS SecondaryNamenode | 50090 | HTTP | http://namenode1:50090/ | secondary监控 |
| HDFS Datanode | 50010 | | N/A | 客户端接入/其他节点接入 |
| 50020 | | N/A | | |
| 50075 | HTTP | http://datanode1:50075/ | 节点监控 | |
| HBase Master | 16000 | | hbase-client-1.x.x.jar | RegionServer接入 |
| 16010 | HTTP | http://namenode1:16010/ | 集群监控 | |
| HBase RegionServer | 16020 | | N/A | 客户端接入 |
| 16030 | HTTP | http://datanode1:16030/ | 节点监控 | |