注 正如上图所示, FE 端主要是 PaloFe 开启的服务入口, 后端为 doris_main 开启的服务入口,前后端交互主要靠 thrift rpc 进行调用。 FE 中主从选举及元数据 *** 作日志同步等均依托 bdbje 主从方案来实现。
元数据变更日志主要靠 bdbje 的主从复制来完成如下图:
注 元数据的数据流具体过程如上图所示,步骤如下:
和速即到G,有单速级间算这是的1级单。
Doris 支持本地文件、实时数据和HDFS文件的导入,通过兼容MySQL协议,用户可以将原来通过各种主流BI工具和可视化平台业务切换到Doris,改为直接连接Doris集群。
百度数据仓库Palo是由Apache Doris核心研发团队在百度云上提供的基于Apache Doris 的数据仓库服务,可以面向企业级用户提供全托管的数仓体验,同时也支持多云及私有化部署。
Apache Doris技术原理:
ApacheDoris 主要基于C++ 和Java 开发,集成了Google Mesa 和Apache Impala 的技术。将Mesa 与Impala进行组合的基础上,Doris 被设计为一个不依赖于其他系统的简单且单一紧密耦合的系统,并实现了MySQL协议,使得用户可以像使用MySQL 无缝过渡到Doris。
包括各种报表应用都可以通过MySQL协议连接Doris,同时获得高并发低延迟点查询性能,而且还能进行高吞吐量的即席分析查询。Doris 不仅提供大批量数据加载,而且还提供近乎实时的小批量,甚至流数据加载。此外Doris还具备可用性,可靠性,容错性和可扩展性。
注 修改配置之后,需要通过 metadata_failure_recovery=true 来清空 bdbje 的元数据, 因此当修改 FE 端口等都可以通过在 fe/conf/feconf 的方式来使其生效即可,然后将 feconf 文件中的 metadata_failure_recovery=true 删除防止下次再次清除咯。(源码: orgapachedorisjournalbdbjeBDBDebugger )
修改 feconf 文件增加 enable_bdbje_debug_mode=true , 然后通过 sh start_fesh --daemon 启动 FE 即可进入 debug 模式。 进入 debug 模式之后,仅会启动 >
一、基础部分:JAVA语言 和 LINUX系统
二、数据开发:
1、数据分析与挖掘
一般工作包括数据清洗,执行分析和数据可视化。学习Python、数据库、网络爬虫、数据分析与处理等。
大数据培训一般是指大数据开发培训。
大数据技术庞大复杂,基础的技术包含数据的采集、数据预处理、分布式存储、数据库、数据仓库、机器学习、并行计算、可视化等各种技术范畴和不同的技术层面。
2、大数据开发
数据工du程师建设和优化系统。学习hadoop、spark、storm、超zhi大集群调优、机器学习、Docker容器引擎、ElasticSearch、并发编程等;
课程学习一共分为六个阶段:
在实际的业务场景中,随着业务数据量越来越大,对数据去重的压力也越来越大,当数据达到一定规模之后,使用精准去重的成本也越来越高,在业务可以接受的情况下,通过近似算法来实现快速去重降低计算压力是一个非常好的方式,本文主要介绍 Doris 提供的 HyperLogLog(简称 HLL)是一种近似去重算法。
HLL 的特点是具有非常优异的空间复杂度 O(mloglogn) , 时间复杂度为 O(n), 并且计算结果的误差可控制在 1%—2% 左右,误差与数据集大小以及所采用的哈希函数有关。
它是 LogLog 算法的升级版,作用是能够提供不精确的去重计数。其数学基础为 伯努利试验 。
假设硬币拥有正反两面,一次的上抛至落下,最终出现正反面的概率都是50%。一直抛硬币,直到它出现正面为止,我们记录为一次完整的试验。
那么对于多次的伯努利试验,假设这个多次为n次。就意味着出现了n次的正面。假设每次伯努利试验所经历了的抛掷次数为k。第一次伯努利试验,次数设为k1,以此类推,第n次对应的是kn。
其中,对于这n次伯努利试验中,必然会有一个最大的抛掷次数k,例如抛了12次才出现正面,那么称这个为k_max,代表抛了最多的次数。
伯努利试验容易得出有以下结论:
最终结合极大似然估算的方法,发现在n和k_max中存在估算关联:n = 2 ^ k_max。 当我们只记录了k_max时,即可估算总共有多少条数据,也就是基数。
假设试验结果如下:
取上面例子中前三组试验,那么 k_max = 6,最终 n=3,我们放进估算公式中去,明显: 3 ≠ 2^6 。也即是说,当试验次数很小的时候,这种估算方法的误差是很大的。
这三组试验,我们称为一轮的估算。如果只是进行一轮的话,当 n 足够大的时候,估算的误差率会相对减少,但仍然不够小。
HLL 是基于 HyperLogLog 算法的工程实现,用于保存 HyperLogLog 计算过程的中间结果,它只能作为表的 value 列类型、通过聚合来不断的减少数据量,以此
来实现加快查询的目的,基于它得到的是一个估算结果,误差大概在1%左右,hll 列是通过其它列或者导入数据里面的数据生成的,导入的时候通过 hll_hash 函数
来指定数据中哪一列用于生成 hll 列,它常用于替代 count distinct,通过结合 rollup 在业务上用于快速计算uv等
HLL_UNION_AGG(hll)
此函数为聚合函数,用于计算满足条件的所有数据的基数估算。
HLL_CARDINALITY(hll)
此函数用于计算单条hll列的基数估算
HLL_HASH(column_name)
生成HLL列类型,用于insert或导入的时候,导入的使用见相关说明
HLL列不允许直接查询原始值,只能通过HLL的聚合函数进行查询。
以上就是关于Doris 源码分析 (二) 代码结构分析全部的内容,包括:Doris 源码分析 (二) 代码结构分析、亚秒 和 秒 是怎样的换算、Doris 源码分析 (四) 元数据维护等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)