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


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

    官网参考地址:Home - Apache Doris

    1. 正常的部署流程

    1.1 下载部署包

    1. cd /opt
    2. mkdir doris
    3. cd doris
    4. 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 修改配置

    1. vi fe/conf/fe.conf
    2. priority_networks = 192.168.0.0/16
    3. vi be/conf/be.conf
    4. priority_networks = 192.168.0.0/16

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

    1.5 环境变量

    1. vim /etc/profile.d/doris.sh
    2. export DORIS_HOME=/opt/doris
    3. export PATH=$PATH:$DORIS_HOME/fe/bin:$DORIS_HOME/be/bin
    4. source /etc/profile.d/doris.sh

    1.6 启动

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

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

    1.7 浏览器访问

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

    如果能够看到be,并且alive状态为true,说明be以及添加到集群,并且处于活跃状态。 

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

    1. mysql -h FE_IP -P 9030 -uroot
    2. # 注册 BE
    3. 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的外部表,然后再创建一个本地表,然后从外部表导入数据到本地表,再在本地表执行相关的查询等操作,看看性能和效率情况。

    首先是创建资源:

    1. CREATE EXTERNAL RESOURCE `mysql_odbc`
    2. PROPERTIES (
    3. "type" = "odbc_catalog",
    4. "host" = "192.168.0.180",
    5. "port" = "3306",
    6. "user" = "root",
    7. "password" = "password",
    8. "database" = "dbname",
    9. "odbc_type" = "mysql",
    10. "driver" = "MySQL"
    11. );

    提示找不到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

    下载后,进行加压:

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

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

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

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

    1. CREATE EXTERNAL RESOURCE `mysql_odbc`
    2. PROPERTIES (
    3. "type" = "odbc_catalog",
    4. "host" = "192.168.0.180",
    5. "port" = "3306",
    6. "user" = "root",
    7. "password" = "password",
    8. "database" = "dbname",
    9. "odbc_type" = "mysql",
    10. "driver" = "MySQL ODBC 8.0 Unicode Driver"
    11. );

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

    1. create EXTERNAL table ext_bill_2020y
    2. (
    3. `bill_id` varchar(32) NOT NULL ,
    4. `merchant_no` varchar(32) DEFAULT NULL ,
    5. `bill_no` varchar(64) DEFAULT NULL ,
    6. `bill_date` datetime DEFAULT NULL
    7. )
    8. ENGINE=ODBC
    9. PROPERTIES (
    10. "odbc_catalog_resource" = "mysql_odbc",
    11. "database" = "box",
    12. "table" = "bill_2020y"
    13. );

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

    2.3 创建本地表失败

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

    1. create table bill_2020y
    2. (
    3. `bill_id` varchar(32) NOT NULL ,
    4. `merchant_no` varchar(32) DEFAULT NULL ,
    5. `bill_no` varchar(64) DEFAULT NULL ,
    6. `bill_date` datetime DEFAULT NULL
    7. ) ENGINE=OLAP
    8. DUPLICATE KEY(bill_id)
    9. PARTITION BY RANGE(bill_date)(
    10. )
    11. DISTRIBUTED BY HASH(bill_id) BUCKETS 10
    12. PROPERTIES
    13. (
    14. "replication_num" = "1",
    15. "dynamic_partition.enable" = "true",
    16. "dynamic_partition.create_history_partition" = "true",
    17. "dynamic_partition.history_partition_num" = "21",
    18. "dynamic_partition.time_unit" = "MONTH",
    19. "dynamic_partition.start" = "-24",
    20. "dynamic_partition.end" = "1",
    21. "dynamic_partition.prefix" = "p",
    22. "dynamic_partition.buckets" = "10"
    23. );

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

    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条件,缩短单次导入的数据量,是可以进行导入的,但是其中一年的数据,如果手动逐步修改条件,难度太大。后来采用程序写定时任务循环导入了,指定好要导入的时间范围,再次范围内按天循环,在一天内又按几个小时一个批次循环,最终将数据导入到本地表中。

  • 相关阅读:
    8年经验之谈 —— 记一次接口压力测试与性能调优!
    7. 内置函数range()、循环结构
    聊聊今年测试秋招情况......
    【接口技术】定时计数器习题
    手把手教你设计一个CSDN系统
    Linux XWindow的原理介绍。
    教学资源共享平台的设计
    大模型从入门到应用——LangChain:代理(Agents)-[工具(Tools):多输入工具和工具输入模式]
    物联网应用系统设计提纲-下
    【Linux】安装与配置虚拟机及虚拟机服务器坏境配置与连接---超详细教学
  • 原文地址:https://blog.csdn.net/liaomingwu/article/details/126483519