大数据学习计划
链接:https://www.zhihu.com/question/52187221/answer/129439263
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
如果你毕业了, 去个什么公司,应聘个“大数据开发工程师”什么的,我们来看看职位要求是什么:
岗位职责:
1、负责数据分析、监控、安全、风控等平台设计与开发
2、责基于spark平台的用户行为分析、实时业务数据的开发
3、采用统计分析、数据建模、数据挖掘等方法,提供有价值的数据、模型、算法支持
岗位要求:
1、大学本科学历,3年及以上相关工作经验
2、熟悉java/scala的一种开发语言
3、熟悉spark/hadoop生态系统
4、熟悉shell或python脚本
5、有数据挖掘、机器学习方面的项目经验者优先
6、熟悉Redis、MongoDB、HBase等NOSQL数据库
7、良好的沟通与技术学习能力,对开源技术充满热情
看到没?
大数据开发一共几个流程,大概概括起来有:
收集、清洗、数仓(建模)、OLAP、可视化
这里边:
收集一般的技术是:Kafka、Flume、高性能HTTP开发(可能)、Avro协议(可能)、Thrift协议(可能),取决于所在公司的技术栈。
清洗:Spark、HiveSQL/SparkSQL、MapReduce(已经过时)
存储:HDFS、Alluxio(分布式内存存储)、Redis(高速缓存)、mongoDB(文档型数据库)...
流式计算:Spark Streaming / Storm
数仓建模:Hive、MongoDB、HBase
OLAP:MySQL(常用),PostgreSQL(GreenPlum)MyCAT(小众)...
数据可视化:一般来说这活不归你管, 技术有 echarts.js hicharts.js d3.js ...
看眼花了吧?
其实很好理解, 从上到下就是:数据要怎么存, 数据要怎么查...
你需要学的是:
计算机体系基础: 内存、CPU、指令、等等这些概念,得有个感觉,不然别人一说,你都不知道咋回事,尴尬了。看《深入理解计算机系统》。
网络基础: 这个我还真不知道有什么书, 《TCP/IP详解》有点深了,不过你有时间,慢慢啃下来挺好, 而且第一本就够用,书也不厚。
数据库基础:RMDBS里的MySQL其实我不推荐,但是这玩意已经烂大街了,是个公司就用,不学也得学。postgreSQL很不错,但是用的人少。
Java系的语言你必须得会, 重要的就是Java和Scala, Java用来做传统的开发(你总要写几个接口, 这个时候最常用的就是SpringMVC/Mybatis,这俩兄弟玩明白就行了, 但是什么J2EE,什么Hibernate,什么HTML5,跟你一点关系也!没!有!)。
Scala是我特别推崇的一门语言, 灵活、高效, Java搞懂了就把它也学了,以后写Spark,甚至用Play写Web,都很爽。
Python是必学的一门语言, 灵活的脚本, 以后想早点下班回家,少不了它。
Hadoop生态体系你必须得懂, 不需要一个组件一个组件的文档去看, 先看个大概,知道啥玩意是干啥的, 然后用的时候再去看文档。 Hadoop想自己装是有点蛋疼,跟你导师申请个阿里云几台机, 慢慢折腾去吧。
哦对了, 你想折腾Hadoop,Linux的基础必须得学,至少Shell得用的溜溜的,不然hadoop你怎么装... cd / mv/ cp/ mkdir / chmod / ls / ssh / touch / vim / awk / sed / ifconfig / du / df / 这乱七八糟一大堆命令,一个一个学了吧, linux的各种概念,文件、管道、bash、配置,你得整懂吧?学吧!趁着研究生时间多,短投资大回报!
作为研究生,建议你多看一看机器学习,说到底大数据还是一个“基础设施”,但要创造价值,还得靠机器学习(数据挖掘的意思就是 机器学习 on 大数据)。
逼逼了这么多,头绪也比较乱(谁让我刚起床呢!), 照着我说的这些关键词,一个一个技术的了解吧,哪个不懂尽可以私信我