添加MySQL数据源
本章节适用于MRS 3.3.0及之后的版本。
HetuEngine支持配置MySQL数据源实现对MySQL数据源的接入与查询功能。本章节指导用户在集群的HSConsole界面添加MySQL类型的JDBC数据源。
添加MySQL数据源前提条件
- 数据源与HetuEngine集群节点网络互通。
- 集群已启用Kerberos认证(安全模式)创建HetuEngine管理员用户,集群未启用Kerberos认证(普通模式)创建HetuEngine业务用户,并为其赋予HDFS管理员权限,即创建用户时需同时加入“hadoop”和“hadoopmanager”用户组,创建用户可参考创建HetuEngine权限角色。
- 已创建HetuEngine计算实例,可参考创建HetuEngine计算实例。
- 已获取MySQL数据库所在的IP地址,端口号,用户名及密码。
HetuEngine对接MySQL数据源约束
配置MySQL数据源步骤
安装集群客户端
- 安装包含HetuEngine服务的集群客户端,例如安装目录为“/opt/hadoopclient”。
准备MySQL驱动
- 从MySQL官网获取MySQL驱动文件,格式为“xxx.jar”,支持版本为MySQL 5.7,MySQL 8.0及以后版本。
- 上传MySQL驱动文件至HetuEngine所在集群。
可通过如下两种方式:
- 通过Manager界面上传至HDFS:
- 使用HetuEngine管理员用户登录FusionInsight Manager,选择“集群 > 服务 > HDFS”,进入HDFS服务页面。
- 在“概览”页签下的“基本信息”区域,单击“NameNode Web UI”后的链接,进入NameNode Web UI界面。
- 选择“Utilities > Browse the file system”,单击,创建“/user/hetuserver/fiber/extra_file/driver/mysql”目录。
- 进入“/user/hetuserver/fiber/extra_file/driver/mysql”目录,单击上传2获取的MySQL驱动文件。
- 单击驱动文件所在行的“Permission”列的值,勾选“User”列的“Read”和“Write”,“Group”列的“Read”和“Other”列的“Read”,单击“Set”。
- 通过使用HDFS命令直接上传:
- 登录HDFS服务客户端所在节点,切换到客户端安装目录,如“/opt/hadoopclient”。
cd /opt/hadoopclient
- 执行以下命令配置环境变量。
- 如果集群为安全模式,执行以下命令进行用户认证。普通模式集群无需执行用户认证。
根据回显提示输入密码。
- 执行如下命令创建目录“/user/hetuserver/fiber/extra_file/driver/mysql”,并上传2获取的MySQL驱动,然后修改对应的权限。
hdfs dfs -mkdir -p /user/hetuserver/fiber/extra_file/driver/mysql
hdfs dfs -put ./MySQL驱动文件 /user/hetuserver/fiber/extra_file/driver/mysql
hdfs dfs -chmod -R 644 /user/hetuserver/fiber/extra_file/driver/mysql
- 登录HDFS服务客户端所在节点,切换到客户端安装目录,如“/opt/hadoopclient”。
- 通过Manager界面上传至HDFS:
配置MySQL数据源
- 使用HetuEngine管理员用户登录FusionInsight Manager,选择“集群 > 服务 > HetuEngine”,进入HetuEngine服务页面。
- 在“概览”页签下的“基本信息”区域,单击“HSConsole WebUI”后的链接,进入HSConsole界面。
- 选择“数据源”,单击“添加数据源”。在“添加数据源”页面填写参数。
- 配置“基本配置”,填写数据源名称,选择数据源类型“JDBC > MySQL”。
- 配置“MySQL配置”,参数配置请参考表1。
表1 MySQL配置 参数
描述
取值样例
驱动
默认为“mysql”。
mysql
驱动名称
选择2中已提前上传的待使用的MySQL驱动,格式为xxx.jar。
mysql-connector-java-8.0.11.jar
JDBC URL
连接MySQL的JDBC URL地址。
格式:jdbc:mysql://MySQL数据库所在的IP地址:端口号。
端口号默认为3306。
- IPV4:jdbc:mysql://10.10.10.11:3306
- IPV6:jdbc:mysql://[10:10::10:11]:3306
用户名
连接MySQL数据源的MySQL用户名。
-
密码
连接MySQL数据源的MySQL用户密码。
-
- (可选)自定义配置。
单击“增加”可以增加自定义配置参数。配置MySQL数据源自定义参数,参考表2。
表2 MySQL数据源自定义配置参数 参数
描述
取值样例
mysql.auto-reconnect
是否自动重连。
- true(默认值):开启自动重连。
- false:关闭自动重连。
true
mysql.max-reconnects
最大重连次数,默认值:3。
3
mysql.jdbc.use-information-schema
驱动程序是否应该使用INFORMATION_SCHEMA来派生“DatabaseMetaData”使用的信息。
true
use-connection-pool
是否使用JDBC连接池,默认值:false。
false
jdbc.connection.pool.maxTotal
JDBC连接池中最大连接数,默认值:8。
8
jdbc.connection.pool.maxIdle
JDBC连接池中最大空闲连接数,默认值:8。
8
jdbc.connection.pool.minIdle
JDBC连接池中最小空闲连接数,默认值:0。
0
case-insensitive-name-matching
HetuEngine支持的MySQL数据源的Schema和Table名称大小写格式敏感。
- false(默认值):仅支持查询全小写的Schema和Table。
- true:
- 忽略大小写后无同名的Schema和Table:支持查询该Schema和Table。
- 忽略大小写后存在同名的Schema和Table:不支持查询该Schema和Table。
false
case-insensitive-name-matching.cache-ttl
MySQL数据源的大小写敏感的Schema和Table名称缓存超时时长,默认值:1m(1分钟)。
1m
dynamic-filtering.enabled
是否将动态过滤器下推到JDBC查询中。
- true(默认值):开启下推。
- false:关闭下推。
true
dynamic-filtering.wait-timeout
在启动 JDBC 查询之前,HetuEngine将等待从连接的构建端收集动态过滤器的最大持续时间。使用较大的超时可能会导致更详细的动态过滤器。但是也会增加某些查询的延迟,默认值:20s。
20s
unsupported-type-handling
当连接器不支持此数据类型时,是否将其转换为VARCHAR,从而避免失败。
- CONVERT_TO_VARCHAR:将不支持的类型转为VARCHAR类型,并且只支持对它们的读操作。
- IGNORE(默认值):不支持的类型将不在查询结果中显示。
IGNORE
join-pushdown.enabled
是否启用Join下推。
- true(默认值):开启Join下推。
- false:关闭Join下推。
true
join-pushdown.strategy
用于评估Join操作是否被下推的策略。默认值:AUTOMATIC
- AUTOMATIC(默认值):启用基于成本的连接下推。
- EAGER:尽可能下推Join。即使表统计信息不可用, EAGER也可以下推Join,这可能会导致查询性能下降,因此仅建议将EAGER用于测试和故障排除场景。
AUTOMATIC
单击“删除”可以删除已增加的自定义配置参数。
- 单击“确定”。
- 登录集群客户端所在节点,执行以下命令,切换到客户端安装目录并认证用户。
cd /opt/hadoopclient
source bigdata_env
kinit HetuEngine组件操作用户 (普通模式集群跳过)
- 执行以下命令,登录数据源的catalog。
hetu-cli --catalog 数据源名称 --schema 数据库名
例如执行以下命令:
hetu-cli --catalog mysql_1 --schema mysql
- 执行以下命令,可正常查看数据库表信息或不报错即表示连接成功。
show tables;
MySQL与HetuEngine数据类型映射
MySQL类型 |
HetuEngine类型 |
---|---|
BIT |
BOOLEAN |
BOOLEAN |
TINYINT |
TINYINT |
TINYINT |
SMALLINT |
SMALLINT |
INTEGER |
INTEGER |
BIGINT |
BIGINT |
DOUBLE PRECISION |
DOUBLE |
FLOAT |
REAL |
REAL(m, d) |
REAL(m, d) |
DECIMAL(p, s) |
DECIMAL(p, s) |
CHAR(n) |
CHAR(n) |
VARCHAR(n) |
VARCHAR(n) |
TINYTEXT |
VARCHAR(255) |
TEXT |
VARCHAR(65535) |
MEDIUMTEXT |
VARCHAR(16777215) |
LONGTEXT |
VARCHAR |
ENUM(n) |
VARCHAR(n) |
BINARY, VARBINARY, TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB |
VARBINARY |
JSON |
JSON |
DATE |
DATE |
TIME(n) |
TIME(n) |
DATETIME(n) |
TIMESTAMP(n) |
TIMESTAMP(n) |
TIMESTAMP(n) |