centos 7环境部署百度开源apache doris 1.1

了解到doris作为百度推出的分析型数据库,据文档说明,能够兼容mysql的操作,甚至客户端完全可以使用mysql客户端连接服务器进行操作。具体情况怎样,搭建一个基本环境来测试一下。

官网参考地址:Home - Apache Doris

1. 正常的部署流程

1.1 下载部署包

cd /opt
mkdir doris
cd doris
wget https://archive.apache.org/dist/doris/1.1/1.1.0-rc05/apache-doris-1.1.0-bin-x86-jdk8.tar.gz

在linux环境下通过wget下载,速度非常慢,windows环境下,通过下载工具下载,速度快了很多,也可能是网络原因。 

1.2 解压缩

tar -zxvf apache-doris-1.1.0-bin-x86-jdk8.tar.gz

1.3 修改目录

mv apache-doris-1.1.0-bin-x86-jdk8 doris

修改为较短的目录,主要是为了后续操作方便一些。 

1.4 修改配置

vi fe/conf/fe.conf
priority_networks = 192.168.0.0/16

vi be/conf/be.conf
priority_networks = 192.168.0.0/16

这里根据具体的环境进行修改,确保ip地址在对应的网段范围内。 

1.5 环境变量

vim /etc/profile.d/doris.sh


export DORIS_HOME=/opt/doris
export PATH=$PATH:$DORIS_HOME/fe/bin:$DORIS_HOME/be/bin


source /etc/profile.d/doris.sh

1.6 启动

./fe/bin/start_fe.sh --daemon
./be/bin/start_be.sh --daemon

如果正常情况下,这样就完成的基本部署了。可以通过mysql客户端或者浏览器进行访问了。

1.7 浏览器访问

centos 7环境部署百度开源apache doris 1.1_第1张图片

 输入用户名,进行登录。找到system->backends

centos 7环境部署百度开源apache doris 1.1_第2张图片

如果能够看到be,并且alive状态为true,说明be以及添加到集群,并且处于活跃状态。 centos 7环境部署百度开源apache doris 1.1_第3张图片

 如果没有任何be,则需要执行sql语句进行添加。

mysql -h FE_IP -P 9030 -uroot

# 注册 BE
ALTER SYSTEM ADD BACKEND "BE_IP:9050";

2. 遇到的错误

理想情况下,部署完就可以开始进行测试了,然后现实情况却不是这样的,可能会碰到各种问题等待去解决。

2.1 启动失败

启动be失败,查看日志出现了如下的错误。

CPU does not support AVX2 instruction set

由于CPU不支持avx2指令集,建议从源码包重新build,指定特定的参数。过程可能比较复杂,这里放弃,寻找支持avx2指令的机器。

 查看是否支持avx2指令

cat /proc/cpuinfo |grep avx2

如果有输出信息,则说明支持avx2指令集。

在新的机器上重复前面的部署过程。

2.2 创建mysql外部表失败

测试性能首先需要创建表,导入大量的数据,这里采用的方法是,先创建一个mysql的外部表,然后再创建一个本地表,然后从外部表导入数据到本地表,再在本地表执行相关的查询等操作,看看性能和效率情况。

首先是创建资源:

CREATE EXTERNAL RESOURCE `mysql_odbc`
    PROPERTIES (
    "type" = "odbc_catalog",
    "host" = "192.168.0.180",
    "port" = "3306",
    "user" = "root",
    "password" = "password",
    "database" = "dbname",
    "odbc_type" = "mysql",
    "driver" = "MySQL"
);

提示找不到mysql的odbc驱动。经过查找资料,发现是需要安装mysql的odbc驱动。于是到官网下载mysql驱动。

下载8.0.30版本出现如下错误:

SSL connection error: Failed to set ciphers to use (2026)

下载8.0.27,下载地址:https://cdn.mysql.com/archives/mysql-connector-odbc-8.0/mysql-connector-odbc-8.0.27-linux-glibc2.12-x86-64bit.tar.gz

下载后,进行加压:

解压
tar -zxvf mysql-connector-odbc-8.0.27-linux-glibc2.12-x86-64bit.tar.gz

在be的配置目录下的odbcinst.ini文件中,添加如下配置:

# Driver from the mysql-connector-odbc package
# Setup from the unixODBC package
[MySQL ODBC 8.0 Unicode Driver]
Description     = ODBC for MySQL
Driver          = /home/mysql-odbc-driver/lib/libmyodbc8w.so
FileUsage       = 1

然后,重启be,重新创建外部资源,修改驱动名称。

CREATE EXTERNAL RESOURCE `mysql_odbc`
    PROPERTIES (
    "type" = "odbc_catalog",
    "host" = "192.168.0.180",
    "port" = "3306",
    "user" = "root",
    "password" = "password",
    "database" = "dbname",
    "odbc_type" = "mysql",
    "driver" = "MySQL ODBC 8.0 Unicode Driver"
);

 在外部资源的基础上,创建外部表。

create EXTERNAL table ext_bill_2020y
(
    `bill_id` varchar(32) NOT NULL ,
    `merchant_no` varchar(32) DEFAULT NULL ,    
    `bill_no` varchar(64) DEFAULT NULL ,
    `bill_date` datetime DEFAULT NULL    
)
    ENGINE=ODBC
    PROPERTIES (
    "odbc_catalog_resource" = "mysql_odbc",
    "database" = "box",
    "table" = "bill_2020y"
);

创建成功后,就可以像访问本地方法一下进行查询操作了。

2.3 创建本地表失败

doris中创建本地表,虽然和mysql有类似的地方,但是,也有比较多不一样的地方。

create table bill_2020y
(
    `bill_id` varchar(32) NOT NULL ,
    `merchant_no` varchar(32) DEFAULT NULL ,
    `bill_no` varchar(64) DEFAULT NULL ,
    `bill_date` datetime DEFAULT NULL       
)   ENGINE=OLAP
    DUPLICATE KEY(bill_id)
    PARTITION BY RANGE(bill_date)(    	
    )
    DISTRIBUTED BY HASH(bill_id) BUCKETS 10
    PROPERTIES
    (
        "replication_num" = "1",
        "dynamic_partition.enable" = "true",
        "dynamic_partition.create_history_partition" = "true",
        "dynamic_partition.history_partition_num" = "21",
        "dynamic_partition.time_unit" = "MONTH",
        "dynamic_partition.start" = "-24",
        "dynamic_partition.end" = "1",
        "dynamic_partition.prefix" = "p",
        "dynamic_partition.buckets" = "10"
    );

这里需要指定表类型,以下简要说明:

Aggregate 模型:聚合模型,可以根据业务需要,配置成导入数据聚合,保留明细数据,导入数据与已有数据聚合。

Unique 模型:主键唯一模型,在某些多维分析场景下,用户更关注的是如何保证 Key 的唯一性,即如何获得 Primary Key 唯一性约束。因此,我们引入了 Unique 的数据模型。该模型本质上是聚合模型的一个特例,也是一种简化的表结构表示方式。

Duplicate 模型:可重复模型,在某些多维分析场景下,数据既没有主键,也没有聚合需求。因此,我们引入 Duplicate 数据模型来满足这类需求。

只有一个节点的情况下,需要指定参数"replication_num" = "1",否则会出现建表失败。

Key columns should be a ordered prefix of the schema.

以上错误提示,表示关键列应放在表定义的前面。

这里用到动态分区配置,建表时根据配置的参数创建一定的分区。

2.4 创建本地表失败

添加数据时,出现下面的提示:

data cannot be inserted into table with empty partition.

以上提示,表示数据对于的分区没有创建,无法写入数据。应调整建表参数,确保写入数据的分区在写入数据以前提前创建好。

查看分区

SHOW PARTITIONS FROM bill_2020y;

查看分区表

 SHOW DYNAMIC PARTITION TABLES;

2.5 导入数据失败

insert into bill_2020y select * from ext_bill_2020y;

 从外部表导入数据到本地表,由于外部表中数据5000多万条,数据量比较大,使用该语句导致sql执行超时都无法完成。后面尝试过添加where条件,缩短单次导入的数据量,是可以进行导入的,但是其中一年的数据,如果手动逐步修改条件,难度太大。后来采用程序写定时任务循环导入了,指定好要导入的时间范围,再次范围内按天循环,在一天内又按几个小时一个批次循环,最终将数据导入到本地表中。

你可能感兴趣的:(数据库,centos,doris)