【项目】全栈开发医疗小程序 第1章 课程介绍 1.5 搭建HBase+Phoenix大数据平台

【项目】全栈开发医疗小程序

在这里插入图片描述

第1章 课程介绍

1.5 搭建HBase+Phoenix大数据平台

平时我们开发程序用的最多的是MySQL数据库,但是MySQL数据库有一个绕不过去的坎:单表数据量超过2000
万,CRUD的性能会急速下降。

所以我们要安排DBA或者自动化脚本,定期把半年或者一年的数据,迁移到归档数据库中,这样就可以起到缩表的目的。如果开发的是普通的MIS系统,业务数据没有那么多,一个MySQL不用做定期归档也能支撑下来。但是类似于电商平台的项目,每天都会产生大量业务数据,一两个月就能累积几千万条数据。这种情况下,要么频繁的做数据归档,要么选择可以容纳数百TB而不需要归档的大数据平台。这里我选择了后者,既可以降低开发难度,又能减少请DBA的运维成本,何乐而不为呢。

1.5.1 大数据平台的技术选择
1 HBase技术

HBase是一个分布式,版本化,面向列的开源数据库,构建在Apache Hadoop和Apache ZooKeeper之上。

HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server_上搭建起大规模结构化存储集群。

HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库,HBase基于列的而不是基于行的模式。

在这里插入图片描述

HBase的特点

  1. 海量数据存储,HBase中的表可以容纳上百亿行 x 上百万列的数据。
  2. 列式存储,HBase中的数据是基于列进行存储的,能够动态的增加和删除列。
  3. 准卖时查询,HBase在海量的数据量下能够接近准实时的查询(百毫秒以内)
  4. 多版本,HBaser中每一列的数据都有多个版本。
  5. 高可靠性,HBase中的数据存储于HDFS中且依赖于Zookeeper进行Master和RegionServer的协调管理。

HBase虽然支持表结构,但是操作起来并不方便。例如下面是个学生表,里面包含了若干的字段。

示例:Student数据表

在这里插入图片描述

如果我们给学生表添加新的记录,就需要执行下面的命令:

put 'Student','0001','StuInfo:Name','Tom Green',1

想要获取数据的时候,我们执行get命令就可以了。

get 'Student','0001'

对于我们平时习惯SQL语句的人来说,上面的命令如果简单还行,要是叠加上复杂的条件和函数,那么阅读性就非
常差,所以我们要引入Phoenix技术。

scan 'mytest:test01',FILTER=>"RowFilter(=,'substring:202006')",LIMIT=>1

count 'mytest:test01',FILTER=>"RowFilter(=,'substring:202004')",INTERVAL=>10000
2 Phoenix技术

Phoenix是给HBase添加了一个语法表示层,允许我们用SQL语句读写HBase中的数据,可以做联机事务处理,拥
有低延迟的特性,这就方便多了。

Phoenix:会把SQL编译成一系列的Hbasel的scan操作,然后把scan结果生成标准的JDBC结果集,处理千万级行的数据也只用毫秒或秒级就搞定。而且Phoenix还支持MyBatis框架,正好可以和我们的项目整合到一起。

在这里插入图片描述

1.5.2 部署HBase与Phoenix
1 导入镜像文件

首先我们在课程共享的资源中找到phoenix.tar.gz镜像文件,然后把这个文件上传到CentOS系统中,执行命令,把镜像文件导入Docker之中。

在这里插入图片描述

命令:docker load < phoenix.tar.gz

在这里插入图片描述

执行命令

在这里插入图片描述

记得启动docker 先

在这里插入图片描述

查看现有镜像

在这里插入图片描述

2 创建容器

因为镜像中已经包含和HBase和Phoenix,所以我们只需要创建出容器即可。

由于HBase需要使用的内存较大,这里我没有规定具体的内存大小,容器会自动使用空闲的内存。容器中数据目录是/tmp/hbase-root/hbase/data,我把这个目录映射到宿主机的/root/hbase/data目录。

docker run -it -d -p 2181:2181 -p 8765:8765 -p 15165:15165 \
-p 16000:16000 -p 16010:16010 -p 16020:16020 \
-v /root/hbase/data:/tmp/hbase-root/hbase/data \
--name phoenix \
boostport/hbase-phoenix-all-in-one:2.0-5.0

在这里插入图片描述

当前正在运行的容器

在这里插入图片描述

3 开放端口

笔者这里直接把防火墙关了

在这里插入图片描述

4 初始化Phoenix

运行命令,进入到Phoenix容器中,然后执行命令设置HBASE_CONF_DIR环境变量。

docker exec -it phoenix bash

export HBASE_CONF_DIR=/opt/hbase/conf/

在这里插入图片描述

接下来我们要连接Phoenix的命令行客户端。虽然IDEA也内置了Phoenix客户端,但是Bug挺多的,用着并不方
便,所以我建议大家使用Phoenix自带的命令行客户端更好一些。而且我们要执行的SQL语句也并不多,命令行客
户端已经足够用了。

/opt/phoenix-server/bin/sqlline.py localhost

在这里插入图片描述

第一次连接要多等一下

在这里插入图片描述

出来了,这样就连上了

1.5.3 创建逻辑库和数据表
1 创建逻辑库

为了存储数据,我们需要像操作MySQL一样,先创建逻辑库,然后定义数据表。在Phoenix的命令行客户端我们先来执行创建逻辑库的命令。

CREATE SCHEMA hospital;

USE hospital;

在这里插入图片描述

2 创建数据表与导入数据

在本课程的git上面有数据库脚本,SQL文件,你把这个SQL文件中的语句复制粘贴到Phoenix的命令行中执行即可。

在这里插入图片描述

一股脑儿全部贴过去就行了

在这里插入图片描述

1350 行

在这里插入图片描述

等他执行完毕【创建索引比较耗时】

在这里插入图片描述

OK, 完事儿了,退出

在这里插入图片描述

1.5.4 配置JDBC连接信息

这里要导入项目了

这里老师用了api 那个做演示

在这里插入图片描述

复制工程到自己的目录

在这里插入图片描述

用IDEA 导入打开

在这里插入图片描述

在这里插入图片描述

使用我们自己的maven 配置

在这里插入图片描述

挺新的,2.7.2 版本的SpringBoot

在这里插入图片描述

等待项目构建完成

在这里插入图片描述

注意用的JDK 版本,是我们前面装的15

在这里插入图片描述

构建完成

在这里插入图片描述

这里要改成我们的服务器(虚拟机IP)

在这里插入图片描述

还有另一个Java 项目,现在打开这个是微信小程序的接口后台,还有个web 端的接口后台

在这里插入图片描述

同样也用IDEA 导入打开

在这里插入图片描述

在这里插入图片描述

同样用我们本地的maven 配置

在这里插入图片描述

同样的改上面那个地方就行了

在这里插入图片描述

这个项目的springboot 版本还要高两个点

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

OK,就这样。

猜你喜欢

转载自blog.csdn.net/weixin_44226181/article/details/130480270