1. 大数据时代背景
1.1 大数据时代到来
在微信上,随手点的一个赞;在百度上,随手输入的搜素关键词;在健康记录应用上,每天所产生的微信步数这些都是数据。我们每人每天都在产生大量数据。人类近些年所产生的数据比过去几千年所产生数据多得多,所以如何让这些储存数据,如何处理数据让这些数据产生更大的价值成为了一个新的问题。基于此大数据技术这门课程应运而生。
1.2 什么是大数据
大数据的定义是什么?百度百科是这样说的——大数据(Big Data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
大数据有如下几个核心特征:
1.容量(Volume):数据的大小决定所考虑的数据的价值和潜在的信息
2.种类(Variety):数据类型的多样性
3.速度(Velocity):指获得数据的速度
4.可变性(Variability):妨碍了处理和有效地管理数据的过程
5.真实性(Veracity):数据的质量
6.复杂性(Complexity):数据量巨大,来源多渠道
7.低价值密度(value):合理运用大数据,以低成本创造高价值
现在的大数据处理技术有很多,例如:Hadoop HDFS,NoSQL数据库,Apache Spark,Apache Flink,Apache NiFi,Apache Hive等等。尽管这些技术各有特点,但它们的核心目标始终是优化数据的存储和计算,以满足不断增长的数据处理需求。
1.3 大数据应用案例
最早关于大数据的故事,发生在美国第二大的超市塔吉特百货公司。为了吸引孕妇这一含金量很高的群体,塔吉特要求顾客数据分析部建立模型以期在孕妇第2个妊娠期就把她们确认出来。通过对顾客消费数据建模分析,顾客数据分析部选出25种典型商品的消费数据构建“怀孕预测指数”,可以在很小的误差范围内预测顾客的怀孕情况,便能早早把孕妇优惠广告寄给顾客。
全球零售业的巨头沃尔玛也通过大数据获益。公司在对消费者购物行为进行分析时发现,男性顾客在购买婴儿尿片时,常会顺便搭配几瓶啤酒来犒劳自己,于是推出了将啤酒和尿布捆绑销售的促销手段。如今“啤酒+尿布”的数据分析成果也成了大数据技术应用的经典案例。
2. 初识Hadoop
2.1 Hadoop简介
Hadoop是什么?Hadoop由Apache基金会所开发的。我们来看Apache基金会对Hadoop的定义——Hadoop软件库是一个框架,允许大型数据集使用简单的编程模型在计算机集群的分布式处理。它的目的是从单一的服务器扩展到成千上万的机器,每个服务器提供本地计算和存储。而不是依靠硬件来提供高可用性,库本身的目的是检测和处理应用层的故障,所以提供了一个高度可用的服务上的计算机集群。
通俗来说,Hadoop是一个开源框架,主要用于处理和存储大规模数据。它允许用户在不需要了解底层分布式系统细节的情况下,开发分布式程序。Hadoop能够充分利用集群的优势,实现快速的数据处理和存储。通过Hadoop,用户可以轻松地管理和分析海量数据,从而提取有价值的信息。
从上面的定义可以看出Hadoop有如下几个特点:
Hadoop是由一系列软件库组成的框架
Hadoop适合处理大规模数据:高吞吐量,超大数据集
Hadoop被部署在一个集群上:高容错性,使用廉价的硬件设备
分布式文件系统(Hadoop Distributed File System)HDFS,放宽了POSIX的要求,可以以流的形式访问文件系统中的数据。
Hadoop 使用 Java 开发,所以可以在多种不同硬件平台的计算机上部署和使用。其核心部件包括分布式文件系统 (Hadoop DFS,HDFS) 和 MapReduce。HDFS为海量的数据提供了存储,而MapReduce为海量的数据提供了计算能力,Hadoop很好的实现了Google的云计算基础架构的核心理念--GFS和BigTable等,即Hadoop实现了HDFS文件系统和MapReduce计算框架,使Hadoop成为一个分布式的计算平台。用户只需要分别实现Map和Reduce接口,即可将Job注册为可自动分布式运行的程序。因此,Hadoop不仅仅是一个用于存储的分布式文件系统,而且是可通过大型集群执行分布式计算的应用框架。狭义上Hadoop就是指其HDFS和MapReduce。
Hadoop的物理架构是一种典型的 Master-Slave 架构。
2.2 Hadoop发展历程
在2006年前后,谷歌发表了GFS、MapReduce和BigTable三篇相关论文,从此后Hadoop及其相关系统的开源数据管理平台如雨后春笋般涌现,迅速形成互联网数据处理的技术生态圈,其典型特征就是通过搭建无共享的MPP集群获得分布并行的数据处理能力,进而拥有高可用性和高性能的优势。
其中由GFS发展出了HDFS,由MapReduce发展出了MR,由BigTable发展出了Hbase。
受到这些理论影响,Doug Cutting开始了Hadoop的开发。Hadoop这个名字来源于Doug Cutting儿子的玩具大象。Hadoop 就此诞生并迅速发展,标志这云计算时代来临。
2.3 Hadoop特色和优势
Hadoop被设计为用来部署在低廉的硬件上,能够对大量数据进行分布式处理的软件框架,Hadoop可以以一种可靠、高效和可伸缩的方式进行处理数据。Hadoop采用了分布式存储方式,提高了读写速度,并扩大了存储容量。同时采用MapReduce来整合分布式文件系统上的数据,可保证分析和处理数据的高效。Hadoop还采用了存储冗余数据的方式保证数据的安全性。
Hadoop平台允许大型数据集使用简单的编程模型在计算机集群上进行分布式处理,用户可以轻松的搭建和使用分布式计算平台,通过Java或其它平台支持语言在Hadoop上开发和运行处理海量数据的应用程序。
3. 云计算、大数据与Hadoop
什么是云计算?云计算是一种通过互联网提供计算资源和服务的技术。它允许用户随时随地访问和使用云平台上的数据、软件和硬件资源。在数字化时代,互联网已经成为基础设施。云计算使得数据中心能够像一台计算机一样去工作。通过互联网将算力以按需使用、按量付费的形式提供给用户,包括:计算、存储、网络、数据库、大数据计算、大模型等算力形态。云计算一个明显的优势是弹性,能让您按需使用各类服务,灵活扩缩容,从容应对业务流量的不确定性。
Hadoop可以说是云计算的产物,是云算技术的一种实现。Hadoop作为一个分布式的软件框架,拥有云计算PaaS层的所有特点是云计算的重要组成部分。
4. Hadoop生态系统
Hadoop主要由两部分组成:分布式文件系统HDFS和分布式计算框架MapReduce,分布式文件系统主要是用于海量数据的存储,而MapReduce则是基于此分布式文件系统对存储在分布式文件系统中的数据进行分布式计算,接下来对Hadoop的两个组成部分的架构特点进行深入的了解。
Hadoop HDFS(Hadoop Distributed File System)是一个分布式文件系统,专为存储大规模数据而设计。它由两个主要组件组成:NameNode和DataNode。NameNode负责管理文件系统的元数据和数据块的映射,而DataNode则实际存储数据块并处理读写请求。HDFS将文件分割成固定大小的数据块,并在多个DataNode上存储副本,以提高数据的可靠性和容错性。通过这种架构,HDFS能够高效地处理和存储海量数据,适用于大数据分析和处理场景。
MapReduce是一种编程模型和处理框架,用于大规模数据集的并行计算。其架构主要分为两个阶段:Map阶段和Reduce阶段。在Map阶段,输入数据被分割成多个数据块,映射函数对每个数据块进行处理,生成键值对。接着,这些键值对被分组并传递到Reduce阶段,汇总函数对相同键的值进行合并,生成最终结果。MapReduce框架能够自动处理任务的分配、调度和故障恢复,使得用户可以专注于数据处理逻辑,而无需关心底层的分布式计算细节。
HDFS和MapReduce架构图如下:
一般来说,狭义的Hadoop仅仅是指Common、HDFS和MapReduce模块。但是作为开源项目,围绕Hadoop有越来越多的软件蓬勃出现,方兴未艾,构成了一个生机勃勃的Hadoop生态圈。有时我们说Hadoop往往是指Hadoop生态圈中的软件所组成的生态系统。
Hadoop1.x是指Hadoop的第1.0时代,从版本的角度来看基本是指在Hadoop0.23.x和Hadoop1.2.1版本之前的所有发行版,Cloudera公司发行的CDH3系列,时间大约在2013年以前,其核心主要由HDFS和MapReduce组成,HDFS是用于存储数据的,MapReduce是用于计算处理数据的。
Hadoop2.x是指Hadoop的第2.0代,一般是指从2013年2月发布的Hadoop2.0.3版以后的版本,Cloudera公司发行的CDH4、CDH5系列,其核心组件除了原有的HDFS、MapReduce以外又增加了YARN资源管理系统, YARN负责整个集群资源的管理和调度,而原有的MapReduce则运行在YARN上面。
Hadoop3.x是指Hadoop的第3.x代,一般是指从2017年12月发布的Hadoop 3.0.0版本以后的版本。Hadoop 3.x系列引入了多个重要的增强功能和改进,核心组件仍包括HDFS和YARN,同时在MapReduce上进行了优化,以支持更高的性能和更大的数据集。此外,Hadoop 3.x引入了支持多租户的功能、改进了HA(高可用性)机制,并增加了对容器化(如Docker)的支持,使得资源利用更加灵活和高效。此外,Hadoop 3.x还引入了新功能,如Erasure Coding,以提高数据存储的效率和容错能力。
在这里我们补充以下YARN的架构图。
YARN(Yet Another Resource Negotiator)的架构由多个关键组件组成。ResourceManager是集群的主节点,负责资源管理和任务调度,包含Scheduler和ApplicationManager。NodeManager是每个工作节点上的守护进程,负责管理本地资源和容器的执行。容器是YARN中资源分配的基本单位,包含计算资源和运行环境。每个应用程序都有一个ApplicationMaster,负责协调应用的执行和资源请求。客户端则用于提交应用程序并与ResourceManager交互。通过这种架构,YARN实现了高效的资源管理和任务调度,支持多种计算框架的并行运行。
Hadoop生态系统包括很多,我们在下面简绍一些:
1.Hive:Hive由Facebook开源,最初用于解决海量结构化的日志数据统计问题。Hive定义了一种类似SQL的查询语言(HiveQL),将SQL转化为MapReduce任务在Hadoop上执行,通常用于离线分析。
2.HBase:HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“BigTable:一个结构化数据的分布式存储系统”。就像BigTable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于BigTable 的能力。
3.ZooKeeper:ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和HBase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
ZooKeeper的基本运转流程:1选举Leader。2.同步数据。3.选举Leader过程中算法有很多,但要达到的选举标准是一致的。4.Leader要具有最高的执行ID,类似root权限。5.集群中大多数的机器得到响应并follow选出Leader.
4.Mahout:Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。此外,通过使用 Apache Hadoop 库,Mahout 可以有效地扩展到云中。
5. Hadoop应用案例分析
5.1 Hadoop在百度的应用
百度在2006年就开始关注Hadoop并开始调研和使用,2008年开始使用Hadoop作为其离线数据分析平台。Hadoop在百度主要用于如下场景:
日志的存储和统计
网页数据的分析和挖掘
商业分析,如用户的行为和广告关注度等
在线数据的反馈,及时得到在线广告的点击情况
用户网页的聚类,分析用户的推荐度及用户之间的关联度。
5.2 Hadoop在Yahoo的应用
关于Hadoop技术的研究和应用,Yahoo!始终处于领先地位,它将Hadoop应用于自己的各种产品中,包括数据分析、内容优化、反垃圾邮件系统、广告的优化选择、大数据处理和ETL等;
同样,在用户兴趣预测、搜索排名、广告定位等方面得到了充分的应用.