大数据基石-Hadoop
Hadoop3.x版本全系列教程
=== 楼兰 ===文章目录
- 一、理解大数据
-
- 1、大数据的特点
- 2、大数据的应用方向
- 3、大数据的工作前景
- 二、大数据课程体系介绍
-
- 1、大数据前置知识
- 2、大数据课程体系
一、理解大数据
1、大数据的特点
? 大数据这个概念已经随着互联网不断融入到了我们生活的方面面中。他即是一片新的业务场景,也代表了一系列极具挑战的技术方向。从这个课程开始,我们就将真正开始进入大数据的世界。后续将有一系列的技术课程与项目实战,带大家系统深入的学习互联网当前最火热的大数据技术。
? 学习之前,首先我们就需要理解什么是大数据。但是多大的数据算是大数据呢?其实这个并没有确切的定义标准。业界最早完整提出大数据这个概念的,是全球知名的咨询公司麦肯锡,他将大数据定义为一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力的数据范围。这个定义就比较清晰的指出了大数据行业以及大数据技术所面临的核心问题,就是数据量增大后带来的一系列问题。
? 然后如何来把握大数据的体量呢?我们不妨从计算机存储数据的单位入手。目前定义出来的数据大小的单位有: Bit、Byte、KB、MB、GB、TB、PB、EB、ZB、YB、DB、NB。 其中Bit就是计算机存储数据的最小单位,单表一位0或1。1Byte = 8 Bit, 1KB = 1024Byte,1MB = 1024KB,1GB=1024MB,1TB=1024GB…依次类推。这些单位中,对于GB,TB可能还比较熟悉,我们常用的家庭个人电脑,内存通常有32GB到64GB,硬盘最大通常就1到2TB。目前顶级的企业级应用服务器的内存能达到TB级。Java的ZGC最大管理的内存为4TB。很多大型互联网企业的数据量达到PB级别。国际数据公司IDC (International Data Corporation)于2012年12月发布的《数字宇宙》报告,指出到2020年,全球产生的数据将达到40ZB,预计到2025年,全球数据使用量将达到163ZB。而据英特尔的预测,全球数据总量在2021年将达到45到50ZB的量级。
? 接下来如何来处理这么大的数据量呢?其实大数据带来的问题还不仅仅是体量上的大。大数据技术体系所要面对的核心问题,业界通常总结成4V。
? 1、Volumn 大量
? 目前很多互联网企业的核心数据量都成指数式暴涨,像谷歌、百度、youtobe、抖音这样的企业,数据量的暴涨程度已经远远超过了传统数据库工具的处理能力。以我们最为常用的mysql数据库为对比。HBase组件设计的目的是为了存储以及检索 数百万行*数十万列 的巨量数据集。这样量级的数据集,对于MySQL数据库来说,就算是分库分表,也很难处理如此大的数据集。
? 2、Velocity 高速
? 这也是大数据区分于传统数据挖掘最为显著的特征。
? 一方面,互联网的数据产生速度在不断提高。随着互联网的应用不断成熟,参与者也越来越多,由此带来的数据增长速度也在不断提高。淘宝双十一的订单速度有目共睹,而现在像春节联欢晚会摇红包、12306春节强火车票、微博热门话题等很多的业务场景,产生数据的速度也不断刷新着人们的认知。这些大量产生的数据,依靠传统的数据技术,例如mysql,瞬间就会将服务撑爆。即便加上redis等缓存技术辅助,也会显得捉襟见肘。
? 另一方面。大数据场景下,对数据处理的速度要求也在不断提高。例如支付宝大量的扫码交易都要在毫秒级内完成风控检查。微信红包在高峰时期需要同时支持十亿级别的红包业务。这样高效的数据处理要求,也在不断催生出更优秀的技术与架构。
? 3、Variety 多样
? 大数据的数据来源变得更多,也意味着数据的形式会更复杂。以往我们用mysql就可以存储足够的业务数据,但是,随着接入的应用系统和设备不断增多,数据形式变得越来越多。
? 通常会按照数据的结构不同划分为两个大的种类:一种是结构化数据,如数据库中的业务数据,ES中的搜索数据等。数据的结构都比较稳定。另一种是非结构化数据,如视频、图片、音频。数据的结构就没有一个完整的标准了。另外,在这两种类型数据中间的灰色地带,也有一些如邮件、HTML网页、应用系统的Log日志等这类数据。
? 4、Value 低价值密度
? 尽管我们可以拥有大量的数据集,但是真正能够发挥价值的往往是其中非常小的一部分。如何提取并处理数据中的核心业务价值,也是大数据所面临的一个核心问题。例如对于HTML网页,或者Log日志这样的数据,我们关注的往往只是其中展现出来的一小部分核心内容,而大量的内容其实并不能体现出核心的业务价值。数据的低价值密度也就意味着需要有更丰富、更强大的技术来对数据进行处理。
? 另外,这些数据之间的价值往往存在很强的关联性。例如我们需要通过大数据来分析一个人的行为习惯,单独的某一项数据往往很难体现出来,这就需要关联很多系统的交易记录、邮件、聊天消息、银行记录等非常多的数据才行。打通数据孤岛,将零散数据进行串联分析,这也是对大数据技术的一大挑战。
2、大数据的应用方向
? 在当今互联网,基本上所有的大型技术创新都建立在大数据基础之上。
? 比如成名已久的推荐系统。从最早期零售行业通过对客户的消费习惯进行分析,将纸尿裤和啤酒摆放在一起,来提升商品的销量。再到AlphaGo大战李世石,彻底征服围棋游戏。再继续到现在逐渐开始成型的自动驾驶技术。以及基于万户互联的元宇宙概念。无不建立在庞大的数据基础上。大数据就像4G以及未来的5G技术一样,是一个技术创新的载体,无处不在的影响着未来技术的方方面面。
? 在国家层面也对大数据技术进行大力的扶持。党的十九大提出“推动互联网、大数据、人工智能和实体经济深度融合”。而目前5G技术不断成熟,国家也大力铺设5G设备,这也将是大数据技术爆炸的时代。5G技术带来的具体行业变动或许还难以估量,但是可以肯定的是,将会带来很多积极的行业影响。比如3G时代,我们用手机还都是在打电话、发短信。随着4G时代的到来,手机的作用已经在不断延伸。语音、视频、支付等应用场景不断衍生,影响了我们的生活方式,也诞生了淘宝、京东、美团、字节等一大堆的顶级互联网企业。与此同时,传统的短信功能成了验证码接收器,电话也成了信号不好时的备选。未来5G时代,每秒数十G的网速,会诞生哪些新生业务,又会淘汰哪些传统业务,值得我们拭目以待。
? 而在这些产业升级过程中,大数据技术都提供了最为基础的能力支撑。而大数据技术直接面对的应用方向也是非常广的,大体上来说,可以分为以下几个方向。
? 一是传统数据挖掘方向。这个方向更注重于对已有数据进行整合,并通过数据挖掘深入体现出数据的内在价值,从而为企业的业务决策提供数据支持。例如像大型数据报表、个人征信报告、业务风控系统、电商行业就近分发的物流仓储系统等等。
? 二是数据预测方向。这个方向主要是基于机器学习对未来变化进行预测。例如各种推荐系统、天气预报、舆情预警、金融机构风险评估等等。
? 三是传统业务创新方向。这个方向主要是用来替代一些重复性的工作,解放人类的生产力。例如自动驾驶汽车,各种各样的机器人等。
3、大数据的工作前景
? 随着大数据产业不断稳定,其实也给我们工作带来了不小的印象。目前阶段,大数据技术,即不像区块链、元宇宙等技术一样门槛高、变数大,又不像传统J2EE开发一样人才爆炸,内卷严重。大数据技术正是互联网行业当前的风口。这从各大招聘网站上对于大数据职位的要求可见一斑。
? 有很多同学会自然的觉得大数据职位的难度大,对学历要求很高,自己不是科班出生,从而望而生畏。其实大可不必,一个成熟的行业必然会有源源不断的机会以及不断完善的成长路线。大家完全可以根据自己的兴趣爱好以及职业规划进行合理的选择。唯一需要注意的是:早日入行你就能早日占领职业高地。
? 目前来说,针对大数据的不同应用方向。互联网行业的大数据职业方向也是非常完善的。
? 一是数据挖掘方向的职位。比如数据挖掘工程师、大数据运维工程师、数据建模工程师等。这类职位通常入行的门槛比较低,但是对于业务相对比较敏感,上限也非常高。例如
? 二是系统集成方向的职位。比如大数据工程师等。这类职位通常需要有一定的技术基础,构建企业级的大数据体系。门槛相对会高一点,但是薪水也会水涨船高。例如
? 三就是算法方向的职位了。这类职位需要定制或者优化核心算法,对理论有非常高的要求,是门槛最高的一类职位。但是同时,也是薪水非常可观的职位。例如
二、大数据课程体系介绍
1、大数据前置知识
? 大数据复杂的技术体系也就产生了非常多的技术路线,所以大数据的整个技术体系是非常复杂的。整个大数据是一个重思想而不重实现的技术体系。
? 一方面,大数据领域并不注重使用哪一种高级语言。在大数据领域,各种高级语言都可以被用来解决实际问题。对于科研派,通常会使用轻量级的R,Python多一点。对于技术派,通常会使用GO、Scala、C这一类比较具有针对性的高级语言多一点。而对于工程派,则还是会使用Java更多。所以这是一个百家争鸣的技术领域。
? 另一方面,很多大数据的具体问题,都会有具体的工具提供业务实现。比如在Hadoop的官网可以看到大数据有非常多的周边技术体系。并且还不断有更多更优秀的项目涌现出来。
除了极少数的组件开发人员需要对技术有比较深的了解,绝大部分的大数据从业者并不需要有非常深的技术功底。在大部分的业务场景中,只需要将这些功能组件正确的组合在一起,就能形成一个比较好的解决方案。而在这其中,如何深入理解每个组件的功能特性,优缺点,如何更全面深入的理解业务细节问题,就成了体现大数据从业人员技术差距的重中之重。
? 学习大数据,有一定的技术门槛,因此也需要有一定的技术作为支撑。最为平滑的学习方式,当然是从小数据入手。先理解如何处理少量的或者常规的业务数据,再来理解如何处理海量的业务数据,这样学习的曲线就不会过于陡峭。因此,对于有J2EE开发经验的同学来说,学习起来会比较容易一点。很多J2EE阶段的设计思想以及技术框架都可以直接应用到大数据领域当中。但是,开发经验不是很足的同学,也不用担心,我们有一整套完整的课程体系,一步步带大家打牢基础,深入学习。
2、大数据课程体系
? 大数据组件的多用性意味着,要带大家真正了解大数据领域,必须是一个大的系列课程。并且,虽然大数据是一个不重视语言的技术领域,但是肯定还是需要有一种比较熟悉的语言才能将这些大数据组件贯穿起来。
? 为此,我们整个大数据课程体系会采用Java语言作为主要的学习语言,其中还会穿插部分scala、python语言作为辅助。然后,整个大数据的课程体系会针对不同的问题域设计成几个大的专题,在每个专题中逐渐补充不同的热门组件。并且在最后,也形成了三大具有代表性的实战项目作为最终的输出以及沉淀。