赞
踩
大数据学习最好有一门语言基础,Java和python最好。学习资料的话,推荐阿里云社区的课程和B站上尚硅谷的免费课程。学习过程中,结合着大数据组件的官方文档
对自己理解不了和模糊的地方,做一个补充。数仓和spark分析这块,最好结合这业务来,多加联系加深影响。
https://developer.aliyun.com/learning/roadmap/bigdata
一、Linux (基础)
虚拟机VMware,xshell等工具的使用。
1)常用命令(文件查看编辑、用户权限操作、服务器资源操作、进程端口查看等);
2)高级工具命令: rpm、yum、awk、ssh免密、grep、crontab等;
3)常用组件的安装(虚拟机克隆、NAT/桥接等网络配置原理、jdk安装、MySQL安装、时间同步服务等)
4)shell脚本编程(/bin/bash: if判断,for循环,取参数时间等)
二、zookeeper
(基础)
1)安装部署
2)zookeeper数据结构,node类型,数据存储
3)paxos算法、zab原理,集群脑裂
4)监听器原理,选举机制和具体过程,写数据流程;
5)zookeeper的API,watch,分布式锁实现,服务动态上下线
三、Hadoop
(基础,目前公司用的2.0和3.0版本,版本更新是趋势。可以以2.0为主学习入门,掌握后进阶3.0)
通用部分:
安装部署(完全分布式和HA方式部署,联邦方式了解),运行和简单操作(HDFS和MR的),源码编译,添加压缩(snappy、lzo)
1、HDFS部分
1)架构和组件,具体分工;
2)block的决定依据,切片划分机制,FileinputFormat的几种实现类;
3)HDFS文件的shell操作,上传下载以及Java API操作等;
4)对应的文件读数据流程,写数据流程,小文件问题;secondaryNameNode的工作机制和过程;
5)dataNode的数据完整性怎么保证;怎样动态上下线新的dataNode;机架感知
2、MapReduce部分
1)切片机制,mapTask数决定;
2)mapTask工作机制和流程:(FileinputFormat类;map;环形缓存区结构、设计意义和配置参数;partitioner分区和快速排序;自定义分区器;
溢写文件和归并排序;combiner;自定义排序writableCompareble;)
3)shuffle过程(Java序列化和MR序列化WritableComparable;压缩编码)
4)reduceTask过程:(reduceTask并行度决定和设置;分区数量和ReduceTask数的结果;远程拷贝和归并合并;分组GroupingComparator;reducer;
outputFormat和自定义输出)
3、yarn部分
1)组件和功能(RM和NM; yarnRunner、MRAppmaster、yarnchild、container)
2)资源调度器:FIFO,容量,公平;
3)yarn参数调优
四、hive部分
(熟练:数仓,离线计算,lambda架构的数仓hive是核心;现在实时数仓kappa架构的技术栈是: flink + kafka + OLAP工具[clickhouse/druid等])
1)安装
2)数据类型和集合数据类型,类型转换
3)beeline、matastore;集成Tez引擎; 配置hive on spark;配置压缩;
4)数据库操作;表(内部表、外部表;分区表;分桶表);load数据到表、导出数据到本地;
5)查询操作(sql);内置函数(时间、字符串、json等);自定义UDF、UDAF;分组(group by、sort by、distribute by、cluster by)
join操作;窗口函数;行列转换; 常用(NVL、if()、CASE WHEN、Rank())
6)文件格式(textFile、sequenceFile、Orc、parquet)
7)数据倾斜的现象和原因;优化(开启MapJoin、开启Map端聚合、join时做控制过滤 、动态分区调整、开启推测执行、开启JVM重用等)
impala
(内存计算的,同样的可以学习 hive集成Tez和 spark on hive)
1)架构与简介;安装;操作
2)原理,组件;同类工具的优缺点对比
3)优化
presto
(异构数据源联合查询,olap分析工具,同类工具还有很多,常用的还有kylin、druid等)
五、数据抽取工具(sqoop / kettle/datax/flinkx)
(掌握: 数据抽取,这些都是从DB抽取数据到数仓中的,数据源一般是一些业务表;这些组件也有支持文件、Nosql等数据输入源的)
1) sqoop 1.X和2.X的架构;底层原理;安装部署
2)RDBMS导入数据;导出数据到RDBMS;空值问题、一致性问题;
3)kettle在window环境下安装,操作;JVM配置
4)datax的各种输入输出源配置,json模板生成和各个参数含义,自定义源开发等
5)flinkx抽取数据,json文件编写
6)抽数工具数据量、稳定性、性能差异、适用场景等对比
7)可能涉及的其他组件: CDC机制、Ogg、Canal等
六、flume
(数据抽取,一般做日志文件收集的;同类的在Java开发中有ELK体系:xxBeat【filebeat】、logstash、elasticsearch、kibana)
(还有一类数据采集需求是直接做文件上传的,可以找找FTP文件收集相关的知识,这类在以后物联网、车联网行业可能比较多)
1)数据分域;双层flume的意义
2)安装部署;agent的组成架构;常用source(自定义source);常用拦截器(自定义拦截器);channel选择器;channel类型;常用sink(自定义sink)
3)agent内部原理和流程;event结构;put事务,take事务;
4)Kafka channel 和HDFS sink,参数配置和调优;
5)监控器ganglia
七、Kafka(熟练)
(kafka不管是在离线数仓,还是实时数仓,或者ETL等场景,都有很广泛运用。核心就是要明白:Kafka怎样保证精准一致性、什么情况下消息丢失或重复)
1) 安装部署、操作命令
2)原理、组件架构、生产者消费者设计模式、零拷贝、顺序写磁盘、offset和文件存储机制
3)producer端: ack机制、ISR机制、LEO和HW故障恢复机制、幂等性和实现原理、事务机制
4)broker存储: 分区、副本、副本的主从、什么情况下topic里的消息是顺序性的
5)consumer端: 消费pull机制、集成flink和spark、分区分配策略、消费者组和消费者、重新消费消息
6)kafka拦截器实现
7)kafka stream相关知识
八、调度工具(Oozie/azkaban / airflow/DolphinScheduler)
(离线数仓中,任务调度必不可少的。能熟练使用就行,目前我一般用azkaban。)
1) 安装部署、操作命令、配置、 任务链路、监控预警等
2)跟此类相关的技能: shell脚本、python脚本
九、hbase / clickhouse / kudu / Iceberg
(OLAP和数据湖相关的组件,数仓和数据开发涉及到。这些结合项目去学习一下,像智能推荐系统、用户画像特征、风控决策和预警系统等,有兴趣的可以深究底层和源码)
十、集群搭建(ambari / clouderaManager )
(了解: 可能有的公司有大数据运维岗位,数据开发和数据仓库岗位不怎么涉及此类工作)
十一、scala/java
(spark写scala的多一些,因为flink在时间语义、精准一致性等方面优势,现在flink是主流方向,底层是Java语言)
spark
基础部分:
spark sql
spark streaming
spark内核解析; 内存管理模型;任务执行流程;性能调优手段(数据倾斜);
flink(市面上的书籍较少,参考官网学习,也可以去B站白嫖相关视频,还在学习中...)
十二、 python
(python的库很多,即使不做开发,也可以学习,写一些实用的小工具)
superset(BI分析,报表展示相关的。可以在浏览器连接数据域,编写sql查询相关结果,配置想要的图表展示。图表可以嵌入式的引入前端项目)
十三、数据仓库
(数仓部分东西比较多,跟最近流行的数据中台、数据治理也有一些关系,除了技术知识外,对业务熟练度其实也有要求的,这个更像是项目类的知识点。这个目录后面另起一篇文章管理)
概念和理论
1)数仓架构发展(lambda > kappa > 实时数仓+OLAP > 混合数仓)数仓分层设计;数据分域;指标体系;阿里的onedata理论;企业总线架构矩阵设计;
2)维度建模方法和依据;其他建模方法;维表;事实表;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。