【云原生】docker 摆设 Doris 数据库使用详解

打印 上一主题 下一主题

主题 1049|帖子 1049|积分 3147

目次

一、前言
二、数据分析概述
2.1 什么是数据分析
2.2 数据分析目标和意义
2.3 数据分析常用的技能和工具
2.3.1 编程语言
2.3.2 数据处理和分析库
2.3.3 数据可视化工具
2.3.4 数据库体系
2.3.5大数据处理框架
2.3.6 云服务清静台
2.3.7 其他工具
三、Doris先容
3.1 什么是Doris
3.2 Doris核心特性
3.3 Doris核架构组件
3.4 Doris使用场景
四、基于docker搭建Doris
4.1 环境准备
4.1.1 服务器准备
4.1.2 设置呆板的linux内核参数
4.2 获取安装包与Doris镜像
4.2.1 下载Doris运行镜像
4.2.3 获取必要的安装包
4.3 启动Doris容器
4.4 修改与配置FE文件
4.4.1 复制安装包到容器
4.4.2 获取网络IP
4.4.3 配置fe的IP地址
4.5 启动fe服务
4.5.1 浏览器访问
4.5.2 fe 服务环境测试
4.6 配置be
4.6.1 配置网络IP
4.6.2 配置JDK
4.7 启动be服务
4.7 数据建表与功能测试
4.7.1 创建测试数据表
4.7.2 创建测试数据并导入
4.7.3 查询数据是否导入成功
4.7.4 使用客户端工具毗连
4.7.5 服务启动制止下令补充
五、写在文末


一、前言

随着大数据的发展,数据规模一旦到了一定的量级之后,业务对于数据的斲丧需求变得越来越强烈,基于数据的分析场景也会越来越多,数据分析也因此陪同着移动互联网的高速发展而飞速发展,具体来说,对数据的分析带来的优势是表如今诸多方面的,也因此当许多公司的业务数据达到一定规模之后就开始渐渐深入发掘数据背后的价值,这也形成了与之相关的数据分析领域的诸多岗位和业务,本篇将先先容一款在数据分析领域具有紧张地位的工具,Doris的搭建和使用。

二、数据分析概述



2.1 什么是数据分析


数据分析是指使用统计学方法、计算机科学技能和领域知识来识别模式、趋势和关联,从而从数据中提取有价值的信息的过程。数据分析可以帮助组织做出更明智的决策,优化业务流程,进步效率,以及发现新的商业时机。

2.2 数据分析目标和意义

数据分析的目标在于从数据中提取有价值的信息,帮助企业或组织更好地明白近况、解决题目、预测未来趋势,并据此作出更明智的决策。以下是数据分析的主要目标:


  • 描述近况

    • 描述性分析:通过总结和汇总数据来描述当前的状态或环境。比方,通过分析贩卖数据来了解已往一段时间内的贩卖表现。
    • 绩效评估:评估关键绩效指标(KPIs)以权衡业务活动的效果,如贩卖额、客户满足度、网站流量等。

  • 发现题目

    • 诊断性分析:探讨数据背后的原因,找出影响效果的关键因素。比方,通过分析退货率高的产品来确定质量题目所在。
    • 异常检测:识别数据中的异常值或不寻常的行为,帮助发现匿伏的题目或时机。

  • 预测未来

    • 预测性分析:使用历史数据和统计模型来预测未来的趋势或效果。比方,基于历史贩卖数据预测下个月的贩卖量。
    • 趋势分析:识别数据随时间变化的趋势,帮助组织预见市场的变化。

  • 指导决策

    • 规范性分析:提供决策支持,通过分析不怜悯景下的预期效果来指导最佳举措路径。比方,分析差别的市场推广计谋来决定最优方案。
    • 优化运营:通过分析业务流程中的瓶颈来优化操纵,进步效率和降低成本。

  • 提拔用户体验

    • 个性化推荐:根据用户的偏好和行为模式来提供个性化的推荐和服务,提拔用户体验。
    • 用户行为分析:通过分析用户的行为数据来改进产品设计和服务,增加用户粘性和满足度。

  • 支持创新

    • 新时机识别:通过数据分析发现新的市场时机或匿伏的产品创新点。
    • 研发辅助:在产品研发过程中,通过数据分析来验证假设、优化设计或评估性能。

  • 风险管理

    • 风险评估:通过分析历史数据来评估匿伏的风险水平,比方信用风险、市场风险等。
    • 欺诈检测:通过分析异常模式来识别欺诈行为。

2.3 数据分析常用的技能和工具

数据分析涉及多种技能和工具,这些技能和工具帮助分析师从数据中提取有价值的信息,支持决策制定。以下是数据分析中常用的一些技能和工具:


2.3.1 编程语言

数据分析中,常用的编程语言包罗:


  • Python:广泛应用于数据分析,拥有丰富的库如 Pandas、NumPy、SciPy、Matplotlib、Seaborn、Scikit-Learn 等。
  • R:特别适合统计分析,拥有大量的统计和图形库。
  • SQL:用于从关系型数据库中提取和操纵数据。
  • Julia:一种高性能的语言,特别适合于科学计算和数据分析。


2.3.2 数据处理和分析库



  • Pandas (Python):提供了高效的数据布局和数据分析工具。
  • NumPy (Python):用于数值计算的底子库。
  • SciPy (Python):提供了科学计算中的高级功能,如优化、插值等。
  • Scikit-Learn (Python):提供了广泛使用的呆板学习算法。
  • Statsmodels (Python):用于统计建模。
  • Dplyr (R):提供了数据处理功能,如筛选、排序、聚合等。
  • ggplot2 (R):用于生成高质量的统计图形。

2.3.3 数据可视化工具



  • Matplotlib (Python):底子的画图库。
  • Seaborn (Python):基于 Matplotlib,提供更高级的图形。
  • Plotly (Python/R):交互式图表库。
  • Tableau:强盛的商业智能工具,用于创建交互式仪表板。
  • Power BI:微软的数据可视化工具,用于构建交互式报表。
  • QlikView/Qlik Sense:商业智能和数据可视化软件。

2.3.4 数据库体系



  • 关系型数据库:如 MySQL、PostgreSQL、Oracle、Microsoft SQL Server 等,用于存储布局化数据。
  • NoSQL 数据库:如 MongoDB、Cassandra、Redis 等,用于存储非布局化或半布局化数据。
  • NewSQL 数据库:如 CockroachDB、TiDB 等,结合了传统 SQL 数据库的事务处理能力和 NoSQL 数据库的可扩展性。

2.3.5大数据处理框架



  • Apache Hadoop:分布式存储和处理大规模数据集的框架。
  • Apache Spark:高速集群计算框架,支持批处理、及时数据流处理、呆板学习等。
  • Apache Flink:流处理和事件驱动应用的框架。
  • Apache Hive:数据仓库工具,提供 SQL 查询功能。
  • Apache Kafka:分布式流处理平台,用于构建及时数据管道和流应用。

2.3.6 云服务清静台



  • Amazon Web Services (AWS):提供了多种数据分析服务,如 AWS Glue、Amazon Redshift、Amazon S3 等。
  • Google Cloud Platform (GCP):提供了 BigQuery、Dataflow、Dataproc 等数据处理和分析服务。
  • Microsoft Azure:提供了 HDInsight、Azure Databricks、Azure Data Lake 等服务。

2.3.7 其他工具



  • Excel:虽然主要用于办公自动化,但在小型数据集的处理和可视化方面仍然非常盛行。
  • Alteryx:用于数据准备、融合和分析的商业软件。
  • KNIME:开源的数据分析平台,支持图形化工作流设计。
   这些技能和工具的选择取决于具体的需求、数据规模以及团队的技能栈。差别的工具和技能可以组合使用,形成一套完备的数据分析解决方案。
  
三、Doris先容



3.1 什么是Doris


Doris由百度大数据部研发,之前叫百度Palo,于2017年开源,2018年贡献到 Apache 社区后,更名为Doris。


  • Apache Doris是一个现代化的基于MPP(大规模并行处理)技能的分析型数据库产品。简单来说,MPP是将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部门的效果汇总在一起得到终极的效果(与Hadoop相似)。仅需亚秒级响应时间即可获得查询效果,有效地支持及时数据分析。
  • Apache Doris可以满足多种数据分析需求,比方固定历史报表,及时数据分析,交互式数据分析和探索式数据分析等。令您的数据分析工作更加简单高效!
   中文文档:快速体验 - Apache Doris
  
3.2 Doris核心特性

Doris具有如下特点:


  • 列式存储;
  • 基于MPP(大规模并行处理)架构的分析型数据库;
  • 性能卓越,PB级别数据毫秒/秒级响应;

    • TPC-H、TPC-DS性能领先,性价比高,高并发查询,100台集群可达10w QPS,流式导入单节点50MB/s,小批量导入毫秒延迟。

  • 支持尺度SQL语言,兼容MySQL协议;
  • 使用简单;

    • 高度兼容MySql协议,支持在线表布局变更高度集成,不依靠于外部存储体系;

  • 高效的聚合表技能;
  • 新型预聚合技能Rollup;
  • 高性能、高可用、高可靠;

    • 多副本,元数据高可用;

  • 极简运维,支持弹性伸缩;

    • 架构优雅,单集群可以水平扩展至200台以上

3.3 Doris核架构组件

Apache Doris 的团体架构非常简单,如下图所示,只有两类进程:


  • Frontend(FE):主要负责用户请求的接入、查询剖析规划、元数据的管理、节点管理相关工作。
  • Backend(BE):主要负责数据存储、查询筹划的执行。
这两类进程都是可以横向扩展的,单集群可以支持到数百台呆板,数十 PB 的存储容量。并且这两类进程通过一致性协议来保证服务的高可用和数据的高可靠。这种高度集成的架构设计极大地降低了一款分布式体系的运维成本。


3.4 Doris使用场景


结合上图,数据源经过各种数据集成和加工处理后,通常会入库到及时数据仓库 Apache Doris 和离线湖仓(Hive, Iceberg, Hudi 中)。作为一个分布式列式存储和查询体系,主要用于及时分析和查询海量数据。它适用于以了局景:

四、基于docker搭建Doris


网上关于Doris的搭建参考资料比力多,但是分析和尝试之后,许多跑不通,接下来演示怎样基于docker快速搭建起Doris的运行环境

4.1 环境准备



4.1.1 服务器准备

服务器(云服务器或假造机均可),2C4G(推荐4C8G),并提前安装并启动docker


4.1.2 设置呆板的linux内核参数

在启动doris的be时,需将 Linux操纵体系内核参数设置为2000000,这里是Doris官方要求的,直接在Docker宿主机中设置即可
  1. sudo sysctl -w vm.max_map_count=2000000
  2. sysctl vm.max_map_count
复制代码


4.2 获取安装包与Doris镜像



4.2.1 下载Doris运行镜像

这个镜像中安装了doris启动需要的环境,不用自己再提前准备环境了,如jdk等。镜像比力大,等待下载完成即可。
  1. docker pull apache/doris:build-env-ldb-toolchain-latest
复制代码



4.2.3 获取必要的安装包

为了后面使用mysql终端操纵,还需要下载mysql的包以及doris的依靠包
  1. # doris程序包
  2. wget https://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-1.2.4.1-bin-x86_64.tar.xz
  3. # mysql 客户端连接使用的包
  4. wget https://doris-build-hk.oss-cn-hongkong.aliyuncs.com/mysql-client/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
复制代码


4.3 启动Doris容器

使用下面的下令运行Doris容器
  1. docker run -d -it --name=doris \
  2. -p 9030:9030 -p 8030:8030 \
  3. apache/doris:build-env-ldb-toolchain-latest \
  4. /bin/bash
复制代码


4.4 修改与配置FE文件

由于本次的环境是基于docker搭建的,后续的操纵都会在容器内举行,需要把依靠包拷贝到容器,并进入容器中配置相关的信息。

4.4.1 复制安装包到容器

复制安装包到doris容器中,将上述下载的两个安装包复制到容器内部
  1. docker cp /root/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz doris:/opt
  2. docker cp /root/apache-doris-1.2.4.1-bin-x86_64.tar.xz doris:/opt
复制代码

4.4.2 获取网络IP

进入容器修改相关的配置文件,依次执行下面的操纵
  1. # 进入容器
  2. docker exec -it doris bash
  3. # 解压文件
  4. cd /opt/
  5. tar -xvf apache-doris-1.2.4.1-bin-x86_64.tar.xz
  6. tar -xzvf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
  7. # 获取本机容器内网ip地址,需修改到配置文件中
  8. hostname -i
复制代码


4.4.3 配置fe的IP地址

在容器中举行配置,找到配置文件
  1. cd /opt/apache-doris-1.2.4.1-bin-x86_64/fe/conf
  2. vi fe.conf
复制代码

打开 priority_networks解释 将刚刚 【hostname -i】 打印出来的内网ip替换到
  1. priority_networks = 172.17.0.2/24
复制代码


4.5 启动fe服务

在容器的解压包目次下,进入bin目次,执行脚本启动fe服务
  1. ./start_fe.sh --daemon
复制代码
然后使用jps下令检查是否启动成功


测试服务是否正常,看到下面能够正常输出说明服务正常
   curl http://127.0.0.1:8030/api/bootstrap
  


4.5.1 浏览器访问

浏览器地址访问 http://IP:8030/login,账号root,密码为空

登录之后效果如下:


4.5.2 fe 服务环境测试

接下来在mysql中毗连fe,默认无密码
  1. /opt/mysql-5.7.22-linux-glibc2.12-x86_64/bin/mysql -uroot -P9030 -h127.0.0.1 --skip-ssl
  2. show frontends\G;
复制代码

假如看到下面的效果,IsMaster、Join 和 Alive 三列均为true,则表示节点正常


4.6 配置be


4.6.1 配置网络IP

和上面配置fe的操纵类似,基于上面的操纵,继承修改配置文件
  1. cd /opt/apache-doris-1.2.4.1-bin-x86_64/be/conf
  2. vi be.conf
复制代码

将下面这行配置加进去
   priority_networks = 172.17.0.2/24
  


4.6.2 配置JDK

在启动脚本中需要设置jdk路径,上述下载的镜像jdk的默认路径为 /usr/lib/jvm/java-1.8.0,可以先ehco确认一下,因为路径大概随时版本的变更而改变

进入bin目次,在start_be.sh脚本中添加jdk的路径
  1. vi start_be.sh
  2. export JAVA_HOME=/usr/lib/jvm/java-1.8.0
复制代码


4.7 启动be服务

启动be,然后通过mysql客户端工具毗连be,即在Doris中添加已经后端节点,参照下面的指令依次执行;
  1. # 进入bin目录,启动be
  2. ./start_be.sh --daemon
  3. # 进入mysql
  4. /opt/mysql-5.7.22-linux-glibc2.12-x86_64/bin/mysql -uroot -P9030 -h127.0.0.1 --skip-ssl
  5. # 将BE节点加入到集群中
  6. ALTER SYSTEM ADD BACKEND "172.17.0.2:9050";
  7. # 显示doris后端详情
  8. SHOW BACKENDS\G
复制代码

Alive 


  • true表示节点运行正常(假如为false,可以尝试等待一会再重新查看,第一次启动会慢一点;或有其他题目在/opt/apache-doris-1.2.4.1-bin-x86_64/be/log/be.out 里面查看日志)

正常启动的进程像下面这样,会有一个空名字的进程,正常,就是be,退出mysql之后,可以通过jps下令查看


4.7 数据建表与功能测试

第一次打仗doris的同学大概会迷惑,发现语法与MySQL差不多,实在还是有差异的,有点类似于学习Hive的时间,语法上跟mysql多少存在一些差异,可以通过下面的建表语句举行对比体验。
   这里使用MySQL仅作为远程毗连工具,在现实使用中仅需启动fe与be即可,Doris自动启动和管理内部的 MySQL 实例,用于存储和管理元数据。
  
4.7.1 创建测试数据表

基于上述搭建的环境,在docker容器内,执行如下下令进入mysql终端:
  1. /opt/mysql-5.7.22-linux-glibc2.12-x86_64/bin/mysql -uroot -P9030 -h127.0.0.1 --skip-ssl
复制代码


执行如下的建表sql
  1. create database db_test;
  2. use db_test;
  3. CREATE TABLE IF NOT EXISTS db_test.tb_user
  4. (
  5.     `user_id` LARGEINT NOT NULL COMMENT "user id",
  6.     `date` DATE NOT NULL COMMENT "",
  7.     `city` VARCHAR(20) COMMENT "",
  8.     `age` SMALLINT COMMENT "",
  9.     `sex` TINYINT COMMENT "",
  10.     `last_visit_date` DATETIME REPLACE DEFAULT "1970-01-01 00:00:00" COMMENT "",
  11.     `cost` BIGINT SUM DEFAULT "0" COMMENT "",
  12.     `max_dwell_time` INT MAX DEFAULT "0" COMMENT "",
  13.     `min_dwell_time` INT MIN DEFAULT "99999" COMMENT ""
  14. )
  15. AGGREGATE KEY(`user_id`, `date`, `city`, `age`, `sex`)
  16. DISTRIBUTED BY HASH(`user_id`) BUCKETS 1
  17. PROPERTIES (
  18.     "replication_allocation" = "tag.location.default: 1"
  19. );
  20. exit;
复制代码

4.7.2 创建测试数据并导入

创建一个用于导入数据的文件
  1. cd ~
  2. vi test_user.csv
复制代码
将下面的数据拷贝进去
  1. 10000,2024-08-31,beijing,20,0,2024-08-31 06:00:00,20,10,10
  2. 10006,2024-08-31,beijing,20,0,2024-08-31 07:00:00,15,2,2
  3. 10001,2024-08-31,beijing,30,1,2024-08-31 17:05:45,2,22,22
  4. 10002,2024-08-28,shanghai,20,1,2024-08-28 12:59:12,200,5,5
  5. 10003,2024-08-28,guangzhou,32,0,2024-08-28 11:20:00,30,11,11
  6. 10004,2024-08-31,shenzhen,35,0,2024-08-31 10:00:15,100,3,3
  7. 10004,2024-08-18,shenzhen,35,0,2024-08-18 10:20:22,11,6,6
复制代码
将test_user.csv的数据导入mysql,执行下面的下令
  1. curl --location-trusted -u root: -T test_user.csv -H "column_separator:," http://127.0.0.1:8030/api/db_test/tb_user/_stream_load
复制代码

4.7.3 查询数据是否导入成功

登录mysql客户端,查询上述导入的数据

4.7.4 使用客户端工具毗连

使用navicat毗连,用户名root,默认无密码




固然你也可以基于上述的9030端口的web-ui界面操纵


4.7.5 服务启动制止下令补充

下面再补充一下服务的启动与制止下令,基于docker容器的安装模式下:

启动下令:
  1. /opt/apache-doris-1.2.4.1-bin-x86_64/fe/bin/start_fe.sh --daemon
  2. /opt/apache-doris-1.2.4.1-bin-x86_64/be/bin/start_be.sh --daemon
复制代码
制止下令:
  1. /opt/apache-doris-1.2.4.1-bin-x86_64/fe/bin/stop_fe.sh
  2. /opt/apache-doris-1.2.4.1-bin-x86_64/be/bin/stop_be.sh
复制代码
注意点:
  1. docker重启后ip会变,启动后先查看hostname -i是否跟之前的一致,不一致可以关掉有影响的docker容器重新按ip顺序启动,或者改成固定IP。
复制代码


五、写在文末

本文通过现实操纵演示了基于docker搭建Doris单机环境的具体过程,对于许多需要学习Doris的同学来说,搭建的过程是一个贫苦而又费时费力的过程,希望本文能够提供一个快速的操纵指引,本篇到此结束,感谢观看。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

郭卫东

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表