社区推荐是自己编译,官网在这里,过程相当简单,就一句话 sh build.sh,但是在编译过程中容易遇到各种失败,例如Failed to download DataTables.zip during the compilation of the third-party library就需要更改下载数据源,更改完这个可能还有其他问题,这里就用已编译版本了,如果坚持要自己编译可以看这个大神的博客。
Doris架构也很简单,分成FE(front end)和BE(back end):
FE 的磁盘空间主要用于存储元数据,包括日志和 image。通常从几百 MB 到几个 GB 不等
BE 的磁盘空间主要用于存放用户数据,总磁盘空间按用户总数据量 * 3(3副本)计算
一、安装
1.下载解压
wget https://palo-cloud-repo-bd.bd.bcebos.com/baidu-doris-release/DORIS-0.14.7-release-binary.tar.gz
tar -xvzf DORIS-0.14.7-release-binary.tar.gz
2.启动
(1)启动FE
先在FE目录下创建文件夹doris-meta,不然会报错退出
mkdir /data/doris/fe/doris-meta
然后到fe的bin目录启动 ./start_fe.sh --daemon ,如果成功的话,jps有进程
有其他问题可以查看fe目录下log里面的fe.log,
例如我遇到端口占用问题,到fe的conf文件夹下更改一下端口就好了
[HttpServer$HttpServerThread.run():240] Fail to start FE query http server[port: 8030]
(2)连接FE
mysql -h 10.190.11.2 -P 9030 -uroot
注意这里的ip是内网ip哈,如果不知道的,输入ifconfig看一下。
然后在SQL界面添加BE
ALTER SYSTEM ADD BACKEND "10.190.11.2:9050";
然后退出。
(3)启动BE
在be文件夹下面创建storage文件夹 mkdir /data/doris/be/storage
到be文件夹的bin目录 ./start_be.sh --daemon
(4)验证
重新连接
mysql -h 10.190.11.2 -P 9030 -uroot
SHOW PROC '/backends';
看一下Alive那边是不是true,不是的话看看日志。
3.访问网页端
输入ip:8030可以访问web端
这里查看表结构信息,日志、活动的链接,管理起来比较方便
二、使用
1.使用其实就是各种SQL的事情了。比如建个库,建个表
CREATE TABLE table1
(
stat_time datetime,
cnt bigint
)
DISTRIBUTED BY HASH(stat_time) BUCKETS 10
PROPERTIES("replication_num" = "1");
2.导入mysql数据
方式一:通过FLINK CDC实时同步Mysql数据到Doris
方式二:通过外部表方式导入
Doris通过ODBC协议可以访问外部表,从而让它具有访问各种数据库的能力。具体可以参考这里
2.1安装mysql odbc驱动
驱动直接去官网下载就好了,先安装UnixODBC再安装官网的ODBC,不然会报错
yum install unixODBC -y
rpm -ivh mysql-connector-odbc-8.0.26-1.el8.x86_64.rpm
2.2配置BE的ODBC信息
vim /opt/doris/be/conf/odbcinst.ini
[MySQL Driver]
Description = ODBC for MySQL
Driver = /usr/lib64/libmyodbc8a.so
FileUsage = 1
配置完成重启BE
2.4 Doris使用ODBC访问mysql表
CREATE EXTERNAL TABLE `ext_mysql` (
`id` int,
`name` char(20)
) ENGINE=ODBC
COMMENT "ODBC"
PROPERTIES (
"host" = "10.190.11.2",
"port" = "3306",
"user" = "root",
"password" = "123456",
"database" = "zh",
"table" = "flink_test",
"driver" = "MySQL Driver", --注意这里的名称和odbcinst.ini里的mysql[]里的名称一致
"odbc_type" = "mysql"
);
然后select * from ext_mysql看看有没有成功
三、报错解决:
1如果遇到报错 connect refuse可以到be的log下面看be.info具体报错信息:
File descriptor number is less than 60000. Please use (ulimit -n) to set a value equal or greater than 60000
W0702 10:53:45.039664 1465806 storage_engine.cpp:174] check fd number failed, error: Internal error: file descriptors limit is too small
W0702 10:53:45.039690 1465806 storage_engine.cpp:103] open engine failed, error: Internal error: file descriptors limit is too small
处理方法:
ulimit -n 65535
或者修改配置文件: /etc/security/limits.conf, 添加
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
2如果遇到报错
ERROR 2003 (HY000): Can't connect to MySQL server on '10.190.11.2:9030' (111) 可以到fe的log 文件夹看到具体报错:
INFO (UNKNOWN 192.168.49.1_9010_1624978186116(-1)|1) [Catalog.waitForReady():804] wait catalog to be ready. FE type: UNKNOWN. is ready: false
处理方法:
在Master
节点的FE
的配置文件fe.conf
文件添加metadata_failure_recovery = true
然后重启fe之后再把这句话注释掉
具体可以看这里