之前的一些学习目标和计划

前言

好久没有更新过博客了,去年接触了很多大数据技术相关的东西,也做过一些基准测试。但是很多东西依然了解的相对浅显,只停留在使用层面,想下笔却又不知道从何写起。2021 年结束的时候曾列过一些计划,也算是学习过程中的一份指南吧。

计划

  • Hadoop

    • yarn 官方文档,要搞明白 yarn ui 上的参数,比如容量调度这些
      • yarn 架构
      • yarn 的容量调度策略,常见参数,作业帮采用的就是容量调度策略 https://cloud.tencent.com/developer/article/1195056
      • yarn 的公平调度策略
      • RM 的重启和 HA
      • NM
      • 分层次来看的话,就是 yarn 的整体架构(例如整个 job 的提交流程和通信) -> 各个组件内部的子组件(例如 RM 中的 schedual 和 AM) -> 子组件常见的一些策略(比如 failrecover, HA,调度策略,状态管理,资源模型)。这其中涉及到一些常见的配置,对于集群运维和平常的信息集群查看比较有用。另外可以拓展的来看,其和 flink 和 spark 等框架提交任务的过程都是异曲同工之妙。
    • MR 官方文档,主要是执行计划
    • HDFS 存储
  • 数仓

    • 业界提供的只是一个思想,大部分需要结合内部业务场景做灵活调整,并且要结合技术选型,确定常用维度,schema 的设计很重要。大体上分为如下步骤
      • 数仓规划,数据域和业务过程的划分,数仓建设的基础。
      • 数据标准,词根表,字段命名,字段业务含义和口径,强依赖于产品提供。
      • 数据指标,指标含义及口径,强依赖于产品提供。
      • 模型设计,需要着重考虑易用性,拓展性,规范性,定义分层数据流向标准,并且要考虑从表模型的设计及存储索引的简历来优化 SQL 的开发。
      • 模型评审,上面每一步都录入建模平台以保证业务一致性及可查性,避免歧义。
      • 资源预估,ETL 资源的合理预估,不限于存储,计算队列。
      • 离线拓展到实时,避免重复消费原始 topic,通过分发服务分发计算好的指标供各个分析主题链路消费
  • Hive

    • hive 参数优化、
    • 主要是扫描小文件,join 的倾斜,怎么定位出问题的 sql 逻辑。
    • hive on spark & hive on tez & hive on mr
    • 小文件主要存在三个方面的问题,存储压力(无法充分利用压缩),查询(扫描小文件,尤其是某些情况下的串行扫描,耗时非常长),元数据管理(增加元数据压力)
  • Flink

    • Flink 官方入门+进阶教程

      • Flink overview
      • Flink 的一些基础概念,比如有界无界流,状态,window + watermark
      • Flink 部署运行,常见命令
      • Flink DataStream API
      • Flink 客户端操作,比如实验性的 sql client
      • Flink Table API,在作业帮主要用的是 Table API,并且开发平台屏蔽掉了大部分的底层逻辑
      • Flink SQL
      • Flink Runtime 运行机制,比如提交流程,streamGraph -> jobGraph -> ExecutionGraph 的转换,语法树的解析,DAG 的生成,任务的重启策略
      • Flink Time 的概念和机制,以及要解决的问题
      • 以分层的角度来看 Flink 任务的提交过程,目前有个大致了解,但是说不上来,需要总结下
      • Flink 执行作业解析
      • Flink 网络流控和反压
      • Flink metrics
      • Flink Connector
      • Flink State
      • Flink Table SQL
    • Flink 的优化

      • 重点在于前期良好的资源评估,主要结合业务高峰期 qps
      • 因为本身资源足够,碰到的纯性能问题不多,优化点主要是分区不均匀的 topic,空跑的 slot 造成的资源利用率过低。以及释放掉高峰期数据处理空闲的内存。
    • Flink 官方文档阅读笔记

  • Kafka

    • Kafka 视频教程
  • Spark

    • spark catalyst 优化器源码
  • Doris

    • Dorisdb 执行计划查看,DAG 查看
    • 使用 dorisdb 过程总遇到的问题,大部分性能问题是通过重建 schema 来解决的,让存储更均匀,并且尽量命中前缀索引。
      • dorisdb 对 value 列的索引支持不太好
    • doris 的实时摄入性能测试及优化
    • doris 的离线摄入性能测试及优化
  • Druid

    • 官方文档
    • 常见优化
      • 摄入任务优化,hadoop based && kafka based,任务性能和最终生成的 segment 大小,分片的的折衷。
      • segment 存储优化
    • Druid 和 Doris 的不同地方,哪些场景下用 druid 比较好
      • druid 全列索引。dorisdb 只有 key 列上的前缀索引,bitmap 索引,大数据量下,低基维的检索可能不如 druid 好。
      • druid 无法存储明细数据,但是实施摄入相对简单,本身集成支持足够。doris 可以存储明细数据,但是实时摄入的话需要自己开发代码,受限于基建服务的问题,整个链路比较长。
    • Druid 离线摄入过程及优化
    • Druid 实时摄入过程及优化
    • Druid 集群运维,metrics 收集
    • Druid 物化视图
  • ElstaicSearch

    • 官方文档书籍 ElstaicSearch 权威指南
    • 基本原理
    • 深入的不多,只知道设置字段类型的时候需要考虑是否用到倒排索引,尤其是数字类型的低基维
  • 常见数据结构

    • bitmap
    • 倒排索引
    • HLL
    • 前缀索引
    • LSM
    • 稀疏索引
  • metrics 监控

    • 常见监控指标
    • kafka metrics
    • spark metrics
    • flink metrics
    • druid metrics
    • 对于部分计算系统,如何集成预期的自定义指标,比如处理错误量等
    • grafana + prometheus 简单配置
使用搜索:谷歌必应百度