phoenix简单使用
18
README.md
@ -36,7 +36,7 @@
|
|||||||
<td align="center"><a href="#七oozie">Oozie</a></td>
|
<td align="center"><a href="#七oozie">Oozie</a></td>
|
||||||
<td align="center"><a href="#八sqoop">Sqoop</a></td>
|
<td align="center"><a href="#八sqoop">Sqoop</a></td>
|
||||||
<td align="center"><a href="#九azkaban">Azkaban</a></td>
|
<td align="center"><a href="#九azkaban">Azkaban</a></td>
|
||||||
<td align="center"><a href="#十hbase">Hbase</a></td>
|
<td align="center"><a href="#十hbase">HBase</a></td>
|
||||||
<td align="center"><a href="#十一kafka">Kafka</a></td>
|
<td align="center"><a href="#十一kafka">Kafka</a></td>
|
||||||
<td align="center"><a href="#十二zookeeper">Zookeeper</a></td>
|
<td align="center"><a href="#十二zookeeper">Zookeeper</a></td>
|
||||||
<td align="center"><a href="#十三scala">Scala</a></td>
|
<td align="center"><a href="#十三scala">Scala</a></td>
|
||||||
@ -75,16 +75,16 @@
|
|||||||
## 七、Oozie
|
## 七、Oozie
|
||||||
## 八、Sqoop
|
## 八、Sqoop
|
||||||
## 九、Azkaban
|
## 九、Azkaban
|
||||||
## 十、Hbase
|
## 十、HBase
|
||||||
|
|
||||||
1. [Hbase基本环境搭建(Standalone /pseudo-distributed mode)](https://github.com/heibaiying/BigData-Notes/blob/master/notes/installation/Hbase%E5%9F%BA%E6%9C%AC%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA.md)
|
1. [HBase基本环境搭建(Standalone /pseudo-distributed mode)](https://github.com/heibaiying/BigData-Notes/blob/master/notes/installation/Hbase%E5%9F%BA%E6%9C%AC%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA.md)
|
||||||
|
|
||||||
2. [Hbase系统架构及数据结构](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Hbase%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84%E5%8F%8A%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84.md)
|
2. [HBase系统架构及数据结构](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Hbase%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84%E5%8F%8A%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84.md)
|
||||||
3. [Hbase 常用Shell命令](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Hbase Shell.md)
|
3. [HBase常用Shell命令](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Hbase Shell.md)
|
||||||
4. Hbase Java API
|
4. HBase Java API
|
||||||
5. Hbase 协处理器
|
5. HBase 协处理器
|
||||||
6. Hbase 备份与恢复
|
6. HBase 备份与恢复
|
||||||
7. Hbase上的sql层——phoenix
|
7. HBase的SQL中间层——Phoenix
|
||||||
|
|
||||||
## 十一、Kafka
|
## 十一、Kafka
|
||||||
## 十二、Zookeeper
|
## 十二、Zookeeper
|
||||||
|
@ -26,6 +26,8 @@
|
|||||||
<a href="#45--条件过滤">4.5 条件过滤</a><br/>
|
<a href="#45--条件过滤">4.5 条件过滤</a><br/>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 一、基本命令
|
## 一、基本命令
|
||||||
|
|
||||||
#### 1.1 获取帮助
|
#### 1.1 获取帮助
|
||||||
|
251
notes/Hbase的SQL层——Phoenix.md
Normal file
@ -0,0 +1,251 @@
|
|||||||
|
# Hbase的SQL中间层——Phoenix
|
||||||
|
<nav>
|
||||||
|
<a href="#一Phoenix简介">一、Phoenix简介</a><br/>
|
||||||
|
<a href="#二Phoenix安装">二、Phoenix安装</a><br/>
|
||||||
|
<a href="#21-下载并解压">2.1 下载并解压</a><br/>
|
||||||
|
<a href="#22-拷贝Jar包">2.2 拷贝Jar包</a><br/>
|
||||||
|
<a href="#23-重启-Region-Servers">2.3 重启 Region Servers</a><br/>
|
||||||
|
<a href="#24-启动Phoenix">2.4 启动Phoenix</a><br/>
|
||||||
|
<a href="#25-启动结果">2.5 启动结果</a><br/>
|
||||||
|
<a href="#三Phoenix-简单使用">三、Phoenix 简单使用</a><br/>
|
||||||
|
<a href="#31-创建表">3.1 创建表</a><br/>
|
||||||
|
<a href="#32-插入数据">3.2 插入数据</a><br/>
|
||||||
|
<a href="#33-修改数据">3.3 修改数据</a><br/>
|
||||||
|
<a href="#34-删除数据">3.4 删除数据</a><br/>
|
||||||
|
<a href="#35-查询数据">3.5 查询数据</a><br/>
|
||||||
|
<a href="#36-退出命令">3.6 退出命令</a><br/>
|
||||||
|
<a href="#37-扩展">3.7 扩展</a><br/>
|
||||||
|
<a href="#四Phoenix-Java-API">四、Phoenix Java API</a><br/>
|
||||||
|
<a href="#41-引入Phoenix-core-JAR包">4.1 引入Phoenix core JAR包</a><br/>
|
||||||
|
<a href="#42-简单的Java-API实例">4.2 简单的Java API实例</a><br/>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
## 一、Phoenix简介
|
||||||
|
|
||||||
|
Phoenix是HBase的开源SQL层。使得您可以使用标准JDBC API而不是常规HBase客户端API来操作Hbases上的数据。
|
||||||
|
|
||||||
|
Phoenix完全使用Java编写,作为HBase内嵌的JDBC驱动。Phoenix查询引擎会将SQL查询转换为一个或多个HBase scan,并编排并行执行以生成标准的JDBC结果集,同时Phoenix还拥有二级索引等Hbase不具备的特性,这使得Phoenix具有极好的性能表现。
|
||||||
|
|
||||||
|
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/Phoenix-hadoop.png"/> </div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## 二、Phoenix安装
|
||||||
|
|
||||||
|
> 我们可以按照官方安装说明进行安装,官方说明如下:
|
||||||
|
>
|
||||||
|
> - download and expand our installation tar
|
||||||
|
> - copy the phoenix server jar that is compatible with your HBase installation into the lib directory of every region server
|
||||||
|
> - restart the region servers
|
||||||
|
> - add the phoenix client jar to the classpath of your HBase client
|
||||||
|
> - download and setup SQuirrel as your SQL client so you can issue adhoc SQL against your HBase cluster
|
||||||
|
|
||||||
|
### 2.1 下载并解压
|
||||||
|
|
||||||
|
官方下载地址: http://phoenix.apache.org/download.html
|
||||||
|
|
||||||
|
官方针对Apache版本和CDH版本的HBase均提供了安装包,按需下载即可。这里我们下载的版本为`4.14.0-cdh5.14.2`
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# 下载
|
||||||
|
wget http://mirror.bit.edu.cn/apache/phoenix/apache-phoenix-4.14.0-cdh5.14.2/bin/apache-phoenix-4.14.0-cdh5.14.2-bin.tar.gz
|
||||||
|
# 解压
|
||||||
|
tar tar apache-phoenix-4.14.0-cdh5.14.2-bin.tar.gz
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2.2 拷贝Jar包
|
||||||
|
|
||||||
|
按照官方文档的说明,需要将phoenix server jar 添加到所有 Region Servers上 Hbase 安装目录的 lib目录下。
|
||||||
|
|
||||||
|
这里由于我搭建的是Hbase伪集群,所以只需要拷贝到当前机器的HBase的lib目录下。如果是真实集群,则使用scp命令分发到所有Region Servers机器上。
|
||||||
|
|
||||||
|
```shell
|
||||||
|
cp /usr/app/apache-phoenix-4.14.0-cdh5.14.2-bin/phoenix-4.14.0-cdh5.14.2-server.jar /usr/app/hbase-1.2.0-cdh5.15.2/lib
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2.3 重启 Region Servers
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# 停止Hbase
|
||||||
|
stop-hbase.sh
|
||||||
|
# 启动Hbase
|
||||||
|
start-hbase.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2.4 启动Phoenix
|
||||||
|
|
||||||
|
在Phoenix解压目录下的`bin`目录下执行如下命令,需要指定Zookeeper的地址:
|
||||||
|
|
||||||
|
+ 如果HBase采用Standalone模式或者伪集群模式搭建,则采用内置的 Zookeeper,默认端口为2181;
|
||||||
|
+ 如果是HBase是集群模式并采用自己搭建的Zookeeper集群,则按照自己的实际情况指定端口
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# ./sqlline.py hadoop001:2181
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2.5 启动结果
|
||||||
|
|
||||||
|
启动后则进入了Phoenix交互式SQL命令行,可以使用`!table`或`!tables`查看当前所有表的信息
|
||||||
|
|
||||||
|
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/phoenix-shell.png"/> </div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## 三、Phoenix 简单使用
|
||||||
|
|
||||||
|
### 3.1 创建表
|
||||||
|
|
||||||
|
```sql
|
||||||
|
CREATE TABLE IF NOT EXISTS us_population (
|
||||||
|
state CHAR(2) NOT NULL,
|
||||||
|
city VARCHAR NOT NULL,
|
||||||
|
population BIGINT
|
||||||
|
CONSTRAINT my_pk PRIMARY KEY (state, city));
|
||||||
|
```
|
||||||
|
|
||||||
|
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/Phoenix-create-table.png"/> </div>
|
||||||
|
|
||||||
|
新建的表会按照特定的规则转换为Hbase上的表,关于表的信息,可以通过Hbase Web UI 进行查看:
|
||||||
|
|
||||||
|
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/hbase-web-ui-phoenix.png"/> </div>
|
||||||
|
|
||||||
|
### 3.2 插入数据
|
||||||
|
|
||||||
|
Phoenix 中插入数据采用的是`UPSERT`而不是`INSERT`,因为Phoenix并没有更新操作,插入相同主键的数据就视为更新,所以`UPSERT`就相当于`UPDATE`+`INSERT`
|
||||||
|
|
||||||
|
```shell
|
||||||
|
UPSERT INTO us_population VALUES('NY','New York',8143197);
|
||||||
|
UPSERT INTO us_population VALUES('CA','Los Angeles',3844829);
|
||||||
|
UPSERT INTO us_population VALUES('IL','Chicago',2842518);
|
||||||
|
UPSERT INTO us_population VALUES('TX','Houston',2016582);
|
||||||
|
UPSERT INTO us_population VALUES('PA','Philadelphia',1463281);
|
||||||
|
UPSERT INTO us_population VALUES('AZ','Phoenix',1461575);
|
||||||
|
UPSERT INTO us_population VALUES('TX','San Antonio',1256509);
|
||||||
|
UPSERT INTO us_population VALUES('CA','San Diego',1255540);
|
||||||
|
UPSERT INTO us_population VALUES('TX','Dallas',1213825);
|
||||||
|
UPSERT INTO us_population VALUES('CA','San Jose',912332);
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3.3 修改数据
|
||||||
|
|
||||||
|
```sql
|
||||||
|
-- 插入主键相同的数据就视为更新
|
||||||
|
UPSERT INTO us_population VALUES('NY','New York',999999);
|
||||||
|
```
|
||||||
|
|
||||||
|
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/Phoenix-update.png"/> </div>
|
||||||
|
|
||||||
|
### 3.4 删除数据
|
||||||
|
|
||||||
|
```sql
|
||||||
|
DELETE FROM us_population WHERE city='Dallas';
|
||||||
|
```
|
||||||
|
|
||||||
|
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/Phoenix-delete.png"/> </div>
|
||||||
|
|
||||||
|
### 3.5 查询数据
|
||||||
|
|
||||||
|
```sql
|
||||||
|
SELECT state as "州",count(city) as "市",sum(population) as "热度"
|
||||||
|
FROM us_population
|
||||||
|
GROUP BY state
|
||||||
|
ORDER BY sum(population) DESC;
|
||||||
|
```
|
||||||
|
|
||||||
|
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/Phoenix-select.png"/> </div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### 3.6 退出命令
|
||||||
|
|
||||||
|
```sql
|
||||||
|
!quit
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### 3.7 扩展
|
||||||
|
|
||||||
|
从上面的简单操作中我们可以看出,Phoenix 查询语句与我们正常使用的SQL是基本相同的,关于Phoenix 支持的语句、数据类型、函数、序列(和Oracle中序列类似)因为涵盖内容很广,可以参考其官方文档,官方上有详尽的配图说明的:
|
||||||
|
|
||||||
|
+ 语法(Grammar):https://phoenix.apache.org/language/index.html
|
||||||
|
|
||||||
|
+ 函数(Functions):http://phoenix.apache.org/language/functions.html
|
||||||
|
|
||||||
|
+ 数据类型(Datatypes):http://phoenix.apache.org/language/datatypes.html
|
||||||
|
|
||||||
|
+ 序列(Sequences):http://phoenix.apache.org/sequences.html
|
||||||
|
|
||||||
|
+ 联结查询(Joins):http://phoenix.apache.org/joins.html
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## 四、Phoenix Java API
|
||||||
|
|
||||||
|
因为Phoenix遵循JDBC规范,并提供了对应的数据库驱动PhoenixDriver,这使采用Java对其进行操作的时候,就如同对其他关系型数据库(例如 MySQL)操作一样。
|
||||||
|
|
||||||
|
因为在实际的开发中我们通常都是采用第三方框架,比如mybatis,Hibernate,Spring Data 等,很少使用原生Java API操作关系型数据库,所以这里只给出一个简单的查询作为示例,并在下一篇文章中给出Spring boot + mybatis + Phoenix 的整合用例。
|
||||||
|
|
||||||
|
### 4.1 引入Phoenix core JAR包
|
||||||
|
|
||||||
|
如果是maven项目,直接在maven中央仓库找到对应的版本,导入依赖即可
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<!-- https://mvnrepository.com/artifact/org.apache.phoenix/phoenix-core -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.phoenix</groupId>
|
||||||
|
<artifactId>phoenix-core</artifactId>
|
||||||
|
<version>4.14.0-cdh5.14.2</version>
|
||||||
|
</dependency>
|
||||||
|
```
|
||||||
|
|
||||||
|
如果是普通项目,则可以从Phoenix 解压目录下找到对应的JAR包,然后手动引入
|
||||||
|
|
||||||
|
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/phoenix-core-jar.png"/> </div>
|
||||||
|
|
||||||
|
### 4.2 简单的Java API实例
|
||||||
|
|
||||||
|
```java
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.DriverManager;
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
|
||||||
|
|
||||||
|
public class PhoenixJavaApi {
|
||||||
|
|
||||||
|
public static void main(String[] args) throws Exception {
|
||||||
|
|
||||||
|
// 加载数据库驱动
|
||||||
|
Class.forName("org.apache.phoenix.jdbc.PhoenixDriver");
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 指定数据库地址,格式为 jdbc:phoenix:Zookeeper地址
|
||||||
|
* 如果HBase采用Standalone模式或者伪集群模式搭建,则HBase默认使用内置的Zookeeper,默认端口为2181
|
||||||
|
*/
|
||||||
|
Connection connection = DriverManager.getConnection("jdbc:phoenix:192.168.200.226:2181");
|
||||||
|
|
||||||
|
PreparedStatement statement = connection.prepareStatement("SELECT * FROM us_population");
|
||||||
|
|
||||||
|
ResultSet resultSet = statement.executeQuery();
|
||||||
|
|
||||||
|
while (resultSet.next()) {
|
||||||
|
System.out.println(resultSet.getString("city") + " "
|
||||||
|
+ resultSet.getInt("population"));
|
||||||
|
}
|
||||||
|
|
||||||
|
statement.close();
|
||||||
|
connection.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
结果如下:
|
||||||
|
|
||||||
|
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/Phoenix-java-api-result.png"/> </div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# 参考资料
|
||||||
|
|
||||||
|
1. http://phoenix.apache.org/
|
@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
### 2.1 Row Key (行键)
|
### 2.1 Row Key (行键)
|
||||||
|
|
||||||
Row Key是用来检索记录的主键。访问Hbase Table中的行,只有三种方式:
|
Row Key是用来检索记录的主键。访问HBase Table中的行,只有三种方式:
|
||||||
|
|
||||||
+ 通过单个Row Key访问
|
+ 通过单个Row Key访问
|
||||||
|
|
||||||
@ -35,7 +35,7 @@ Row Key是用来检索记录的主键。访问Hbase Table中的行,只有三
|
|||||||
|
|
||||||
+ 全表扫描
|
+ 全表扫描
|
||||||
|
|
||||||
Row Key (行键)可以是任意字符串(最大长度是 64KB,实际应用中长度一般为 10-100bytes),在Hbase内部,Row Key保存为字节数组。存储时,数据按照Row Key的字典序(byte order)排序存储。设计key时,要充分排序存储这个特性,将经常一起读取的行存储放到一起(位置相关性)。
|
Row Key (行键)可以是任意字符串(最大长度是 64KB,实际应用中长度一般为 10-100bytes),在HBase内部,Row Key保存为字节数组。存储时,数据按照Row Key的字典序(byte order)排序存储。设计key时,要充分排序存储这个特性,将经常一起读取的行存储放到一起(位置相关性)。
|
||||||
|
|
||||||
需要注意以下两点:
|
需要注意以下两点:
|
||||||
|
|
||||||
@ -47,7 +47,7 @@ Row Key (行键)可以是任意字符串(最大长度是 64KB,实际应用中
|
|||||||
|
|
||||||
### 2.2 Column Family(列族)
|
### 2.2 Column Family(列族)
|
||||||
|
|
||||||
hbase表中的每个列(Column),都归属与某个列族。列族是表的schema的一部分(列不是),必须在使用表之前定义。列名都以列族作为前缀。例如`courses:history`,`courses:math`都属于`courses `这个列族。
|
HBase表中的每个列(Column),都归属与某个列族。列族是表的schema的一部分(列不是),必须在使用表之前定义。列名都以列族作为前缀。例如`courses:history`,`courses:math`都属于`courses `这个列族。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -71,7 +71,7 @@ Cell是行,列族和列限定符的组合,并包含值和时间戳。
|
|||||||
|
|
||||||
### 2.6 Timestamp(时间戳)
|
### 2.6 Timestamp(时间戳)
|
||||||
|
|
||||||
HBase 中通过`row`和`columns`确定的为一个存储单元称为Cell。每个Cell都保存着同一份数据的多个版本。版本通过时间戳来索引。时间戳的类型是 64位整型。时间戳可以由hbase(在数据写入时自动 )赋值,此时时间戳是精确到毫秒的当前系统时间。时间戳也可以由客户显式赋值。如果应用程序要避免数据版本冲突,就必须自己生成具有唯一性的时间戳。每个Cell中,不同版本的数据按照时间倒序排序,即最新的数据排在最前面。
|
HBase 中通过`row`和`columns`确定的为一个存储单元称为Cell。每个Cell都保存着同一份数据的多个版本。版本通过时间戳来索引。时间戳的类型是 64位整型。时间戳可以由HBase(在数据写入时自动 )赋值,此时时间戳是精确到毫秒的当前系统时间。时间戳也可以由客户显式赋值。如果应用程序要避免数据版本冲突,就必须自己生成具有唯一性的时间戳。每个Cell中,不同版本的数据按照时间倒序排序,即最新的数据排在最前面。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -79,7 +79,7 @@ HBase 中通过`row`和`columns`确定的为一个存储单元称为Cell。每
|
|||||||
|
|
||||||
### 2.1 Regions
|
### 2.1 Regions
|
||||||
|
|
||||||
Hbase Table中的所有行都按照Row Key的字典序排列。HBase Tables 通过行键的范围(row key range)被水平切分成多个Region, 一个Region包含了在start key 和 end key之间的所有行。
|
HBase Table中的所有行都按照Row Key的字典序排列。HBase Tables 通过行键的范围(row key range)被水平切分成多个Region, 一个Region包含了在start key 和 end key之间的所有行。
|
||||||
|
|
||||||
<div align="center"> <img width="600px" src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/HBaseArchitecture-Blog-Fig2.png"/> </div>
|
<div align="center"> <img width="600px" src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/HBaseArchitecture-Blog-Fig2.png"/> </div>
|
||||||
|
|
||||||
@ -87,7 +87,7 @@ Hbase Table中的所有行都按照Row Key的字典序排列。HBase Tables 通
|
|||||||
|
|
||||||
<div align="center"> <img width="600px" src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/hbase-region-splite.png"/> </div>
|
<div align="center"> <img width="600px" src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/hbase-region-splite.png"/> </div>
|
||||||
|
|
||||||
Region是Hbase中**分布式存储和负载均衡的最小单元**。最小单元就表示不同的Region可以分布在不同的Region Server上。但一个Region是不会拆分到多个server上的。
|
Region是HBase中**分布式存储和负载均衡的最小单元**。最小单元就表示不同的Region可以分布在不同的Region Server上。但一个Region是不会拆分到多个server上的。
|
||||||
|
|
||||||
<div align="center"> <img width="600px" src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/hbase-region-dis.png"/> </div>
|
<div align="center"> <img width="600px" src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/hbase-region-dis.png"/> </div>
|
||||||
|
|
||||||
@ -122,7 +122,7 @@ HBase系统遵循Master/Salve架构,由三种不同类型的组件组成。
|
|||||||
|
|
||||||
3. 实时监控Region Server的状态,将Region server的上线和下线信息实时通知给Master
|
3. 实时监控Region Server的状态,将Region server的上线和下线信息实时通知给Master
|
||||||
|
|
||||||
4. 存储Hbase的schema,包括有哪些Table,每个Table有哪些Column Family
|
4. 存储HBase的schema,包括有哪些Table,每个Table有哪些Column Family
|
||||||
|
|
||||||
**Master**
|
**Master**
|
||||||
|
|
||||||
@ -192,7 +192,7 @@ HBase系统遵循Master/Salve架构,由三种不同类型的组件组成。
|
|||||||
|
|
||||||
如果再次读取,客户端将使用缓存来获取META 的位置及之前的行键。这样时间久了,客户端不需要查询META表,除非Region移动所导致的缓存失效,这样的话,则将会重新查询更新缓存。
|
如果再次读取,客户端将使用缓存来获取META 的位置及之前的行键。这样时间久了,客户端不需要查询META表,除非Region移动所导致的缓存失效,这样的话,则将会重新查询更新缓存。
|
||||||
|
|
||||||
注:META 表是Hbase中一张特殊的表,它保存了Hbase中所有数据表的Region位置信息,ZooKeeper存储着META 表的位置。
|
注:META 表是HBase中一张特殊的表,它保存了HBase中所有数据表的Region位置信息,ZooKeeper存储着META 表的位置。
|
||||||
|
|
||||||
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/HBaseArchitecture-Blog-Fig7.png"/> </div>
|
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/HBaseArchitecture-Blog-Fig7.png"/> </div>
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
### 1.1 JDK版本说明
|
### 1.1 JDK版本说明
|
||||||
|
|
||||||
Hbase 需要依赖JDK环境,同时Hbase 2.0+ 以上版本不再支持JDK 1.7 ,需要安装JDK 1.8+ 。JDK 安装方式见本仓库:
|
HBase 需要依赖JDK环境,同时HBase 2.0+ 以上版本不再支持JDK 1.7 ,需要安装JDK 1.8+ 。JDK 安装方式见本仓库:
|
||||||
|
|
||||||
> [Linux环境下JDK安装](https://github.com/heibaiying/BigData-Notes/blob/master/notes/installation/Linux下JDK安装.md)
|
> [Linux环境下JDK安装](https://github.com/heibaiying/BigData-Notes/blob/master/notes/installation/Linux下JDK安装.md)
|
||||||
|
|
||||||
@ -52,7 +52,7 @@ export PATH=$HBASE_HOME/bin:$PATH
|
|||||||
# source /etc/profile
|
# source /etc/profile
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2.3 进行Hbase相关配置
|
### 2.3 进行HBase相关配置
|
||||||
|
|
||||||
修改安装目录下的`conf/hbase-env.sh`,指定JDK的安装路径:
|
修改安装目录下的`conf/hbase-env.sh`,指定JDK的安装路径:
|
||||||
|
|
||||||
@ -86,9 +86,9 @@ export JAVA_HOME=/usr/java/jdk1.8.0_201
|
|||||||
|
|
||||||
`hbase.unsafe.stream.capability.enforce`: 使用本地文件系统存储,不使用HDFS的情况下需要禁用此配置,设置为false。
|
`hbase.unsafe.stream.capability.enforce`: 使用本地文件系统存储,不使用HDFS的情况下需要禁用此配置,设置为false。
|
||||||
|
|
||||||
### 2.4 启动Hbase
|
### 2.4 启动HBase
|
||||||
|
|
||||||
由于已经将Hbase的bin目录配置到环境变量,直接使用以下命令启动
|
由于已经将HBase的bin目录配置到环境变量,直接使用以下命令启动
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
# start-hbase.sh
|
# start-hbase.sh
|
||||||
@ -104,7 +104,7 @@ export JAVA_HOME=/usr/java/jdk1.8.0_201
|
|||||||
15500 HMaster
|
15500 HMaster
|
||||||
```
|
```
|
||||||
|
|
||||||
验证方式二:访问Hbase Web UI 页面,默认端口为`16010`
|
验证方式二:访问HBaseWeb UI 页面,默认端口为`16010`
|
||||||
|
|
||||||
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/hbase-web-ui.png"/> </div>
|
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/hbase-web-ui.png"/> </div>
|
||||||
|
|
||||||
@ -120,13 +120,13 @@ export JAVA_HOME=/usr/java/jdk1.8.0_201
|
|||||||
|
|
||||||
### 3.2 Hbase版本选择
|
### 3.2 Hbase版本选择
|
||||||
|
|
||||||
Hbase的版本必须要与Hadoop的版本兼容,不然会发生各种Jar包冲突。
|
HBase的版本必须要与Hadoop的版本兼容,不然会发生各种Jar包冲突。
|
||||||
|
|
||||||
由于我们Hadoop采用的版本为`hadoop-2.6.0-cdh5.15.2`,所以这里保持CDH版本一致,我们选择的Hbase版本为`hbase-1.2.0-cdh5.15.2` ,Hbase 1.2 的安装需要依赖JDK 1.7+ 。所有软件版本如下:
|
由于我们Hadoop采用的版本为`hadoop-2.6.0-cdh5.15.2`,所以这里保持CDH版本一致,我们选择的HBase版本为`hbase-1.2.0-cdh5.15.2` ,HBase 1.2 的安装需要依赖JDK 1.7+ 。所有软件版本如下:
|
||||||
|
|
||||||
+ hadoop 版本: hadoop-2.6.0-cdh5.15.2
|
+ Hadoop 版本: hadoop-2.6.0-cdh5.15.2
|
||||||
|
|
||||||
+ hbase 版本: hbase-1.2.0-cdh5.15.2
|
+ HBase 版本: hbase-1.2.0-cdh5.15.2
|
||||||
|
|
||||||
+ JDK 版本:JDK 1.8
|
+ JDK 版本:JDK 1.8
|
||||||
|
|
||||||
@ -163,7 +163,7 @@ export PATH=$HBASE_HOME/bin:$PATH
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
### 3.5 进行Hbase相关配置
|
### 3.5 进行HBase相关配置
|
||||||
|
|
||||||
1.修改安装目录下的`conf/hbase-env.sh`,指定JDK的安装路径:
|
1.修改安装目录下的`conf/hbase-env.sh`,指定JDK的安装路径:
|
||||||
|
|
||||||
@ -204,7 +204,7 @@ hadoop001
|
|||||||
|
|
||||||
### 3.6 验证启动是否成功
|
### 3.6 验证启动是否成功
|
||||||
|
|
||||||
验证方式一:JPS 查看进程,其中HMaster,HRegionServer,HQuorumPeer三个进程是Hbase的进程(其中HQuorumPeer是Hbase内置的Zookeeper的进程),其余的为HDFS和YARN的进程。
|
验证方式一:JPS 查看进程,其中HMaster,HRegionServer,HQuorumPeer三个进程是HBase的进程(其中HQuorumPeer是Hbase内置的Zookeeper的进程),其余的为HDFS和YARN的进程。
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
[root@hadoop001 conf]# jps
|
[root@hadoop001 conf]# jps
|
||||||
@ -221,6 +221,6 @@ hadoop001
|
|||||||
21933 HMaster
|
21933 HMaster
|
||||||
```
|
```
|
||||||
|
|
||||||
验证方式二:访问Hbase Web UI 界面,需要注意的是1.2 版本的Hbase的访问端口为`60010`
|
验证方式二:访问HBase Web UI 界面,需要注意的是1.2 版本的HBase的访问端口为`60010`
|
||||||
|
|
||||||
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/hbase-60010.png"/> </div>
|
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/hbase-60010.png"/> </div>
|
||||||
|
BIN
pictures/Phoenix-create-table.png
Normal file
After Width: | Height: | Size: 33 KiB |
BIN
pictures/Phoenix-delete.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
pictures/Phoenix-hadoop.png
Normal file
After Width: | Height: | Size: 81 KiB |
BIN
pictures/Phoenix-java-api-result.png
Normal file
After Width: | Height: | Size: 25 KiB |
BIN
pictures/Phoenix-select.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
pictures/Phoenix-update.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
pictures/hbase-web-ui-phoenix.png
Normal file
After Width: | Height: | Size: 91 KiB |
BIN
pictures/phoenix-core-jar.png
Normal file
After Width: | Height: | Size: 45 KiB |
BIN
pictures/phoenix-shell.png
Normal file
After Width: | Height: | Size: 51 KiB |