前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

介绍

作者头像
awwewwbbb
发布2022-04-27 09:08:42
9140
发布2022-04-27 09:08:42
举报

介绍

针对大数据组件特点归纳如下:

  • 存储:HDFS,hudi,Hbase, Kafka
  • 计算引擎:Spark,Flink
  • OLAP: Doris
  • 调度: Yarn

下面主要从架构、组件原理、业务场景等角度针对相关组件的技术要点进行总结. 主要以问题驱动.

组件技术要点

1.hudi的cow,mor区别和应用场景?

Cow:  写时复制技术就是不同进程在访问同一资源的时候,只有更新操作,才会去复制一份新的数据并更新替换,否则都是访问同一个资源  读多写少的数据,适合cow,离线批量更新场景 Mor: 新插入的数据存储在deltalog 中,定期再将delta log合并进行parquet数据文件。读取数据时,会将deltalog跟老的数据文件做merge,得到完整的数据返回 由于写入数据先写deltalog,且delta log较小,所以写入成本较低,适用实时高频更新场景

2. hdfs架构及各角色的作用,如何实现namenode 高可用?

Namenode: 管理节点,存储元数据、文件与数据块对应关系的节点,数据以fsimage和editlog存储在namenode本地磁盘

Datanode:文件系统工作节点,根据需要存储和检索数据块,定期向他们发送存储的块列表 双机热备份,standby和active, 备用namenode为活动的namenode设置周期性的检查点,判断活动namenode是否失效

3. hbase架构,如何解决写热点问题?

  • RegionServer:负责数据的读写服务,用户通过与Region server交互来实现对数据的访问
  • HBaseHMaster:负责Region的分配及数据库的创建和删除等操作
  • ZooKeeper:负责维护集群的状态(某台服务器是否在线,服务器之间数据的同步操作及master的选举等)

热点:

创建表的指定多个region,默认情况下一个表一个region

对rowkey进行散列,把多个请求写分到不同的region上,需要对key进行md5,进行散列,这样就可以把写请求分到不同的region上面去

4.kafka rebalance机制,架构及写入存储机制?

rebalance机制:

当kafka遇到如下四种情况的时候,kafka会触发Rebalance机制: 消费组成员发生了变更,比如有新的消费者加入了消费组组或者有消费者宕机 消费者无法在指定的时间之内完成消息的消费 消费组订阅的Topic发生了变化 订阅的Topic的partition发生了变化 kafka中的重要概念:

Producer: 消息生产者,向 Kafka Broker 发消息的客户端。 Consumer: 消息消费者,从 Kafka Broker 取消息的客户端。 Consumer Group:消费者组(CG),消费者组内每个消费者负责消费不同分区的数据,提高消费能力。一个分区只能由组内一个消费者消费,消费者组之间互不影响。所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。 Broker: 一台 Kafka 机器就是一个 broker。一个集群由多个 broker 组成。一个 broker可以容纳多个 topic。 Topic: 可以理解为一个队列,topic 将消息分类,生产者和消费者面向的是同一个 topic。 Partition: 为了实现扩展性,提高并发能力,一个非常大的 topic 可以分布到多个 broker(即服务器)上,一个 topic 可以分为多个 partition,每个 partition 是一个 有序的队列。 Replica: 副本,为实现备份的功能,保证集群中的某个节点发生故障时,该节点上的 partition 数据不丢失,且Kafka 仍然能够继续工作,Kafka 提供了副本机制,一个 topic 的每个分区都有若干个副本,一个 leader 和若干个 follower。 Leader: 每个分区多个副本的“主”副本,生产者发送数据的对象,以及消费者消费数据的对象,都是 leader。 Follower: 每个分区多个副本的“从”副本,实时从 leader 中同步数据,保持和 leader数据的同步。leader 发生故障时,某个 follower 还会成为新的 leader。 offset:消费者消费的位置信息,监控数据消费到什么位置,当消费者挂掉再重新恢复的时候,可以从消费位置继续消费。 Zookeeper: Kafka 集群能够正常工作,需要依赖于 zookeeper,zookeeper 帮助 Kafka存储和管理集群信息。 写入存储机制:

由于生产者生产的消息会不断追加到 log 文件末尾,为防止 log 文件过大导致数据定位效率低下,Kafka 采取了分片和索引机制,将每个 partition 分为多个 segment,每个 segment 对应两个文件:“.index” 索引文件和 “.log” 数据文件。这些文件位于同一文件下,该文件夹的命名规则为:topic 名-分区号。例如,first 这个 topic 有三分分区,则其对应的文件夹为 first-0,first-1,first-2。

代码语言:javascript
复制
 ls/root/data/kafka/first-0

00000000000000009014.index   
00000000000000009014.log
00000000000000009014.timeindex
00000000000000009014.snapshot
leader-epoch-checkpoint

".index”文件存储大量的索引信息,“.log” 文件存储大量的数据,索引文件中的元数据指向对应数据文件中 message 的物理偏移量。

5.spark宽依赖,窄依赖,数据倾斜问题解决方案?

宽依赖:是指1个父RDD分区对应多个子RDD的分区

窄依赖:是指一个或多个父RDD分区对应一个子RDD分区

宽依赖会产生shuffle,会跨网络拉取数据; 窄依赖在一个节点内就可以完成转换。 数据倾斜解决方案:

  1. 针对hive数据分布不均匀,Hive ETL 预处理数据
  2. 过滤少数导致数据倾斜的key
  3. 提高shuffle操作的并行度
  4. 双重聚合,局部聚合先给每个key都打上一个随机数,再全局聚合
  5. 将reduce join转为map join, BroadCast+filter(或者map)
  6. 采样倾斜key分拆join操作, 将两次join的结果union合并起来,就是join的结果

6.flink状态存储,架构,如何实现精确一次语义?

Flink提供了三种开箱即用的状态存储方式:

  1. MemoryStateBackend 内存存储
  2. FsStateBackend 文件系统存储
  3. RocksDBStateBackend RocksDB存储

如果没有特殊配置,系统默认使用内存存储方式 架构: JobManager:     JobManager具有许多与协调 Flink 应用程序的分布式执行有关的职责:它决定何时调度下一个 task(或一组 task)、对完成的 task 或执行失败做出反应、协调checkpoint、并且协调从失败中恢复等等 TaskManagers:     TaskManager(也称为worker)执行作业流的 task,并且缓存和交换数据流 精确一次语义保证: source端:  Flink Kafka Source 负责保存 Kafka 消费 offset, Chckpoint成功时 Flink 负责提交这些写入 sink端: 从 Source端开始,每个内部的 transform 任务遇到 checkpoint barrier(检查点分界线)时,都会把状态存到 Checkpoint 里,   数据处理完毕到 Sink 端时,Sink 任务首先把数据写入外部 Kafka,这些数据都属于预提交的事务(还不能被消费) 当所有算子任务的快照完成, 此时 Pre-commit 预提交阶段才算完成。才正式到两阶段提交协议的第二个阶段:commit 阶段。该阶段中JobManager 会为应用中每个 Operator 发起 Checkpoint 已完成的回调逻辑, 当 Sink任务收到确认通知,就会正式提交之前的事务,Kafka 中未确认的数据就改为“已确认”,数据就真正可以被消费了

7.doris架构设计,如何实现查询计算较快?

架构: FE: 主要负责查询的编译,分发和元数据管理(基于内存,类似HDFS NN) BE: 主要负责查询的执行和存储系统 查询计算快原因:  1. MPP架构  2. 列式存储

8.yarn调度算法有哪些,以及调度过程?

调度算法:

  1. 先进先出调度器(FIFO)    单队列,根据提交作业的先后顺序,先到先得。
  1. 容量调度器
  1. 公平调度器

容量调度器:优先选择资源利用率低的队列; 公平调度器:优先选择对资源缺额比例大的。

9.flink作业提交流程?

Yarn-session: 应用模式与单作业模式的提交流程非常相似,只是初始提交给Yarn资源管理器的不再是具体的作业,而是整个应用。一个应用中可能包含了多个作业,这些作业都在Flink集群中启动各自对应的JobMaster。

Per-job:  与会话模式不同的是JobManager的启动方式,以及省去了分发器。作业提交给JobMaster之后的步骤是一样的

参考

  1. 列式存储: https://juejin.cn/post/7080504990900420644
  2. Yarn调度器和调度算法(FIFO、容量调度器 与 公平调度器):https://blog.csdn.net/FunnyPrince_/article/details/120244552
  3. Flink作业提交流程(Yarn集群模式:  https://blog.csdn.net/FlatTiger/article/details/124195400
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 组件技术要点
    • 1.hudi的cow,mor区别和应用场景?
      • 2. hdfs架构及各角色的作用,如何实现namenode 高可用?
        • 3. hbase架构,如何解决写热点问题?
          • 4.kafka rebalance机制,架构及写入存储机制?
            • 5.spark宽依赖,窄依赖,数据倾斜问题解决方案?
              • 6.flink状态存储,架构,如何实现精确一次语义?
                • 7.doris架构设计,如何实现查询计算较快?
                  • 8.yarn调度算法有哪些,以及调度过程?
                    • 9.flink作业提交流程?
                    • 参考
                    相关产品与服务
                    文件存储
                    文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档