用docker搭建环境快速体验刚开源的TDengine

用docker搭建环境快速体验刚开源的TDengine

    • Docker环境的搭建
      • 安装docker
      • 下载源代码并创建TDengine的镜像
      • 运行服务
    • 简单的性能测试
      • 运行写入测试代码
      • 运行简单的查询
    • 测试程序说明

前两天国产的时序数据库TDengine开源了。为了测试其写入和读取性能,笔者特意写了这篇文章,方便读者们能跟我一块探究下这号称比Hadoop快10倍的国产开源数据库到底有什么样的特性。为了统一测试环境,笔者特意用docker在一台4核8G的服务器上进行了TDengine性能的初步测试。

Docker环境的搭建

安装docker

笔者参考docker的社区版安装文档在服务器上安装了docker。需要提示的一点是,如果登录用户名不是 root,那么每次执行 docker 命令必须要添加 sudo 命令,非常麻烦。这一点可以通过将登录用户加入到 docker 群组,然后登出服务器并重新登录服务器来解决。如果登出后重新登录服务器没有起作用,可以考虑重启服务器。

sudo usermod -aG docker 

安装 docker 成功后,下载 centos 镜像的image:

docker image pull centos

下载源代码并创建TDengine的镜像

从TDengine的github主页下载源码:

git clone [email protected]:taosdata/TDengine.git
cd TDengine

由于目前TDengine没有官方的docker镜像,因此笔者根据源码自己编译并创建了docker镜像,其步骤如下:

  1. 首先在项目目录下创建文件名为Dockerfile的文件,内容为:
# Compile image
FROM centos as compile

WORKDIR /root

COPY src/ ./src/ 
COPY deps/ ./deps/
COPY packaging/ ./packaging/
COPY CMakeLists.txt ./

RUN yum update -y

RUN yum group install -y "Development Tools"

Run yum install -y cmake

WORKDIR /root/build
RUN cmake .. && cmake --build .

CMD ["bash"]

# Final image
FROM centos

WORKDIR /root

COPY --from=compile /root/build/build/bin /usr/bin/
COPY --from=compile /root/build/build/lib/libtaos.so /usr/lib/
COPY packaging/cfg/taos.cfg /etc/taos/

RUN echo "charset UTF-8" >> /etc/taos/taos.cfg

ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib"
ENV LC_CTYPE="en_US.UTF-8"

CMD ["taosd"]
  1. 然后创建镜像:
docker build -t tdtest .

由于笔者直接安装了很多开发组件,所以第一次创建镜像时间有些长。

运行服务

  1. 创建几个volume避免运行时容器直接写writable layer:
docker volume create td_log_vol
docker volume create td_data_vol
  1. 启动服务
docker run -itd --name tdtest_run  -v td_log_vol:/var/log/taos -v td_data_vol:/var/lib/taos tdtest
  1. 检查服务是否启动成功
# 用shell访问容器
docker exec -it tdtest_run bash

# 运行taos终端客户端
taos

如果shell连接成功,则服务启动成功。

简单的性能测试

运行写入测试代码

笔者自己写了一个TDengine的测试程序包,读者可自行通过链接下载。下载成功后,在host机器上将测试包拷贝进容器中:

docker cp test.tar.gz tdtest_run:/root

在容器的shell中解压测试包:

# 用shell访问容器
docker exec -it tdtest_run bash
cd /root
tar -zxvf test.tar.gz
cd test

如果读者不想深究代码及其配置,只需运行如下命令即可向TDengine中写入数据:

./test.sh -F config/config.sh -f config/tdengine.sh

该测试程序会自动编译并运行。默认创建10万张表,每张表10000条数据,用多线程批写入。运行直到写入完成。在笔者4核8G的服务器上运行结果如下:
用docker搭建环境快速体验刚开源的TDengine_第1张图片

运行简单的查询

在TDengine的终端客户端里进行些简单的查询:

# 用shell访问容器
docker exec -it tdtest_run bash

# 启动taos客户端
taos

统计超级表中数据记录的总数目:

select count(*) from meterinfo.meters;

用docker搭建环境快速体验刚开源的TDengine_第2张图片

按照loc标签分组:

select count(*) from meterinfo.meters group by loc;

用docker搭建环境快速体验刚开源的TDengine_第3张图片

测试程序说明

测试程序是通过config/config.sh来配置数据规模和数据类型的。其中包含的配置项有:

  • SCHEMA_FILE: schema的配置文件,默认在 test/data/schema.txt
  • SAMPLE_FILE: 采样数据文件。需要与schema文件对应中的schema设置对应,测试程序会循环使用这些数据进行写入。
  • NDETECTORS: 表的数目
  • INSERT_THREAD: 插入线程数目设置
  • RECORDS_PER_DETECTOR: 单表中数据量
  • START_TIME: 起始时间
  • TIME_INTERVAL: 单表数据采集时间间隔,单位为毫秒

测试包通过配置config/tdengine.sh来配置有关TDengine的配置项。其中包含:

  • INSERT_DB_NAME: 写入数据库的名称
  • TB_PREFIX: 表明前缀,表名由表名前缀加数字组成
  • STABLE: 超级表的名字
  • DB_PROPERTY: database创建选项
  • RECORDS_PER_REQUEST: 一个insert语句中可以带的记录数目。insert语句不能超过64K

读者可以通过修改这些配置参数。

通过简单的测试,TDengine的在笔者的测试场景下写入速度极佳,简单的查询速度也不错。至于其他测试场景下的性能,需要读者们继续研究。

你可能感兴趣的:(大数据测试,TDengine,Docker,Test,Big,Data)