大数据知识派:Linux新手如何成为大数据工程师?
Linux新手如何成为大数据工程师?
一、首先大数据是什么?
大数据,big data,《大数据》一书对大数据这么定义,大数据是指不能用随机分析法(抽样调查)这样捷径,而采用所有数据进行分析处理。
这句话至少传递两种信息:
1、大数据是海量的数据
2、大数据处理无捷径,对分析处理技术提出了更高的要求
大数据学习群:199427210
二、大数据的处理流程
下图是数据处理流程:
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)决策树 随机森林算法
从零基础到项目实战,实时交易监控系统,推荐系统理论,数据库搭建等等
第十阶段: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
结语:以上就是大数据从入门到精通的学习路线了,并且有许多项目实战供大家实践。祝大家工作顺利,步步高升!