大数据工程师技能总结

业务分层划分

  • 边缘部分

    • 数据收集,高效、不丢、资源消耗低、可审计监控
    • 数据传输,域名、链路选择
    • 数据开发,部分数据开发需要下沉到边缘
  • 中央部分

    • 通用基础设施

      • 机器选型,针对不同服务选择合适的机型
      • 集群搭建,选择合适的发行版本
      • 配置管理,做到自动化下发配置,管理集群,服务
      • 监控管理,监控大数据平台组建,为调优、扩容提供数据支撑
    • 数据平台基础

      • 数据接入,选择Flume,易扩展,方便接入各类数据
      • 数据计算,选择Spark,MR
      • 数据存储,Kafka、HDFS、HBase、ClickHouse、ES、Mongodb
      • 计算管理,yarn进行计算资源管理
      • 任务调度,选择azkaban
      • 数据分析,hiveSQL、sparkSQL
    • 数据管理

      • 数据开发,工具封装、任务调度、测试等
      • 数据仓库,ODS、DW(视情况细分为DWD,DWS)、DM(亦或者为ADS)
      • 数据治理,元数据管理、数据质量管理
    • 数据使用

      • 数据查询,提供给运维
      • 数据运营,提供给项目
      • 数据报表,提供给老板
      • 数据API,提供给客户

平台建设总结

  • 边缘

    • Flume、FileBeat的收集传输数据
    • 做好监控,保障不丢数据,延迟低,资源消耗可控
  • 中央

    • 通用基础设施
      • 了解硬件选型需要注意的问题点,选择合适的硬件
      • 针对不同的服务,做合适的系统配置优化
      • 熟练掌握大数据集群的搭建,并结合ansible做到近100%的自动化创建、管理、维护
      • 采用Telegrafa、influxdb、grafana,监控内部大数据集群和spark等计算状态信息
    • 数据平台基础
      • 数据接入
        • 代理层,采用Haproxy,4层代理,可以在升级后端时,选择性的摘除backend
        • 接收层,采用flume,研读过Flume的Memory channel代码,开发过Flume插件
      • 数据计算
        • 涉及流数据开发、离线统计开发,涵盖实时监控、通用用户数据统计、特殊客户需求开发等多方面,
        • 对计算进行了二次封装,该工具计算采用spark,配置采用yaml,配置后提交azkaban调度,完成计算需求,支持流和文件两大类输入,支持多种存储输出,大大提升了计算开发
        • ETL相关,该部分主要涉及到ODS、DW、DM之间数据的流动,主要是用hivesql,调度采用azkaban,hivesql 底层引擎测试过tez,部分job 使用该引擎
      • 数据存储
        • kafka,作为日志消息队列,深度了解kafka,熟悉kafka读写过程,针对kafka做过大量的调优
        • HDFS,ODS、DW的存储介质,了解HDFS的内部机制,内部HDFS的维护者,HDFS存储的数据为parquet格式,计算效率高,方便和Hive结合
        • DB存储,HBase 作为海量OLTP存储,有很高效的写入性能,略微可以的查询性能,部分高度聚合的专用数据存储在HBase中;ClickHouse 作为一款优秀MPP架构的OLAP 数据库支持实时写入,查询聚合能力极强,并发略低,用于各类多维不确定数据分析存储;ES 检索能力,多维查询能力很棒,是部分特殊日志的存储介质,可以方便查询和画图
      • 计算资源管理
        • yarn,目前大数据集群最大的占有,数量的掌握yarn计算资源调度管理,针对不同部分,配置不同的队列,进行资源隔离,并且鉴于不用时段任务状态各异,会动态的调整yarn各个队列的capacity
      • 任务调度
        • 目前较为常用的是azkaban、airflow,我们选择了azkaban,用它来调度hive,spark,mr等,内置了多种job type,方便易用
      • 数据分析
        • 临时需求,使用的是hivesql/spark sql,查询的数据涉及DM、DW或者ODS,视穿透情况而定;
        • 通用需求,使用的是封装的计算工具,一般涉及到数据的输出
    • 数据管理
      • 数据开发套件,目前还比较简陋,但是可以方便快捷的将计算开放给使用方,简单配置即可进行数据开发
      • 离线数据仓库
        • ODS层,数据接入统一以parquet的格式持久化到HDFS形成ODS,根据内外部需求开发ETL,将ODS数据转化写入DW,ODS层数据保存至少6个月
        • DW层,目前根据量级和数据复杂度划分为一层或者两层,数据量小且计算频次低,则这部分业务只有DWS层;针对一些负责多维的数据,增加一层通用聚合层DWD层,形成数据宽表,为DWS层服务;DW数据保存1-3年
        • DM(亦或者为ADS)层,则是最终数据提供层,高度聚合数据存储到hbase或者hdfs,对于维度较多,查询不太确定的数据存储到clickhouse,永久保存,对于过老的数据,可以同步到廉价存储进行保存
      • 实时数据仓库
        • DW层,通用聚合层DWD层,存储数据到kafka;DW数据保存1-3天
        • DM(亦或者为ADS)层,则是最终数据提供层,实时消费kafka计算写入,高度聚合数据存储到hbase或者hdfs;对于维度较多,查询不太确定的数据存储到clickhouse
      • 数据治理
        • 元数据管理,目前比较简陋,wiki记录或者gafana查询平台选择对应数据源
        • 数据质量管理,目前采用边缘独立计算和中央抽样实时计算进行实时对比,结果集成在grafana
    • 数据使用
      • 数据查询,需求方为运维,提供的工具有命令行查询工具、勾选式查询平台、kibana查询平台
      • 数据运营,需求方为项目,提供勾选式查询平台
      • 数据报表,需求方是项目或者客户,对内提供勾选式查询平台;对外提供API查询;或者自动化报表生成发送
      • 数据API,需求方是客户,提供形式是API服务

个人技能总结

  • 通用基础设施
    • 熟悉硬件选型,完成过多种服务的硬件选型,曾在单一服务优化中成本提升7%,单机性能提升50%
    • 优秀的运维技能,发现并排查到一个系统内核bug
    • 熟练掌握大数据集群的搭建,并结合ansible做到近100%的自动化创建、管理、维护
    • 采用Telegrafa、influxdb、grafana,监控内部大数据集群和spark等计算状态信息
    • 大数据配套组件,引入过azkaban调度平台、dr-elephant等
  • 数据平台基础
    • 数据接入
      • 熟悉flume开发,研读过Flume的Memory channel、kafkasink 等多个核心组件的代码,开发过Flume interceptor插件
    • 数据计算
      • 涉及流数据开发、离线统计开发,涵盖实时监控、通用用户数据统计、特殊客户需求开发等多方面,熟练掌握spark、hive、mr
      • 语言涉及java、golang、scala
      • 为了方便计算封装了一个通用计算工具,提升了开发效率
      • 开发过IP转换的hive UDF模块
    • 数仓建设
      • 做过简单的数仓分层建设、建表规范话、etl规范化等
    • 数据存储
      • kafka,熟练掌握kafka,作为ODS数据前置日志队列和实时计算存储,了解过部分组件的代码,内部解决过kafka出现的各类问题
      • HDFS,熟练掌握HDFS的搭建、维护,深入了解过hdfs读写、高可用、配置优化等
      • 数据格式,大量使用过parquet,测试使用过orc,carbondata,了解avro、thrift等rpc格式,开发过filebeat的thrift output,对接flume 的thrfit source
      • DB存储
        • Mysql,数据迁移、分区表、更换引擎、数据备份、读写分离、主从同步
        • MongoDB,数据迁移、数据备份、部分小优化
        • Hbase,结合phoenix使用,了解hbase底层原理,做过hbase的深度测试调优
        • Clickhouse,了解使用过clickhouse多个mergeTree 引擎,打架维护过两大通用集群架构
        • ES,熟悉ES 上下游组件,熟练掌握logstash、hangout等数据写入工具
    • 其他调研了解,仅搭建使用,了解了大概
      • prestodb
      • kudu
      • carbondata
      • Maxwell & canel
  • 数据使用
    • 简陋版统一数据查询平台,基于grafana simple-json-datasource做数据源开发
    • 尝试过superset和zepplin场景不太适用,放弃了
  • 开发技能
    • 熟练掌握java,golang开发,了解scala,学习过akka
    • 熟悉了解JVM,JMM相关知识
    • 熟悉了解golang gpm和内存管理相关知识
    • 熟练掌握hive SQL,spark 开发,FLume开发,MR开发

你可能感兴趣的:(大数据工程师技能总结)