写在前面

本套笔记使用环境CentOS7.7,Hadoop的版本为CDH5.7,开发工具使用IDEA2018.03。

机器学习、深度学习和人工智能都离不开大数据。大数据的生态圈有两个,一个是Hadoop生态圈,另一个是Spark生态圈。在本套快速入门笔记中,关于Hadoop会学习其三大核心组件的原理与使用,具体包括分布式文件系统HDFS、分布式资源调度YARN和分布式计算框架MapReduce。之后会在此基础上基于某网站的日志来进行Hadoop项目实战学习,主要分析该网站用户使用浏览器访问该网站的情况,可能A用户使用谷歌浏览器,B用户使用IE浏览器,C用户使用Firefox浏览器进行访问,我们需要做的就是基于用户访问日志来分析和统计不同浏览器的使用数量及占比情况。除了Hadoop项目实战之外,还会学习如何搭建Hadoop分布式集群,Hadoop集成Spring框架。

当然除了学习Hadoop,本套笔记中也会简单学习一些关于Spark、Flink和Beam的知识。尽管本套笔记主要学习的是Hadoop2.x相关内容,但是也会对Hadoop3新特性进行讲解。

大数据概述

在大数据领域有两个非常经典的案例,一个是足球点球大战,对手会对主罚球员的习惯用腿进行分析,进而给出较为靠谱的捕获角度。再一个是电商购物中非常有意思的研究话题—假货卖给了谁?当用户在电商网站购买大牌化妆品的时候,用户从提交订单到发货之前这段时间内,系统会查询分析用户在全平台的购物数据,这些数据是可以获取的到。这里面通常包括购买的平均价格、购买日期、常购品牌、退货率等信息,通过这些信息系统会给用户建立一些标签,然后根据标签来给不同的人标注为发的是真货还是假货,或者是高返品。如果用户在同类消费产品中,用户倾向于购买100或200的产品,那么系统就会判定用户没有用过一些大牌的产品,会在后台给此用户标记为低风险。有了这个标签之后,那么平台发的货就有可能是高返品。如果用户的购买记录中多次出现某个大品牌,且价格都比较昂贵,那么此时用户收到真品的可能性就非常高。还有一个就是用在电商系统中的推荐系统,当用户本次购买了电脑,那么系统就会给用户推荐手机或者鼠标、键盘等电子产品。

大数据定义

借用《互联网周刊》中对大数据的定义:“大数据”的概念远不止大量的数据(一般是TB级别)和处理大量数据的技术,或者所谓“4V”之类的简单概念,而是涵盖了人们在大规模数据的基础上可以做的事情,这些事情在小规模数据的基础上是无法实现的。

也就是说,大数据是一种以不同的方式对海量数据进行分析,进而获取有巨大价值的产品和服务,或者深刻的洞见。

大数据特征

大数据一般都有4V特征,其实就是Volume(数量较大)、Variety(类型复杂)、Velocity(处理速度快)和Value(价值密度低)。


(1)Volume(数量较大)。随着网络技术的发展和普及,每时每刻都会产生大量的数据。如在电商购物平台购物,直播平台看直播,在线阅读新闻等,都会产生很多日志,因此汇聚在一起每分每秒产生的数据量都是非常大的。
(2)Variety(类型复杂)。大数据中最常见的类型是日志,但是除此之外还有音频、视频和图片等。由于不同类型的数据没有明显的模式,因此会呈现出多样性这一特点,这就对数据的处理要求更为严苛。
(3)Velocity(处理速度快)。传统离线处理的失效性不高,即时延很高。随着时代的发展,对数据的时效性要求越来越高,需要实时对产生的数据进行分析处理,不能采用原来的批处理方式。
(4)Value(价值密度低)。目前每时每刻产生的数据量都很大,如何从大量的日志中提取出我们所需的、有价值的信息才是最为重要的。但是你知道的,数据量越大,那么其中我们不需要的干扰数据也会越多,因此如何快速的从所产生的数据中提炼出有价值的信息,是目前亟待解决的问题。

大数据需要解决的问题

从图中可以知道,大数据就是从海量多样的数据类型的数据规模中,快速的进行数据流转和挖掘,最终发现数据的价值。

大数据涉及到的技术

(1)数据采集。如果用户的日志都是分散在不同机器的不同位置上,那么如果想进行大数据分析处理,第一步要做的就是数据采集。
(2)数据存储。大数据一般都是海量的数据,因此对数据的存储要求很高。
(3)数据处理、分析、挖掘。采用不同的技术来处理不同类型的数据,这里就涉及到处理框架的选型问题。
(4)可视化。数据挖掘完之后,最好的方式就是通过可视化界面将其展示出来,否则数据都是存储在后台中,无法直接向人展示数据挖掘的效果。

以上所说的4个技术领域,hadoop生态圈都提供了不少于一种的解决方式,因此将这些技术综合起来使用,其实就实现了大数据分析处理平台这一目的。

大数据在技术架构上带来的挑战

(1)对现有数据库管理技术的挑战。大数据所需的数据,如果存储在当前传统的数据库中,可能可以实现存储,但是性能却无法满足大数据的处理能力。也就是说结构化的存储或者查询是无法满足大数据的需求;
(2)经典数据库技术并没有考虑数据的多类别。经典的数据库中存储的一般都是结构化的数据,且存的都是字符串、文本、数字等常规格式,但是对于大数据所处理的一些复杂类型是无法存储的;
(3)实时性的技术挑战。大数据所产生的价值是随着时间的流逝而大大降低,因此当数据产生后,开发者应当尽可能快的对数据进行处理。比较典型的就是电商网站中的推荐系统,早期的推荐系统都是基于批处理来进行的,可能需要一天或者半天来对数据进行计算,然后再进行推荐,这样其实具有非常大的延迟。尽管对于订单的转换来说,它是有一定效果的,但是其效果不是非常好。如果能够做到实时推荐,那么对于订单转化率的提升有非常大的意义。

传统的离线批处理对处理时间的要求并不高,而实时处理的要求是区别大数据应用和传统数据库技术或者离线技术的关键差别之一。

(4)网络架构、数据中心和运维的挑战。由于大数据每天存储的数据都是指数级增长,那么这些数据如何高效的进行收集、存储和计算呢?这都是目前数据中心面临的一个非常棘手的问题,且随着数据量的快速增长,所需要的机器也会越来越多,那么自然会给运维工作带来较大压力。

大数据带来的其他挑战

除了对技术带来挑战,其实对其他方面也带来了挑战。
(1)数据隐私。如果没有数据隐私,那么用户每天所产生的一些数据,如手机浏览记录,位置记录,聊天记录等都会裸露在数据平台里面,因此数据隐私显得非常重要。
(2)数据源的复杂多样。大数据中包含各种类型的数据,如何兼容这些不同类型的数据,这是一个值得研究的问题。

大数据存储和分析技术

随着数据的规模不断增大,单机的系统肯定会存在很多系统瓶颈,如存储容量、读写速度、计算效率等,这些都是无法满足用户的需求。为此谷歌提出了三大技术来解决大规模数据的存储和处理问题,利用GFS来解决存储容量,BigTable来解决读写速度问题,MapReduce解决计算效率问题。

这三大技术是革命性的技术,后面我们学习的很多框架都是基于这三大技术实现的。

谷歌提出的三大技术可以部署在普通的PC上,不需要大型机和大型存储设备。但是谷歌只是发表了技术论文,并没有开放源代码,于是一个模范谷歌大数据技术的开源实现就诞生了—Hadoop。Hadoop中也存在MapReduce,Hadoop中使用HBase来对应谷歌的BigTable,HDFS来对应谷歌的GFS。

学习Hadoop,最重要的就是多阅读官方文档,官方文档是最全,也就最权威的。

那么本篇关于大数据相关内容的概述学习就到此为止,后续正式进入到Hadoop的学习。