美文网首页程序员
Java开发者想尝试转行大数据,三大方面详细的讲如何学大数据

Java开发者想尝试转行大数据,三大方面详细的讲如何学大数据

作者: 6816ee4e9ca0 | 来源:发表于2019-07-09 10:33 被阅读3次

    这几年来大数据非常的热门,到处都有大数据分析的演讲。 演讲内容通常是宣传各种大数据分析成功的案例。 但实际上大数据该怎么做呢? 大部份的讨论似乎都仅止于怎么搜集大量的数据, 然后用个工具(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

    结语:以上就是大数据从入门到精通的学习路线了,并且有许多项目实战供大家实践。祝大家工作顺利,步步高升!

    相关文章

      网友评论

        本文标题:Java开发者想尝试转行大数据,三大方面详细的讲如何学大数据

        本文链接:https://www.haomeiwen.com/subject/djitkctx.html