在傳統銀行 IT 架構中,聯機交易與統計分析系統每每採用不一樣的技術與物理設備,經過按期執行的 ETL 將聯機交易數據向分析系統中遷移。而做爲數據服務資源池,同一份數據可能被不一樣類型的微服務共享訪問。當一些聯機交易與審計類業務針對同一份數據同時運行時,必須保證請求在徹底隔離的物理環境中執行,作到交易分析業務無干擾。node
HBase 是一個高可靠性、高性能、面向列、可伸縮的分佈式存儲系統,善於處理大數據場景,具有如下特色: mysql
可是 HBase 在使用中也存在下面的一些問題:sql
爲了解決上述問題,在典型的數據中臺和服務平臺業務中,用戶須要選擇一個可彈性擴展的分佈式關係型數據庫,以知足如下需求:數據庫
SequoiaDB 巨杉數據庫是計算存儲分離架構,這種分佈式架構一方面能夠提供針對數據表的無限橫向水平擴張,另外一方面在計算層經過提供不一樣類型數據庫實例的方式,100%兼容 MySQL,PostgreSQL 與 SparkSQL協議與語法。除告終構化數據外,SequoiaDB 巨杉數據庫能夠在同一集羣支持包括 JSON 和 S3 對象存儲、以及Posix文件系統在內的非結構化數據,使整個數據庫面向上層的微服務架構應用提供了完整的數據服務資源池。
SequoiaDB 支持複雜 SQL 查詢、支持多索引、支持高併發,而且做爲開源分佈式數據庫運維簡單便捷。到目前爲止,已有大量用戶從 HBase 遷移至 SequoiaDB,本文將與你們分享從 HBase 遷移數據至 SequoiaDB 的操做實戰。
apache
先用 Hive 把 HBase 數據導出爲 csv 文件。Hbase 數據結構以下: bash
圖1 Hbase數據結構 整合HBase和hive, 建立hive外部表進行關聯數據結構
hive 建立外部表關聯 Hbase 參考語句架構
```併發
CREATE EXTERNAL TABLE hbase_user(
id string,
name string,
phone string,
birthday string,
id_number string,
gender string,
email string,
address string
) STORED BY
'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES
("hbase.columns.mapping" =
":key,info:name,info:phone,info:birthday,info:id_number,info:gender,info:email,i nfo:address") # 指定映射關係,:key爲rowkey
TBLPROPERTIES ("hbase.table.name"
= "user"); # 指定要映射的hbase表名複製代碼
整合效果以下圖所示app
hive (default)> select * from hbase_user
limit 1;
OK
hbase_user.id hbase_user.name hbase_user.phone hbase_user.birthday hbase_user.id_number hbase_user.gender hbase_user.email hbase_user.address
0004928c7287408085403c6ec4cd3c12 劉英 15073203583 2013-07-15 211324199408301340 M maojuan@yahoo.com 黑龍江省晶市徐匯六盤水街J座 222331複製代碼
導出 hive 表中的數據到 csv
# hive表導出csv參考語句
insert overwrite local directory
'/tmp/data/hbase_hive_export_user' row format delimited # 指定行分割符
fields terminated by ',' # 執行的列分割符
select * from hbase_user;複製代碼
導出的數據以下圖所示,爲 csv 格式
[hadoop@node hbase_hive_export_user.csv]$
tail -2f 000000_0
ffdca61d22b74462aefdcb948d819542,邊志強,18598897076,1958-08-25,52062819960928857X,M,ming52@gmail.com,內蒙古自治區太原縣潯陽史街P座 547199
ffdf82a4e2f84c3a9c99e726153d9496,傅玉華,14509458979,1977-08-13,451022198005119836,M,yanhe@hotmail.com,遼寧省兵縣山亭深圳路h座 706208複製代碼
sdbimprt 是 SequoiaDB 的數據導入工具,它能夠將 JSON 格式或 csv 格式的數據導入到 SequoiaDB 數據庫中。
將 HBase 導出的 csv 文件導入到 SequoiaDB 中,導入的命令以下:
sdbimprt --hosts=localhost:11810 --type=csv
--file=user.csv -c users -l employee --fields='id string,name string,phone string,birthday string,id_number string,gender string,email string,address string' 複製代碼
其中集合空間名稱爲users,集合名稱爲 employee,執行結果以下:
$ sdbimprt --hosts=localhost:11810
--type=csv --file=user.csv -c users -l employee --fields='id string,name string,phone string,birthday string,id_number string,gender string,email string,address string'
parsed records: 24282
parse failure: 0
sharding records: 0
sharding failure: 0
imported records: 24282
import failure: 0複製代碼
CREATE TABLE `employee` (
`id` int(11) DEFAULT NULL,
`name` varchar(50) COLLATE utf8mb4_bin DEFAULT NULL,
`phone` int(20) DEFAULT NULL,
`birthday` datetime DEFAULT NULL,
`id_number` int(20) DEFAULT NULL,
`gender` varchar(11) COLLATE utf8mb4_bin DEFAULT NULL,
`email` varchar(50) COLLATE utf8mb4_bin DEFAULT NULL,
`address` int(50) DEFAULT NULL
) ENGINE=SEQUOIADB DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_bin;複製代碼
圖2 SAC圖形化界面功能展現
登陸到 SequoiaDB 存儲引擎層,查看數據量爲24282,數據導入成功完畢。
#sdb
> db = new Sdb("localhost",
11810)
> db.users.employee.count()
24282
Takes 0.002236s.複製代碼
圖3 SAC圖形化界面SequoiaDB存儲引擎層查看數據示意圖
同時,在 SequoiaDB 對應的 MySQL 實例層,能夠查看到對應數據是24282
$ /opt/sequoiasql/mysql/bin/mysql -h
127.0.0.1 -P 3306 -u root
...
mysql> use users;
Database changed
mysql> show tables;
+-----------------+
| Tables_in_users |
+-----------------+
| employee |
+-----------------+
1 row in set (0.00 sec)
mysql> select count(*) from employee;
+----------+
| count(*) |
+----------+
|
24282 |
+----------+
1 row in set (0.00 sec)複製代碼
在SequoiaDB 的 SAC 圖形化界面中,查看 MySQL 實例層,得出數據條數爲24282
圖4 SAC界面MySQL實例層查詢數據示意圖
在 SequoiaDB 的 mysql 實例層建立多個索引
mysql> ALTER TABLE `employee` ADD INDEX
index_id (`id`);
mysql> ALTER TABLE `employee` ADD INDEX
index_email (`name`);複製代碼
在SequoiaDB的mysql實例層,執行多個索引查詢:
mysql> select count(*) from employee
where name="xiuyingxia";
+----------+
| count(*) |
+----------+
|
2 |
+----------+
1 row in set (0.00 sec)複製代碼
從 HBase 遷移數據至 SequoiaDB,而且在 SequoiaDB 的 SAC 界面能夠分別從底層存儲引擎層和 MySQL 的實例層查看到對應導入的數據,而且支持多索引查詢。
SequoiaDB 支持複雜 SQL 查詢、支持多索引、支持高併發,做爲開源分佈式數據庫運維簡單便捷。Hbase 遷移至 SequoiaDB,能夠先經過 hive 導出數據文件 csv 格式,而後經過 SequoiaDB 的導入工具 sdbimprt 導入到 SequoiaDB 中。