【Doris的安装与部署】

1 集群规划和环境准备

Doris作为一款MPP架构的OLAP数据库,可以在绝大多数主流的商用服务器上运行。

1.1 环境要求

一般推荐使用Linux系统,版本要求是CentOS 7.1及以上或者Ubuntu 16.04及以上,这也是目前服务器市场最主流的操作系统。

操作系统小知识

Linux系统主要分Debian系和Red Hat系,还有其他自由版本。Debian系主要有Debian、Ubuntu、Mint等及其衍生版本;Red Hat系主要有Red Hat、Fedora、CentOS等,其他自由版本有Slackware、Gentoo、Arch Linux、LFS、SUSE等。根据调查资料,2016年中国服务器操作系统市场中CentOS占28%,排名第一,Ubuntu占26%,Red Hat占19%,其余共占27%。其余版本中有部分是Debian系和Red Hat系,所以三类系统所占比例在75%以上。就目前来说,CentOS系统既免费,又稳定,也是云厂商推荐的服务器操作系统,因此首选CentOS 7.x版本。

虽然CentOS官方已经放弃8.0以后版本的升级维护,但是各软件、硬件厂商和云平台都会基于CentOS 7.x继续升级和提供相应的服务。在操作系统配置方面除了关闭Swap以外没有其他要求。关闭Swap只是为了避免使用磁盘缓冲区影响性能,并非强制性要求。在这一点上,比其他数据库安装前进行一系列参数调整和系统配置要省事很多。在Doris中,FE是基于Java语言开发的,BE是基于C++语言开发的,所以二者需要依赖对应语言的编译器。其中,Java运行环境要求JDK8及以上版本(从Doris 1.0版本开始强制要求JDK11及以上版本),C++运行环境要求GCC4.8.2及以上版本。

1.2 硬件要求

为了提高Doris数据库的性能,单台服务器也有硬件要求。

  • 开发和测试环境要求如下表:
模块CPU内存磁盘网络实例数量
FE8核+8GB+10GB+千兆网卡1
BE8核+16GB+50GB+千兆网卡1-3
  • 生产要求如下表:
模块CPU内存磁盘网络实例数量
FE16核+64GB+100GB+万兆网卡1-5
BE16核+64GB+100GB+万兆网卡10-100

具体来说,FE的磁盘空间主要用于存储元数据,包括元数据变更日志和元数据镜像版本,大小通常在几百兆字节到几吉字节不等。BE的磁盘空间主要用于存储用户数据,总磁盘空间按用户总数据量×3(3副本)计算,然后额外预留40%用于存储后台合并数据以及一些中间数据。

一台机器上可以部署多个BE实例,但是只能部署一个FE实例。如果需要3副本数据,至少需要3台机器各部署1个BE实例(而不是1台机器部署3个BE实例)。多个FE所在服务器的时钟必须保持一致(允许最多5s的时钟偏差)。

在测试环境中,可以仅用1个BE实例进行测试,但是1个BE实例只能创建1个副本数据。实际生产环境中,BE实例数量直接决定了集群整体查询性能。

1.3 节点规划

为了充分利用MPP架构的并发优势,以及Doris的高可用性,我们需要足够的服务器节点来支撑Doris的运行。Doris的性能与服务器数量及配置正相关。通常,建议部署10~100台服务器(其中3台部署FE,剩余的部署BE)。但在部署4台服务器(1台部署FE,3台部署BE,其中1台BE混部一个观察者角色的FE来提供元数据备份),以及服务器配置较低的情况下,Doris依然可以平稳运行。

如果FE和BE混部,我们需要注意资源竞争问题,并保证元数据目录和数据目录分属于不同磁盘。Broker是访问外部数据源(如HDFS)的进程。通常,每个FE节点上部署一个Broker实例即可。关于FE节点的角色,我们需要注意以下几点。

❑FE角色分为Leader、Follower和Observer。Leader和Follower角色都是Follower组的成员,以下统称为Follower。Leader是Follower组中选举出来的主节点,有且仅有一个。Observer即观察者角色,仅能复制元数据,不能参与Follower组的选举。
❑FE节点数至少为1(1个Follower)。部署1个Follower和1个Observer可以实现读高可用,部署3个Follower可以实现读写高可用。
❑Follower的数量必须为奇数,Observer的数量随意。
❑根据以往经验,当集群可用性要求很高时(比如提供在线业务),可以部署3个Follower和1~3个Observer。如果是离线业务,建议部署1个Follower和1~3个Observer。

1.4 通信端口

Doris的各个实例之间通过网络进行通信,如下图展示了各服务组件的通信端口。
在这里插入图片描述
当部署多个FE实例时,要保证FE的http_port配置相同。部署前确保各个端口在应有方向上的访问权限:如果是局域网,建议直接关掉防火墙;如果是云平台,还需要开放客户端访问FE节点的8030端口和9030端口。

1.5 IP地址绑定

因为有多网卡情况,或安装过Docker等环境而存在虚拟网卡,同一个主机可能存在多个不同的IP。Doris启动时不能自动识别可用IP,因此当主机上存在多个IP时,必须通过priority_networks配置项强制指定正确的IP。

priority_networks是FE和BE都有的一个配置项,配置项需写在fe.conf和be.conf中。该配置项用于在FE或BE启动时,告诉进程应该绑定哪个IP,示例如下:

priority_networks= 192.168.1.200/24

这是一种CIDR(Classless Inter-Domain Routing,无类别域间路由)表示方法。FE或BE会根据该配置项来寻找匹配的IP,并将其作为本地IP。

注意

配置priority_networks,只是保证了FE或BE进行了正确的IP绑定。在ADD BACKEND或ADD FRONTEND语句中也需要指定和priority_networks配置匹配的IP,否则集群无法建立。

Broker则不需要配置priority_networks。Broker默认绑定在IP0.0.0.0上。在执行ADD BROKER语句时,只需要配置Broker可访问的IP即可。

2 安装和部署

到Palo官网进行下载。作为Apache Doris社区的主要维护团队,百度Doris团队同时维护了完全兼容Apache Doris的发行版本Palo。百度发行版本Palo具有Bug修复和新功能更新功能。百度开源版本不是Apache Release版本,但具有全部Apache Doris功能,并与Apache社区版本兼容。百度发行版本Palo在百度内部做过测试,推荐使用,而且用户可以免费下载,安装和部署方式同Apache Doris。

百度发行版本Palo下载地址为:http://palo.baidu.com/docs/下载专区/预编译版本下载/。下载页面截图如下图所示:
在这里插入图片描述

2.1 安装前的准备

在CentOS系统中通过wget命令下载百度Palo预编译版本,如下图:
在这里插入图片描述
解压:

tar -zxvf PALO-0.12.21-release.tar.gz 

重命名:

mv DORIS-0.12.21-release/ doris

2.2 安装FE

sh doris/fe/bin/start_fe.sh --daemon

由于FE是基于Java语言开发的,因此部署FE之前需要先安装JDK。正常情况下,安装Oracle JDK和Open JDK都可以,但是预编译版本文件是采用Oracle JDK编译的,所以我们依然采用Oracle JDK版本。Doris 1.0以前的版本只需安装JDK8版本即可,Doris 1.0及以后版本要求必须安装JDK11版本。

到Oracle官网下载JDK需要注册账号,并且登录速度比较慢,这里推荐到华为云下载。下载完成后解压,并将解压文件移到指定目录,配置环境变量。

FE组件的安装非常简单,最新Doris版本的安装包自动创建了doris-meta目录,我们可以直接到bin目录下执行命令sh start_fe.sh --daemon来启动FE。执行该命令后如果没有任何输出,FE启动成功。我们也可以通过jps命令验证FE是否启动成功,有PaloFe进程表示启动成功。

在正式环境中安装FE节点有以下注意事项:

❑FE节点的配置文件为fe/conf/fe.conf。
❑FE作为管理节点存放数据库的元数据,默认保存在fe/doris-meta/路径下。我们也可以通过调整fe.conf中的meta_dir切换到独立的目录。生产环境中强烈建议单独指定目录,不要放在Doris安装目录下,最好是单独的磁盘(如果有SSD最好)。
❑fe.conf中JAVA_OPTS默认Java最大堆内存为4GB,生产环境中建议调整至8GB以上。
❑priority_networks配置可以具体参考1.5节内容。
❑默认第一个启动的是Leader角色,也就是Follower组中的主节点。

fe.conf重要参数说明lower_case_table_names参数用于配置用户表表名大小写是否敏感,默认为0,表示表名大小写敏感。该参数需在集群初始化时进行配置。集群初始化完成后无法通过set语句修改该参数,也无法通过重启、升级修改该参数。该参数还可以设置为1或者2,都表示表名大小写不敏感,区别是值为1时,任何场景下表名无论大小写都表示同一张表,而值为2时,同一语句中表名要么大写,要么小写。

FE节点的服务进程启动后进入后台执行,日志默认存放在fe/log/目录下。如果服务进程启动失败,我们可以通过日志文件fe/log/fe.log或者fe/log/fe.out查看错误信息。安装完FE节点后,我们有两种方式进行访问。

第一种是在网络无限制的情况下,直接打开网址http://fe_ip:8030,进入管理页面,如下图所示。
在这里插入图片描述
第二种方式是通过MySQL客户端访问。这里我们既可以直接在服务器上通过MySQL命令访问FE,也可以通过客户端软件配置JDBC访问,默认root密码为空。

2.3 安装BE

BE是由C++语言开发的,所以不需要安装其他依赖软件。BE安装过程和FE一样,也非常简单,直接进入bin目录执行sh start_be.sh --daemon命令即可。

在正式环境中安装BE节点,也有以下注意事项:

❑BE节点的配置文件为be/conf/be.conf。
❑BE作为数据的实际存储节点,需要大量存储空间,建议用可扩容的外挂磁盘。数据磁盘主要通过be.conf文件中的storage_root_path参数来配置。数据文件存储目录需要提前创建好,多个目录通过“;”来分隔。(注意:最后一个路径后面不需要分号。)
❑存储介质可以是HDD或SSD,并且可以限制每个目录的最大使用空间。

存储路径的配置有两种格式,具体如下。
方式一:通过在目录后面增加“.”和“,”分步追加磁盘类型和限制存储容量(默认单位是GB),例如:“storage_root_path=/home/disk1/doris.HDD,50;/home/disk2/doris.SSD,10;/home/disk3/doris”表示有3个盘,磁盘一/home/disk1/doris.HDD,50表示存储限制为50GB的HDD;磁盘二/home/disk2/doris.SSD 10表示存储限制为10GB的SSD;磁盘三/home/disk3/doris表示存储限制为磁盘最大容量,默认为HDD。方式二:在目录后面通过键值对区分存储类型和存储空间(默认单位也是GB),例如:storage_root_path=/home/disk1/doris,medium:hdd,capacity:50;/home/disk2/doris,medium:ssd,capacity:10;/home/disk3/doris,medium:hdd”表示的结果和方式一致。

2.4 安装Broker

Broker是访问外部数据源(如HDFS)的进程。通常,我们只在FE节点上部署Broker实例。Broker以插件的形式独立于Doris部署。如果从第三方存储系统导入数据,我们需要部署相应的Broker组件。Doris默认提供了读取HDFS和BOS源码的fs_broker。fs_broker是无状态的,建议每一个FE和BE节点都部署。

Broker安装过程如下。
1)修改相应Broker配置。在broker/conf/目录下对应的配置文件中可以修改相应配置。
2)启动Broker。用sh bin/start_broker.sh–daemon命令启动Broker。
3)添加Broker。要想让Doris的FE和BE知道Broker在哪些节点上,通过SQL命令添加Broker节点列表。使用mysql-client连接已启动的FE节点,命令如下:
在这里插入图片描述
其中,host为Broker节点对应的IP;port为Broker配置文件中broker_ipc_port对应的值。使用mysql-client连接已启动的FE节点,执行SHOW PROC“/brokers”命令查看Broker状态。

<think>好的,我现在需要帮助用户解决关于Dify循环实现的问题。首先,我需要明确用户的具体需求。他们提到“dify 循环实现”或“dify 如何处理循环”,但Dify本身可能没有直接称为“循环”的功能,所以需要结合现有文档中的信息来推断可能的解决方案。 根据用户提供的引用内容,Dify工作流中有迭代节点[^1]。这可能类似于编程中的循环结构,用于重复执行某个任务。例如,在处理列表数据或需要多次执行同一操作时,迭代节点可以派上用场。我需要详细解释迭代节点的配置和使用步骤,确保用户能够理解如何设置循环次数或遍历数据集。 另外,用户可能对如何处理循环中的错误或性能问题感兴趣。引用[2]提到在Dify中处理PEM文件的问题,这可能涉及在循环中正确处理数据格式,避免错误积累。需要提醒用户在循环中注意错误处理和资源管理,确保每次迭代的稳定性。 引用[3]中的例子展示了如何结合FastAPI和Selenium进行实时监控并生成GIF,这可能涉及循环截取浏览器内容。虽然Dify本身可能不直接控制这类循环,但可以通过外部脚本或定时任务触发工作流,模拟循环执行。这部分需要说明如何将外部循环机制与Dify结合使用。 接下来,我需要组织回答结构。首先介绍迭代节点的基本概念和配置步骤,然后讨论循环中的数据处理和错误处理,最后补充外部触发循环的方法。同时,生成相关问题以帮助用户进一步探索,比如优化循环性能或处理复杂数据结构。 需要确保回答符合格式要求,使用正确的中文表达,行内公式用$...$,独立公式用$$...$$,但当前问题不涉及数学公式,所以可能不需要使用。同时,引用标识要自然地添加到相关段落末尾,如、[^2]、[^3]。 最后,检查是否有遗漏点,比如Dify的其他循环相关功能或用户可能遇到的常见问题,确保回答全面且易于理解。</think>在Dify中处理循环逻辑主要通过**迭代节点**实现,以下是具体实现方式和应用场景的解析: ### 一、Dify循环实现机制 Dify通过**工作流设计器**中的迭代节点处理循环需求,其核心原理类似编程中的`for循环`。迭代节点可遍历以下数据类型: - 数组列表:`["A","B","C"]` - 字典集合:`{"key1":"value1", "key2":"value2"}` - 数值范围:通过`range()`函数生成序列 配置示例: ```python # 模拟迭代节点的数据输入 input_data = { "dataset": [1,2,3,4,5], "process_logic": "item * 2" # 对每个元素执行乘以2的操作 } ``` ### 二、迭代节点的关键配置步骤 1. **数据源绑定**:将数组/字典类型变量连接到迭代节点的输入端口 2. **循环变量命名**:设定当前元素的变量名(默认为`item`) 3. **子流程设计**:在迭代节点内部构建需要重复执行的逻辑模块 4. **结果聚合**:通过`outputs`收集所有迭代结果,支持数组或对象格式 $$ \text{总耗时} = \sum_{i=1}^{n}(单次迭代时间_i) + 系统开销 $$ ### 三、循环中的特殊处理 1. **错误中断控制**: - 启用`continueOnError`参数可跳过失败迭代 - 通过`try-catch`模块包裹敏感操作 2. **并行优化**: ```python # 伪代码示例 Parallel.forEach(dataset, lambda item: process(item)) ``` 3. **结果过滤**: ```python filtered = filter(lambda x: x%2==0, processed_results) ``` ### 四、应用场景案例 1. **批量文件处理**:遍历存储桶中的文件列表进行格式转换 2. **数据清洗**:对数据库查询结果集进行逐条校验 3. **API轮询**:定时循环调用第三方接口直到满足特定条件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值