做为一名大数据新手,如何成为大数据工程师?附上学习路线
这几年来大数据非常的热门,到处都有大数据分析的演讲。 演讲内容通常是宣传各种大数据分析成功的案例。 但实际上大数据该怎么做呢? 大部份的讨论似乎都仅止于怎么搜集大量的数据, 然后用个工具(hadoop/spark)后就会马上变出商机和钱来。
大数据技术最重要的核心在于如何设计可以高性能处理大量数据的程式 (highly scalable programs.)
目前大数据相关工作可以粗分几类。有资料系统串接者, 设计大数据演算法实做的人,以及管理大型丛集 (cluster) 的工程师。 很多人对大数据工程师的理解还停留在资料系统串接者的程度, 以为只要将资料汇入某个神奇系统,就能将自己想要的结果生出来。 但实际上数据量变得很大时,我们往往需要自己客制化自己的资料系统,并且撰写特殊的演算法处理之。 以台湾和美国业界而言,第二种工程师是最稀少也需求量最高的。 这本书的目的就是由浅入深的介绍如何成为此类型的工程师。
不知道在学习大数据的读者们有没有想过,超级电脑的发明是1960年代的事, 为什么直到近年大数据才红起来?任何科技及技术都有其历史脉络, 学习一点相关历史会让自己在追逐新科技时更清楚自己要解决的问题的定位在哪边。
在这里还是要推荐下我自己建的大数据学习交流群:199427210,群里都是学大数据开发的,如果你正在学习大数据 ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有大数据软件开发相关的),包括我自己整理的一份2018最新的大数据进阶资料和高级开发教程,欢迎进阶中和进想深入大数据的小伙伴加入。
一、大数据是什么?
大数据,big data,《大数据》一书对大数据这么定义,大数据是指不能用随机分析法(抽样调查)这样捷径,而采用所有数据进行分析处理。
这句话至少传递两种信息:
1、大数据是海量的数据
2、大数据处理无捷径,对分析处理技术提出了更高的要求
二、大数据的处理流程
下图是数据处理流程:
1、底层是数以千亿计的数据源,数据源可以是SCM(供应链数据),4PL(物流数据),CRM(客户数据),网站日志以及其他的数据
2、第二层是数据加工层,数据工程师对数据源按照标准的统计口径和指标对数据进行抽取、清洗、转化、装载(整个过程简称ELT)
3、第三层是数据仓库,加工后的数据流入数据仓库,进行整合和存储,形成一个又一个数据集市。
数据集市,指分类存储数据的集合,即按照不同部门或用户的需求存储数据。
4、第四层是BI(商业智能),按照业务需求,对数据进行分析建模、挖掘、运算,输出统一的数据分析平台
5、第五层是数据访问层,对不同的需求方开放不同的数据角色和权限,以数据驱动业务。
大数据的量级,决定了大数据处理及应用的难度,需要利用特定的技术工具去处理大数据。
三、大数据处理技术
以最常使用的Hadoop为例:
Hadoop是Apache公司开发的一个开源框架,它允许在整个集群使用简单编程模型计算机的分布式环境存储并处理大数据。
集群是指,2台或2台以上服务器构建节点,提供数据服务。单台服务器,无法处理海量的大数据。服务器越多,集群的威力越大。
Hadoop类似于一个数据生态圈,不同的模块各司其职。下图是Hadoop官网的生态图。
Hadoop的LOGO是一只灵活的大象。关于LOGO的来源,网上众说纷纭,有人说,是因为大象象征庞然大物,指代大数据,Hadoop让大数据变得灵活。而官方盖章,LOGO来源于创始人Doug Cutting的孩子曾为一个大象玩具取名hadoop。
从上图可以看出,Hadoop的核心是HDFS,YARN和Map Reduce,下面和大家讲一讲,几个主要模块的含义和功能。
1、HDFS(分布式文件存储系统)
数据以块的形式,分布在集群的不同节点。在使用HDFS时,无需关心数据是存储在哪个节点上、或者是从哪个节点从获取的,只需像使用本地文件系统一样管理和存储文件系统中的数据。
2、Map Reduce(分布式计算框架)
分布式计算框架将复杂的数据集分发给不同的节点去操作,每个节点会周期性的返回它所完成的工作和最新的状态。大家可以结合下图理解Map Reduce原理:
计算机要对输入的单词进行计数:
如果采用集中式计算方式,我们要先算出一个单词如Deer出现了多少次,再算另一个单词出现了多少次,直到所有单词统计完毕,将浪费大量的时间和资源。
如果采用分布式计算方式,计算将变得高效。我们将数据随机分配给三个节点,由节点去分别统计各自处理的数据中单词出现的次数,再将相同的单词进行聚合,输出最后的结果。
3、YARN(资源调度器)
相当于电脑的任务管理器,对资源进行管理和调度。
4、HBASE(分布式数据库)
HBase是非关系型数据库(Nosql),在某些业务场景下,数据存储查询在Hbase的使用效率更高。
关于关系型数据库和菲关系型数据库的区别,会在以后的文章进行详述。
5、HIVE(数据仓库)
HIVE是基于Hadoop的一个数据仓库工具,可以用SQL的语言转化成Map Reduce任务对hdfs数据的查询分析。HIVE的好处在于,使用者无需写Map Reduce任务,只需要掌握SQL即可完成查询分析工作。
6、 Spark(大数据计算引擎)
Spark是专为大规模数据处理而设计的快速通用的计算引擎
7、Mahout(机器学习挖掘库)
Mahout是一个可扩展的机器学习和数据挖掘库
8、Sqoop
Sqoop可以将关系型数据库导入Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中
除上述模块外,Hadoop还有Zookeeper、Chukwa等多种模块,因为是开源的,所以未来还有出现更多更高效的模块,大家感兴趣可以上网了解。
通过Hadoop强大的生态圈,完成大数据处理流程。
其实 Hadoop 其中一个很有价值的应用是做 BI (Business Intelligence)。 但它的设计架构一开始并不是针对BI起家的,而是更贴近于搜寻引擎建立索引这样的工作。 在 BI 中最关键的事是处理时间序列的资料,资料清理,以及资料整合 (data join)。 以笔者个公司来说,就必须客制非常多的架构来让它变得更适合 BI。 尽管 pig/hive 等上层工具一部分目的也是使其更容易操作 BI 。
大数据工程师的核心技能指标
看完前一章大数据的历史,读者有没有对产业的发展脉络稍微有概念一点了呢? 笔者目前在美国工作,就笔者观察其实现在台湾美国都还有非常多大数据工程师的就业机会。 即使大数据这名词稍微退烧(或许是太多招摇撞骗的人吧), 但随著软体业近年来负载量愈来愈大,对后端处理资料的需求其实也是变得愈来愈高。 无奈资料工程这技能学校不会教,因为没有学术价值。 在业界内除非进入资料团队,不然也不会接触到。 最糟的是,各家公司内部的资料团队素质也良莠不齐,要学到好的资料工程技术真的只能靠运气。 笔者的公司算得上是资料工程做得还不错的,以下为笔者认定的大数据核心技能
分析及设计高延展性 (highly scalable) 程式
能写出常见的 data operation 如 join, de-duplicate, group-by
能处理 data skew (资料过度集中在少数的 key)的问题
知道如何选择 map output key, 以及 secondary key sort 的排序设计
能验证资料正确性
设计 regression test system. 每次资料系统更新都能检验前后处理的差别
可以撰写工具检验大量的数据正确性
从一开始规划系统就让它具有高度的可验证性,以及严格的验证它
将资料工程自动化的能力
可以处理资料相依性问题
自动处理错误的策略
要能 revert & reprocess
使用 control table 去控制及追踪不同工做的 state
系统维护
透过 log & stacktrace 来 debug
知道基本的系统平台管理。JobTracker, HDFS 等指令要熟悉
了解各种 Map Reduce 参数,可以调校效能参数
实事求是的精神
做资料工程或分析,最忌讳的就是骗自己。永远不要用猜的,要用资料来验证自己的想法是否正确。
各种资料系统设计都有隐藏的代价,不要对这些代价视而不见。
挖掘问题先于寻找解决方案。只有完全了解自己的需求后,才能在多种方案中选择最适合自己的一个。
以上的技能集中在如何成为大数据工程师。资料科学的训练不记入其中,因为光是达到以上的技能就已经很花时间啦。 当这些技能都练得相当不错时,再跨足资料科学,其实也不太难。 不过通常是分工合作更简单一些,因为学资料科学的人远比资料工程多很多。
大数据工程技能树该如何点?
初级
学习目标:能独立开发 highly scalable 的程式及演算法。更高阶的资料系统设计不包含在内。
学习架构
建立开发环境
写最简易的 SQL operation
写中阶的 SQL operation
写 SQL 难以办到的功能
浅论资料工程架构 (dedup, join, aggregation)
开始有能力分析资料演算法的复杂度,以及了解 data skew 的处理策略
能透过 log & stack trace 找出自己程式哪里写错
高级
学习目标:学会许多更深入的技能,并且能规划高阶的资料系统设计。
serialization & data collection strategy
End to end trace data design
control table & automation design
lower level API (inputformat, outputformat, etc.)
advanced java tricks
analyze performance factor
MR network cost calculation, advanced MapReduce
初级的学习大概五六个月内可以精通。笔者当年就是花差不多的时间无师自通的。
大数据基础路线:
第一阶段:Linux理论
(1)Linux基础;(2)Linux-shell编程;(3)高并发:lvs负载均衡;(4)高可用&反向代理
第二阶段:Hadoop理论
(1)hadoop-hdfs理论;(2)hadoop-hdfs集群搭建;(3)hadoop-hdfs 2.x & api ;(4)hadoop-MR理论 ;
(5)hadoop-MR开发分析;(6)hadoop-MR源码分析 ;(7)hadoop-MR开发案例
第三阶段:Hive理论
(1)Hive介绍以及安装 ;(2)Hive实战
第四阶段:HBase
(1)HBase介绍以及安装 ;(2)HBase调优
第五阶段: redis理论
(1)redis类型 ; (2) redis高级
第六阶段:Zookeeper理论
(1)Zookeeper介绍 ;(2) Zookeeper使用
第七阶段: Scala语法
(1)Scala语法介绍;(2)scala语法实战
第八阶段: Spark理论
(1)Spark介绍;(2)Spark代码开发流程 ; (3)Spark集群搭建;(4) Spark资源调度原理;
(5)Spark任务调度;(6)Spark案例;(7)Spark中两种最重要shuffle;
(8)Spark高可用集群的搭建;(9)SparkSQL介绍;(10) SparkSQL实战 ;
(11)SparkStreaming介绍;(12)SparkStreaming实战
第九阶段:机器学习介绍
(1) 线性回归详解; (2)逻辑回归分类算法; (3)Kmeans聚类算法; (4)KNN分类算法; (5)决策树 随机森林算法
从零基础到项目实战,实时交易监控系统,推荐系统理论,数据库搭建等等。需要以下大数据学习资料的小伙伴可以加群 :199427210免费获取,和行业大牛一起学习大数据。
第十阶段:Elasticsearch理论
(1)Elasticsearch搜索原理; (2) Elasticsearch实战
第十一阶段:Storm理论
(1)Storm介绍以及代码实战;(2)Storm伪分布式搭建以及任务部署; (3)Storm架构详解以及DRCP原理;
(4) 虚拟化理论kvm虚拟化 ; (5) docker
1,_推荐系统理论与实战项目 Part2
2,推荐系统理论与实战 项目Part1
3.实时交易监控系统项目(下)
4,实时交易监控系统项目(上)
5,用户行为分析系统项目1
6,用户行为分析系统项目2
7,大数据批处理之HIVE详解
8,ES公开课 part1
9,spark_streaming_
10,数据仓库搭建详解
11,大数据任务调度
12,流数据集成神器Kafka
13,Spark 公开课
14,海量日志收集利器:Flume
15,Impala简介
16,Hive简介
17,MapReduce简介
18海量数据高速存取数据库 HBase
19,浅谈Hadoop管理器yarn原理
20,,分布式全文搜索引擎ElasticSearch Part2
结语:以上就是大数据从入门到精通的学习路线了,并且有许多项目实战供大家实践。祝大家工作顺利,步步高升!
做为一名大数据新手,如何成为大数据工程师?附上学习路线相关推荐
- 我做为一名软件测试工程师,职业发展方向是什么?
我做为一名测试工程师,职业发展方向是什么? 今天是儿童节,首先祝大朋友们节日快乐! 不知觉间,在软件测试行业野蛮生长了七年之久. 同样是半杯水,对于口渴的人来说,有人会说,哇.还有半杯水,也有人会说, ...
- 我做为一名测试工程师,职业发展方向是什么?
我做为一名测试工程师,职业发展方向是什么? 今天是儿童节,首先祝大朋友们节日快乐! 不知觉间,在软件测试行业野蛮生长了七年之久. 同样是半杯水,对于口渴的人来说,有人会说,哇.还有半杯水,也有人会说, ...
- 做为一名大数据新手,应该通过这篇文章了解大数据
一.大数据是什么? 大数据,big data,<大数据>一书对大数据这么定义,大数据是指不能用随机分析法(抽样调查)这样捷径,而采用所有数据进行分析处理. 这句话至少传递两种信息: 1.大 ...
- 大数据概述、前世今生、处理流程、学习路线、开发工具详解
一. 什么是大数据? 大数据是无法使用传统计算技术处理的大型数据集的集合.它不是单一的技术或工具,而是已成为一个完整的主题,涉及各种工具,技术和框架. 全球数据的90%是在最近十年中产生的. 1.1 ...
- 大数据相关职位的知识储备与系统学习路线规划以及所需时间
数据分析师 想要成为一名数据分析师,需要具备以下几个方面的知识储备: 1.数据库知识:掌握 SQL 语言,了解数据表的设计.数据的存储与查询等基本概念 2.统计学知识:包括概率论.统计学.假设检验.方 ...
- 资深程序员骆昊:Python从新手到大师,100天完整学习路线
Python - 100天从新手到大师 摘要:最近后台有些小伙伴在问我Python入门的问题,我推荐这个学习路线资料,可能你们有些已经在使用它,的确它是我见过最全的.最富有逻辑体系的Python技术栈 ...
- 如何成为一名网络安全工程师(学习路线)
前言 本路线图希望帮助想成为企业IT架构师网络安全方向的同学. 本路线图针对以下三类人群有用: 1.计算机专业大学生(需要对接大学和企业的需求): 2.发学历证书的XX电脑培训学校学生(所学知识不深, ...
- 新手小白怎么学UI设计 推荐学习路线是什么
新手小白怎么学UI设计?推荐学习路线是什么?UI设计是很多年轻人活着想转行学习的人的新职业目标,越来越多的人看到UI设计良好的就业发展前景,纷纷投入到UI设计的大军中来,想学习UI设计,很多小白并不知 ...
- 做为一名java高级程序员,这些IT岗位你都了解么?
程序员 程序员,英文名coder/programmer,大家常自嘲叫码农的阶段.这个角色职责是把需求或产品实现为用户可用的软件产品. 此职位为执行级别.另外因为经验较少,一般需要求助别人,或与别人一起 ...
最新文章
- 【每日一算法】杨辉三角到底是什么?
- 将 CentOS 8 操作系统迁移到 Oracle Linux
- 《Python从小白到大牛》第6章 数据类型
- RocketMQ-初体验RocketMQ(09)-广播消息、延时消息、批量消息
- deepin启动盘制作工具_balenaEtcher for mac(启动盘制作工具) v1.5.70已更新
- 每天一道LeetCode-----以字符串的形式输出二叉树所有从根节点到叶子节点的路径
- 计算机原码、反码、补码详解
- 华为在爱尔兰增设150个LTE研发职位
- 漫谈 Linux,Windows 和 Mac
- C#整理1——进制转换
- 利用jsoup 如何从网页中下载图片
- 谁说不能用 Python开发企业应用?
- 国家漏洞库CNNVD:关于Dnsmasq多个缓冲区错误漏洞的通报
- C++ 实现数字黑洞
- 编译裁剪busybox
- Java小游戏练习---超级玛丽代码实现
- python_you-get下载B站视频详解
- Oracle 11g R2+RAC+ASM+redhat安装详解1
- 【C语言学习】输入输出
- 学以致用、知行合一:实践论与工具论的统一
热门文章
- C语言#if、##ifdef、#ifndef的用法详解,C语言条件编译详解
- iphone型号表_苹果所有产品型号大全
- VMware虚拟机中安装苹果系统MacOS 10.12 Sierra
- Laravel -- 实战篇 自制二维码 Simple QrCode
- 基于SpringBoot+Vue的前后端分离开发汽车之家资讯论坛系统设计与实现
- 微信公众号与微信小程序如何相辅相成的?
- HTML中设置行高的属性是,line-height属性(行高标签用法)
- 【SpringBoot深入浅出系列】SpringBoot之集成MyBatis-Plus
- Oracle SQL group by-报错:不是单组分组函数
- Pycharm 2018安装步骤