1.前言
1.1Why
为什么要学
工作中主要是面向需求的sql工程师。但是本人对技术有着无尽的向往和卓越的追求,利用工作之余时间学习了常见的语言和大数据体系
为什么要写笔记
两方面原因:
一者记录笔记加深印象;加上个人记性较差,方便后续查阅使用
二者网上有些学习资料不成体系。此处采用原理讲解 + 代码实操方式全面介绍相关知识体系,方便后来者借鉴学习
1.2How
以下的语言(java、scala、python、react)主要根据网上学习教程及查阅资料学习;
以下大数据框架(hadoop、spark、flink等)主要根据学习视频、网上资料、及官网学习总结,极少部分debug了源码
目前主要增加知识广度,由于工作中很少用到相关知识,因此处于浅尝辄止、囫囵吞枣,很多知识点理解不够深刻。待后续确定方向后增加学习深度
1.3What
以下仅代表个人学习感受:
语言:
java:善于网页后端开发,尽管进行crud代码繁琐,但是(dao、service、pojo、web)各层层次分明、各司其职、思路清晰,方便维护理解。
scala:一切皆函数,善于函数式编程。spark、kafka等大数据框架均主要由scala编写
python:擅长数据分析和机器学习,有丰富的类库,如pandas可以像sql一样操作数据集。编写简洁方便
react:易于学习,组件化各功能。另外蚂蚁 antd 提供了丰富的组件库,方便使用
大数据:
大数据主要解决海量数据的传输、存储和计算问题
flume、sqoop、kafka主要解决数据的传输问题;
hdfs、hbase解决数据存储问题、kafka也可以存储短期(默认7天)数据
mapreduce、spark core(spark sql)、flink batch主要解决离线计算问题,flink stream、spark streaming&Structured Streaming解决实时计算问题
yarn解决资源管理问题,MapReduce(hadoop自带)、spark、flink均可以和yarn良好集成,zookeeper进行资源协调,可存储少量元数据及解决HA问题
hive将sql转换成MapReduce、spark代码执行,方便编写
spark graph解决图计算,spark也提供了丰富的机器学习库;flink亦如此
azkaban、oozie提供任务调度
其实很多框架的实现原理类似。如hadoop、spark、flink等都是由类master、worker架构组成;flink、spark streaming都提供了翻滚窗口、滑动窗口等
2.语言
2.1Java
图简介
程序员常用十种算法
博客代码后端 (springboot+mybatis) 半成品,主要学习框架
2.2Python
简易博客前后端 (半成品) -- 参考 python学习网站
2.3Scala
2.3React
博客代码前端 (react+dva) -- 半成品
3.大数据
3.1Kafka
3.2Hbase
3.3Zookeeper
3.4Hadoop
3.5Hive
3.6Spark
Spark Streaming & Structured Streaming 略
Spark Graph 略
3.7Flink
4.展望
接下来学习在两个方面:
4.1广度
完善大数据体系:学习基础的机器学习算法,深入结合业务,利用算法为业务插上飞翔的翅膀,创造无限想象力
4.2深度
深入学习解读一个计算框架的原理(源码级别),具体视工作需要而定,暂定flink
其它文章
友情链接
不忘初心,方得始终!