jjzjj

Doris进阶——初识Doris_FE、BE、BROKER的扩缩容

小眼睛的Ayuan 2023-12-21 原文

Doris简介:

Doris最初是由百度大数据研发部研发,之前在百度使用时叫做Palo,在贡献给Apache社区后更名为Doris。之前在百度内部超过100台机器部署Doris,服务的产品线超过200条。

Doris是一个现代化的MPP(大规模并行处理)架构的分析型数据库。拥有压秒级的查询响应,能够有效的支持实时数据分析。且易于运维,能够支撑10PB以上的超大的数据集。(MPP架构的数据库是将任务并行的分散到多个的节点上,进行协同计算,在每个节点将各自的计算任务处理完成之后,再将计算的结果进行汇总,输出最终的结果)

Doris可以满足多种的数据分析需求,例如固的历史报表、实时数据分析、交互式数据和探索式的数据分析。

Doris的主要特点:

  • MPP架构的分析型数据库
  • 毫秒级别的响应速度
  • 支持标准的SQL(兼容Mysql协议)
  • 丰富的聚合模型,以及聚合表技术
  • Rollup等预聚合技术
  • 运维简单,弹性伸缩
  • 高可用、高可靠
  • 丰富的周边生态工具
  • 向量化执行器

 (具体可看官网:Doris官网

Doris的主要架构:

Doris的主要架构分为FE(frontend)、BE(backend)两个角色、两个进程,不依赖于外部的组件,极易部署、运维,FE和BE都有很好的拓展性。

FE:存储和维护集群的元数据,负责接收和解析用户的查询请求,规划查询计化,调度查询结果。

        FE主要分为三个角色:Leader、Follower、Observer

        Leader和Follower主要是用来实现Doris集群的高可用,在Leader宕机之后,Follower节点能够迅速代替Leader的工作,能够实现实时恢复元数据,从而保证对Doris集群不造成任何影响。

        Observer是用来拓展查询节点的,同时起到了元数据备份的作用,如果在感知到集群的查询有压力时,可以同通过添加Observer节点来达到提高集群查询的能力,注意:Observer只参与读取,不参与写入。

BE:负责数据的主要存储和计算,以及根据FE生成的物理执行计划,然后进行查询(分布式,多节点并行执行查询,统一汇总)。同时BE还会将数据存储为3副本或者多副本(可根据数据的权重以及集群的资源进行合理设置,可以动态调整)。

Broker:broker是一个无状态的进程。其中封装了文件系统的接口,能够为Doris提供访问外部数据源的能力(比如:HDFS、S3等)。通常在每一台节点上部署一个broker的示例即可。

MysqlClient:Doris是借助MysqlClient协议,所以MysqlClient可以直接访问Doris

Doris的编译部署:可参考官网:Doris部署

Doris常用端口:

 Doris中FE、BE、Broker的扩容和缩容:

  • 使用Mysql客户端登录,查看FE的状态:mysql  -h ip   -P 9030  -uroot  -p xxxxx
  • SHOW PROC '/frontends'\G;  可查看FE状态
  • 将FE包的分发到准备添加为FE的
  • 首次启动需要在启动命令后加参数:--helper leader主机: edit_log_port(9010)--daemon

  • 通过 ALTER SYSTEM ADD FOLLOWER "host:9010"; 添加Follower

  • 通过 ALTER SYSTEM ADD OBSERVER"host:9010"; 添加Observer

  • 一个FE只能有一个Leader但是可以有多个Follower和Observer,其中Leader和Follower组成一个Paxos组,保证高可用,Leader宕机后Follower会进行选举,选举出新Leader,Observer不参与选举。

  • 添加完成之后通过 SHOW PROC '/frontends'\G;  可查看FE状态,查看Alive是否为true,为True证明添加成功

  • 删除FE的命令 ALTER SYSTEM DROP FOLLOWER[OBSERVER] "fe_host:edit_log_port";

  •  SHOW PROC '/backends'\G;

        

  •  BE、BROKER 和FE同理,使用 ALTER SYSTEM ADD BACKEND "host:9050";命令添加BE
  • 删除BE:ALTER SYSTEM DROP BACKEND "be_host:be_heartbeat_service_port";(不推荐!!!!,会直接删除BE节点,且数据不可恢复)
  • 推荐使用:ALTER SYSTEM DECOMMISSION BACKEND "be_host:be_heartbeat_service_port"; 删除BE时会将该节点的数据向其他BE节点处进行迁移

  • BROKER的添加和删除:

  • ALTER SYSTEM ADD BROKER broker_name "broker_host:broker_ipc_port";

  • ALTER SYSTEM DROP BROKER broker_name "broker_host:broker_ipc_port";

  • ALTER SYSTEM DROP ALL BROKER broker_name;

有关Doris进阶——初识Doris_FE、BE、BROKER的扩缩容的更多相关文章

  1. 叮咚买菜基于 Apache Doris 统一 OLAP 引擎的应用实践 - 2

    导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵

  2. 玩以太坊链上项目的必备技能(初识智能合约语言-Solidity之旅一) - 2

    前面一篇关于智能合约翻译文讲到了,是一种计算机程序,既然是程序,那就可以使用程序语言去编写智能合约了。而若想玩区块链上的项目,大部分区块链项目都是开源的,能看得懂智能合约代码,或找出其中的漏洞,那么,学习Solidity这门高级的智能合约语言是有必要的,当然,这都得在公链``````以太坊上,毕竟国内的联盟链有些是不兼容Solidity。Solidity是一种面向对象的高级语言,用于实现智能合约。智能合约是管理以太坊状态下的账户行为的程序。Solidity是运行在以太坊(Ethereum)虚拟机(EVM)上,其语法受到了c++、python、javascript影响。Solidity是静态类型

  3. ruby - session 未创建 : Chrome version must be between - 2

    当使用ruby​​selenium驱动程序驱动chrome时,我得到/home/travis/.rvm/gems/ruby-2.6.2/gems/selenium-webdriver-3.141.5926/lib/selenium/webdriver/remote/response.rb:72:in`assert_ok':sessionnot创建:Chrome版本必须在70和73之间(Selenium::WebDriver::Error::SessionNotCreatedError)如何解决这个问题?降级chrome不是我想做的事。 最佳答案

  4. ruby-on-rails - 为什么 ruby​​-debug 说 'Saved frames may be incomplete' - 2

    我有时会在触发断点时收到此消息。看起来堆栈帧没有得到保存,所以我无法通过调用堆栈返回-真的很痛苦。看下面的例子-->#0BatchProcess.add_failure_record(row_id#Fixnum,test#Struct::Test,message#String,...)atlineserver/processes/batch.rb:309Warning:savedframesmaybeincomplete;comparewithcaller(0).(rdb:1)ppcaller["./server/processes/batch.rb:309:in`run_tests'

  5. 【Linux】初识Linux --指令Ⅰ - 2

    Halo,这里是Ppeua。平时主要更新C语言,C++,数据结构算法,Linux…感兴趣就关注我吧!你定不会失望。目录1.ls显示当前目录下的文件内内容2.pwd-显示用户当前所在的目录3.cd-改变工作目录。将当前工作目录改变到指定的目录下1.cd-回到上一次待的工作空间2.cd..返回上一层目录1.相对路径:cd../aurora2.绝对路径:cd/home/aurora/lesson1/aurora3.cd~进入用户家目录4.cd/进入root目录4.mkdir-新建目录5.rmdir/rm-删除1.rmdir删除空文件夹2.rm删除1.rm-f2.rm-i3.rm-r1.ls显示当前目

  6. ruby - Chef : Can a variable set within one ruby_block be used later in a recipe? - 2

    假设我有一个变量directory_list,我在名为get_directory_list的ruby​​_block中定义和设置了它。我可以稍后在我的Recipe中使用directory_list吗,或者编译/收敛过程会阻止这种情况吗?例子:ruby_block"get_file_list"doblockdotransferred_files=Dir['/some/dir/*']endendtransferred_files.eachdo|file|file"#{file}"dogroup"woohoo"user"woohoo"endend 最佳答案

  7. ruby-on-rails - 修改 Rails : How do advanced users find out what needs to be changed? - 2

    我已经使用Rails几个月了,我很乐意编写一个项目并根据我的需要操作Rails等。最近我一直在尝试更高级一些,所以我尝试修改/添加到现有的Rails代码库:添加新的表单辅助方法、添加responds_to:pdf方法等...然后我遇到了很多问题。困难在于学习我需要修改哪些代码;该代码所在的位置,以及如何确保我不会错过其他文件中的相关代码。我猜人们有办法学会这样做,但目前我主要只是猜测和希望。我想我的问题是,Rails人员如何了解他们需要修改的代码在哪里编辑以及编辑代码的方法?看起来这只是您需要先熟悉的东西,但我猜必须有一种简单的方法来理解在哪里(和什么)编辑。任何想法表示赞赏.....

  8. ruby - `-' : nil can't be coerced into Fixnum (TypeError) - 2

    在我的程序中,我收到一条错误消息,显示./ruby_camping.rb:91:in`-':nilcan'tbecoercedintoFixnum(TypeError)。我想做的是为我刚刚入住的客人结账。这是结账部分的代码块:defself.check_outputs"Welcometocheckout!"puts$camping.current_guestsputs"Herearethecurrentguests,whodoyouwanttocheckout?!"puts"Stateplotnumber"plot=gets.chomp.to_iguest=$camping.curre

  9. ruby-on-rails - 回形针 gem - "Image has contents that are not what they are reported to be"错误 - 2

    该网站的功能是发布博客文章。它在Windows7上本地运行。我试过Paperclipgem(版本4.2.4和4.3)并且服务器在cmd中进入无限循环(在4.2.4上没有发生但仍然出现错误)。我做了bundleinstall并且它确实安装了。gem文件:gem"paperclip","~>4.3"这是模型:classPost":style/rails1.jpg"validates_attachment_content_type:image,:content_type=>/\Aimage\/.*\Z/end这是我在尝试提交图像(png或jpg)时遇到的错误:Imagehascontents

  10. ruby-on-rails - Rails 3.1 与 PostgreSQL : GROUP BY must be used in an aggregate function - 2

    我正在尝试加载按user_id分组并按created_at排序的最新10个艺术。这适用于SqlLite和MySQL,但在我的新PostgreSQL数据库上出错。Art.all(:order=>"created_atdesc",:limit=>10,:group=>"user_id")ActiveRecord错误:ArtLoad(18.4ms)SELECT"arts".*FROM"arts"GROUPBYuser_idORDERBYcreated_atdescLIMIT10ActiveRecord::StatementInvalid:PGError:ERROR:column"arts.i

随机推荐