三个月大数据研发学习计划

现为区块链技术研究员,曾为互金公司大数据研发工程师。

本场 Chat 是我个人用 3 个月业余时间从一名 Java 后端工程师转型为大数据研发的经历分享。我将在文中为普通程序猿制定一个详细的学习计划,目的在于用 3 个月的时间蜕变成为一名大数据研发人员,并胜任一份大数据研发的工作。主要内容包括: 大数据行业概述 大数据工程师技能要点 3 个月详细的学习计划 学习资料推荐与分享 大数据项目案例分析 后续持续学习资源推荐 持续答疑 实录提要: 若入行大数据,那入行的技术水平大概是怎样的? 如何做到保证三个月的时间里,学习进度跟上计划,不被琐事打扰的? 三个月的学习中,遇到的最大困难是什么? 在学习完上述知识点之后如何找到一份大数据的工作? 在学习过程中,遇到了某些束手无策的难题时,有哪些途径解决? 在工作实践中,对于 Java 虚拟机的应用多吗? 目前大数据工程师、大数据分析师,在实际工作中算法的应用是不是占比很大? 除了大数据方面的技术,J2EE 方面或者 Java 方面还需要什么技术要求吗? 关于 JVM,需要了解到什么程度,能举一个具体点的例子吗? 当前内容版权归码字科技所有并授权显示,盗版必究。

文章正文

申明:

本文旨在为普通程序员(Java程序员最佳)提供一个入门级别的大数据技术学习路径,不适用于大数据工程师的进阶学习,也不适用于零编程基础的同学。


前言:

  • 一、背景介绍
  • 二、大数据介绍

正文:

  • 一、大数据相关的工作介绍
  • 二、大数据工程师的技能要求
  • 三、大数据学习规划
  • 四、持续学习资源推荐(书籍,博客,网站)
  • 五、项目案例分析(批处理+实时处理)

前言

一、背景介绍

本人目前是一名大数据工程师,项目数据50T,日均数据增长20G左右,个人是从Java后端开发,经过3个月的业余自学成功转型大数据工程师。

二、大数据介绍

大数据本质也是数据,但是又有了新的特征,包括数据来源广数据格式多样化(结构化数据、非结构化数据、Excel文件、文本文件等)、数据量大(最少也是TB级别的、甚至可能是PB级别)、数据增长速度快等。

针对以上主要的4个特征我们需要考虑以下问题:

  1. 数据来源广,该如何采集汇总?,对应出现了Sqoop,Cammel,Datax等工具。

  2. 数据采集之后,该如何存储?,对应出现了GFS,HDFS,TFS等分布式文件存储系统。

  3. 由于数据增长速度快,数据存储就必须可以水平扩展。

  4. 数据存储之后,该如何通过运算快速转化成一致的格式,该如何快速运算出自己想要的结果?

    对应的MapReduce这样的分布式运算框架解决了这个问题;但是写MapReduce需要Java代码量很大,所以出现了Hive,Pig等将SQL转化成MapReduce的解析引擎;

    普通的MapReduce处理数据只能一批一批地处理,时间延迟太长,为了实现每输入一条数据就能得到结果,于是出现了Storm/JStorm这样的低时延的流式计算框架;

    但是如果同时需要批处理流处理,按照如上就得搭两个集群,Hadoop集群(包括HDFS+MapReduce+Yarn)和Storm集群,不易于管理,所以出现了Spark这样的一站式的计算框架,既可以进行批处理,又可以进行流处理(实质上是微批处理)。

  5. 而后Lambda架构,Kappa架构的出现,又提供了一种业务处理的通用架构。

  6. 为了提高工作效率,加快运速度,出现了一些辅助工具:

  • Ozzie,azkaban:定时任务调度的工具。
  • Hue,Zepplin:图形化任务执行管理,结果查看工具。
  • Scala语言:编写Spark程序的最佳语言,当然也可以选择用Python。
  • Python语言:编写一些脚本时会用到。
  • Allluxio,Kylin等:通过对存储的数据进行预处理,加快运算速度的工具。

以上大致就把整个大数据生态里面用到的工具所解决的问题列举了一遍,知道了他们为什么而出现或者说出现是为了解决什么问题,进行学习的时候就有的放矢了。

正文

一、大数据相关工作介绍

大数据方向的工作目前主要分为三个主要方向:

  1. 大数据工程师
  2. 数据分析师
  3. 大数据科学家
  4. 其他(数据挖掘等)

二、大数据工程师的技能要求

附上大数据工程师技能图:

enter image description here

必须掌握的技能11条

  1. Java高级(虚拟机、并发)
  2. Linux 基本操作
  3. Hadoop(HDFS+MapReduce+Yarn )
  4. HBase(JavaAPI操作+Phoenix )
  5. Hive(Hql基本操作和原理理解)
  6. Kafka
  7. Storm/JStorm
  8. Scala
  9. Python
  10. Spark (Core+sparksql+Spark streaming )
  11. 辅助小工具(Sqoop/Flume/Oozie/Hue等)

高阶技能6条

  1. 机器学习算法以及mahout库加MLlib
  2. R语言
  3. Lambda 架构
  4. Kappa架构
  5. Kylin
  6. Alluxio

三、学习路径

假设每天可以抽出3个小时的有效学习时间,加上周末每天保证10个小时的有效学习时间;

3个月会有(213+4210)3=423小时的学习时间。

第一阶段(基础阶段)

1)Linux学习(跟鸟哥学就ok了)-----20小时

  1. Linux操作系统介绍与安装。
  2. Linux常用命令。
  3. Linux常用软件安装。
  4. Linux网络。
  5. 防火墙。
  6. Shell编程等。

官网:https://www.centos.org/download/
中文社区:http://www.linuxidc.com/Linux/2017-09/146919.htm

2)Java 高级学习(《深入理解Java虚拟机》、《Java高并发实战》)---30小时

  1. 掌握多线程。
  2. 掌握并发包下的队列。
  3. 了解JMS。
  4. 掌握JVM技术。
  5. 掌握反射和动态代理。

官网:https://www.java.com/zh_CN/
中文社区:http://www.java-cn.com/index.html

3)Zookeeper学习(可以参照这篇博客进行学习:http://www.cnblogs.com/wuxl360/p/5817471.html)

  1. Zookeeper分布式协调服务介绍。
  2. Zookeeper集群的安装部署。
  3. Zookeeper数据结构、命令。
  4. Zookeeper的原理以及选举机制。

官网:http://zookeeper.apache.org/
中文社区:http://www.aboutyun.com/forum-149-1.html

第二阶段(攻坚阶段)

4)Hadoop (《Hadoop 权威指南》)---80小时

  1. HDFS
  • HDFS的概念和特性。
  • HDFS的shell操作。
  • HDFS的工作机制。
  • HDFS的Java应用开发。
  1. MapReduce

    • 运行WordCount示例程序。
    • 了解MapReduce内部的运行机制。
      • MapReduce程序运行流程解析。
      • MapTask并发数的决定机制。
      • MapReduce中的combiner组件应用。
      • MapReduce中的序列化框架及应用。
      • MapReduce中的排序。
      • MapReduce中的自定义分区实现。
      • MapReduce的shuffle机制。
      • MapReduce利用数据压缩进行优化。
      • MapReduce程序与YARN之间的关系。
      • MapReduce参数优化。
  2. MapReduce的Java应用开发

官网:http://hadoop.apache.org/
中文文档:http://hadoop.apache.org/docs/r1.0.4/cn/
中文社区:http://www.aboutyun.com/forum-143-1.html

5)Hive(《Hive开发指南》)--20小时

  1. Hive 基本概念

    • Hive 应用场景。
    • Hive 与hadoop的关系。
    • Hive 与传统数据库对比。
    • Hive 的数据存储机制。
  2. Hive 基本操作

    • Hive 中的DDL操作。
    • 在Hive 中如何实现高效的JOIN查询。
    • Hive 的内置函数应用。
    • Hive shell的高级使用方式。
    • Hive 常用参数配置。
    • Hive 自定义函数和Transform的使用技巧。
    • Hive UDF/UDAF开发实例。
  3. Hive 执行过程分析及优化策略

官网:https://hive.apache.org/
中文入门文档:http://www.aboutyun.com/thread-11873-1-1.html
中文社区:http://www.aboutyun.com/thread-7598-1-1.html

6)HBase(《HBase权威指南》)---20小时

  1. hbase简介。
  2. habse安装。
  3. hbase数据模型。
  4. hbase命令。
  5. hbase开发。
  6. hbase原理。

官网:http://hbase.apache.org/
中文文档:http://abloz.com/hbase/book.html
中文社区:http://www.aboutyun.com/forum-142-1.html

7)Scala(《快学Scala》)--20小时

  1. Scala概述。
  2. Scala编译器安装。
  3. Scala基础。
  4. 数组、映射、元组、集合。
  5. 类、对象、继承、特质。
  6. 模式匹配和样例类。
  7. 了解Scala Actor并发编程。
  8. 理解Akka。
  9. 理解Scala高阶函数。
  10. 理解Scala隐式转换。

官网:http://www.scala-la

2017年10月18日,周三晚上8点30分。 项目处理的数据一般在50T以上,日均数据增长在20G以上。现为互联网金融公司从事大数据研发的孫啟誠带来了主题为《三个月大数据研发学习计划》的交流。以下是主持人飘静整理的问答实录,记录了作者和读者问答的精彩时刻!


内容提要:

  • 想入行大数据,那入行的技术水平大概是怎样的?
  • 转行大数据,公司招聘现在都需要真正的相关工作中的项目经验,这块没有如何弥补?
  • 你所列举的知识点太多,有没有比较重点的,工作中用到比较多,学习性价比较高的有哪些(毕竟学习是为了找到一份大数据的工作)?
  • 如何做到保证三个月的时间里,学习进度跟上计划,不被琐事打扰的?
  • 三个月的学习中,遇到的最大困难是什么?
  • 在学习完上述知识点之后如何找到一份大数据的工作(具体就是面试有没有什么好的经验)?
  • 前几年大数据用到的技术和现在的相比,有哪些是不再重要的,怎样避免在学习的过程中走弯路?
  • 在三个月的学习过程中,当你遇到了某些束手无策的难题时,一般你会通过哪些途径来解决问题?
  • 在三个月的学习过程中,你有做哪些实际案例去串联技术点。最后有做出哪些有意思的东西?
  • 请问你在工作实践中,对于java 虚拟机的应用多吗?
  • 请问目前大数据工程师、大数据分析师,在实际工作中算法的应用是不是占比很大?
  • 之前有个朋友说,面试时候问了很多linux的知识,然后看了你在文章里面建议《鸟哥私房菜》,请问这本书你是完全看完了吗?还是说把常用命令过一下,然后面试官问的深度如何?
  • 除了大数据方面的技术,J2ee方面或者Java方面还需要什么技术要求吗?
  • 请问可否分享一下你自己做的demo? 或者demo达到了什么程度,才可以基本通过面试 ?
  • 关于JVm,需要了解到什么程度,能具一个具体点的例子吗?

问:想入行大数据,那入行的技术水平大概是怎样的?

答:大数据也分很多方向,而且同一个公司对同一个职位的要求也不一样,如果仅仅是入行(找到一份初级大数据工程师的工作或者实习),我所列举的知识点,都了解(每一个知识点知道是用来解决什么问题,懂基本原理,会基本操作),然后对于Hive,Hadoop(仅仅指HDFS、YARN、MapReduce),Spark达到掌握的程度就ok了。<

隐藏内容 支付可见
购买文章 ¥16.99
订阅频道首月仅需 12 元/月,预计可省 1288 元
¥16.99
¥16.99购买
订阅频道免费读
× 订阅 Java 精选频道
首次订阅 ¥ 元/月 15元/月
订阅即可免费阅读所有精选内容