我的大数据学习知录(1)-Hadoop

本文深入介绍了Hadoop,一个为大数据设计的分布式存储和计算平台。从狭义和广义上理解Hadoop,包括其起源、发展历史、优缺点、主要组件(HDFS、MapReduce、YARN等)以及版本更迭和发行版本。Hadoop因其可扩展性、可靠性和容错性在大数据领域占据重要地位,但也存在低延迟访问和小文件处理效率低等问题。未来将聚焦于Hadoop组件的详细探讨。
摘要由CSDN通过智能技术生成

上一篇我对大数据做了简单的介绍,引出了本篇的主角——Hadoop——一个适合大数据的分布式存储和计算平台,本篇就来唠唠它。

image-20210522081143414

1️⃣什么是Hadoop

前文不止一次地介绍说:Hadoop是一个适合大数据的分布式存储和计算平台。它怎么就适合了?对于Hadoop我从狭义和广义去理解它。

  • 狭义上,Hadoop专指Apache Hadoop项目。Apache是个软件基金会,这个基金会可牛大了,凡它出品,必属精品,Hadoop项目就是其中之一,它开发了一系列可靠、可扩展的分布式计算的开源软件。官网对其的介绍如下:

    The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models. It is designed to scale up from single servers to thousands of machines, each offering local computation and storage. Rather than rely on hardware to deliver high-availability, the library itself is designed to detect and handle failures at the application layer, so delivering a highly-available service on top of a cluster of computers, each of which may be prone to failures.
    
    Apache Hadoop软件库是一个框架,该框架允许使用简单的编程模型跨计算机集群对大型数据集进行分布式处理。它旨在从单个服务器扩展到数千台机器,每台机器都提供本地计算和存储。软件库本身不依赖硬件来提供集群的高可用性,它被设计来检测和处理应用程序层的故障,因此可以在每台计算机都容易出现故障的客观现实下,依然可以从计算机集群的顶部提供高可用性的服务。
    

    Hadoop项目包含了5个模块:

    • Hadoop Common:支持其他Hadoop模块的通用实用程序

    • Hadoop Distributed File System(HDFS)**:一种分布式文件系统,可提供对应用程序数据的高吞吐量访问

    • Hadoop YARN:用于作业调度和集群资源管理的框架

    • Hadoop MapReduce:基于YARN的系统,用于并行处理大数据集

    • Hadoop Ozone:Hadoop的对象存储,这家伙很年轻,在2020年9月2日才面世

  • 广义上,Hadoop指大数据技术生态圈技术栈,也就是一个包括Hadoop项目在内的Hadoop的小伙伴们组成的圈子,圈子成员包括但不限于:

    • Ambari:一种基于Web的工具,用于配置、管理和监视Apache Hadoop集群,其中包括对Hadoop HDFS,Hadoop MapReduce,Hive,HCatalog,HBase,ZooKeeper,Oozie,Pig和Sqoop的支持。

    • Avro:数据序列化系统。

    • Cassandra:可扩展的多主数据库,没有单点故障。

    • Chukwa:一种用于管理大型分布式系统的数据收集系统。

    • HBase:可扩展的分布式非关系型数据库,采用列式存储,支持大型表的结构化数据存储。

    • Hive:一种数据仓库基础结构,可提供数据汇总和实时查询。

    • Mahout:可扩展的机器学习和数据挖掘库。

    • Pig:用于并行计算的高级数据流语言和执行框架。

    • Spark:一种用于Hadoop数据的快速通用计算引擎。Spark提供了一个简单而富有表现力的编程模型,该模型支持广泛的应用程序,包括ETL、机器学习、流处理和图形计算。

    • Submarine:一个统一的AI平台,允许工程师和数据科学家在分布式集群中运行机器学习和深度学习工作负载。

    • Tez:基于Hadoop YARN的通用数据流编程框架,它提供了强大而灵活的引擎来执行任意DAG任务,以处理批处理和交互用例的数据。Hadoop生态系统中的Hive,Pig和其他框架以及其他商业软件(例如ETL工具)都采用了Tez,以取代HadoopMapReduce作为基础执行引擎。

    • ZooKeeper:面向分布式应用程序的高性能协调服务。

      下文若无特别说明,“Hadoop”专指Apache Hadoop


2️⃣Hadoop的发展简史​

这一模块可以当做故事来看,你可以选择跳过,也可以选择在学习之余通过这种形式了解一点技术的过往和业界大佬的故事😎

Doug Cutting(道格·卡特)

Doug Cutting,是说到Hadoop绕不开的人物,这位大佬是Apache Lucene之父,也是Hadoop的创建者。Lucene是一个被广泛使用的文本搜索系统库,Hadoop起源于Apache Nutch,一个开源的网络搜索引擎, 它本身也是Lucene项目的一部分。


起初,Doug Cutting有个雄心勃勃的计划,在Google横行搜索引擎市场的时代,他想从头开始构建一个超越Google的开源搜索引擎,于是Nutch项目开始了,当时是2002年。后来,Nutch开发者认为这一网页爬取工具和搜索引擎系统可扩展度不够,不能解决数十亿网页的搜索问题,项目陷入瓶颈,直至2004年,Google的两位大佬Jeffrey DeanSanjay Ghemawat撰写并发表了一篇论文 MapReduce: Simplified Data Processing on Large Clusters 《MapReduce:简化对庞大数据的处理过程》,这篇论文产生了很大的轰动,给了人们很大的启发。(它与Google于2003年发表的 The Google File System 《谷歌系统》、2006年发表的 Bigtable: A Distributed Storage System for Structured Data 《BigTable:结构化数据的分布式存储系统》 被并称为“大数据的三驾马车”。)

JeffDeanAndSanjayChemaw

谷歌最顶尖的工程师Jeffrey Dean(杰夫·迪恩)和Sanjay Ghemawat(桑杰·格玛瓦特)

Doug Cutting和另一位工程师Mike Cafarella深信MapReduce的重要性,于是在2005年初,Nutch的开发人员在Nutch上实现了一个MapReduce系统,到年中,Nutch的所有主要算法均完成移植,用NDFS(Nutch分布式文件系统)和MapReduce来运行。

Mike Cafarella(迈克·卡法雷拉)

Nutch的NDFS和MapReduce实现不仅仅适用于搜索领域。在2006年2月, 开发人员将NDFS和MapReduce移出Nutch形成Lucene的一个子项目,他们最终将这个项目命名为Hadoop,这个名字不是什么缩写(也就是说不像Redis一样是Remote Dictionary Server的缩写),它是一个虚构的名字,Doug Cutting如此解释名称的来历:这个名字是我的孩子给一头吃饱了的棕黄色大象取的,我的命名标准是简短,容易发音和拼写,没有太多的含义,并且不会被用于别处,小孩子是这方面的高手,Googol就是小孩子起的名字。然后那头小黄象就被放逐到袜子抽屉里了(老工具象了)。

不管怎么说,Hadoop诞生了。大约在同一时间,Doug Cutting加入了Yahoo,Yahoo为此组织了一个专门的团队和资源,将Hadoop发展成一个能够处理Web数据的系统。到2008年1月,Hadoop已经成为Apache的顶级项目,证明了它的成功、多样化、活跃性,一度成了“大数据”的代名词。


3️⃣Hadoop的优缺点

作为“大数据”代名词的Hadoop和所有技术一样有着属于它的优缺点。

👍优点(特点)

  • 扩展性 :用普通的机器组成服务器集群来分发存储和处理数据,集群可以方便地扩展到数千个结点上。
  • 可靠性 :按位存储和处理数据的能力值得人们信赖。
  • 容错性 :副本机制能自动维护数据的多份复制,并能在任务失败后自动重新部署计算任务。
  • 高效性 :能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。

👎缺点

  • 不适用于低延迟数据访问。
  • 不能高效存储大量小文件。
  • 不擅长应对多用户写入并任意修改文件。

⭕️稍微想提到的点

Hadoop的优点,也是分布式系统的特点。其中有两个概念是我一度理不清的——扩展性和可靠性。这两个特性在后续学习各种技术的过程中会不断出现,他们还会有其他”名字“如高扩展性和高可用性,当然了这些描述说的都是同一件事。

先来说说什么是可靠性

假设存在这么一台机器,它的运算能力和存储能力都很强——超多核超多线程CPU+超大内存+超大容量,仅凭它单机就可以支撑十万级的业务流量。

image-20210527233549070

单机的它即使再强,也总有受到外界影响的时候。比如这台机器因为所在机房断电或断网甚至被物理破坏,它只是台机器,算力和储力的强弱并不能规避外界的不良干扰。就像一个身体素质极强从来不感冒受伤的人也顶不住汽车和台风的冲击一样。

image-20210527233928718

这时候我们首先会想到给这台机器“加固”,提高它抵抗外界干扰的能力,比如会给这台主机器配一个备份机,在主机器正常服务时,备份机负责备份数据和分担读请求,在主机器宕机后,备份机可以很快接主机器的班作为新的主机器继续正常对外服务;如何知道主机器挂了呢?我们还可能想去设置几个充当监视者的机器或服务,一边地监视着主机器一边念叨“你挂了吗你挂了吗你挂了吗…”,一旦主机器真的挂了,监视者就会告诉备份机:“你家老大挂了,你上位吧”。这样一来,这一整套系统就比先前只有一台主机器孤零零作战时可靠。可靠性就是如此。

image-20210527235106929

再来说说什么是扩展性

理解了可靠性,再来理解扩展性就觉得很顺理成章了。

当我们不断优化一套可靠的系统时,有一个问题是我们无论如何优化这一整套系统都无法解决的,那就是“规模”。当系统业务量逐渐增多,数据量爆炸性增长时,一套可靠的系统,会慢慢地不可靠起来了,这时我们会想“要是我们有不止一套这么可靠的系统就好了”,于是我们搞出了集群,也就是很多套可靠的系统(实际上,上图已经是集群模式了,这里只是为了举例而举例)。

image-20210528000304095

这样一来,我们用若干套可靠的系统能接受的业务量就会更多,且随着业务量继续增多,我们还可以继续叠加更多套可靠的系统,这就是扩展性。

对于Hadoop的缺点,我们大可不必死记硬背,只需要知道它的缺点均来自于它的部件,我们会在学习Hadoop组件的过程中逐渐感受到Hadoop缺点的来源。


4️⃣Hadoop的组件

Hadoop的组件,其实就是本篇开头对Hadoop做狭义理解中的五个模块,这里只对它们做简单的一句话介绍,详细内容我在后续文章再慢慢梳理。

HDFS

全称是Hadoop Distributed File System(Hadoop分布式文件系统),它解决的是大数据的存储问题,是一种旨在运行于商品硬件上的分布式文件系统,起初是作为Apache Nutch Web搜索引擎项目的基础结构构建的,结合了 The Google File System ,它成为Hadoop的核心组件之一。

MapReduce

MapReduce是一个软件框架,用于轻松编写应用程序,这些应用程序以可靠、容错的方式并行处理大型硬件集群(数千个节点)上的大量数据。这个框架起源于同名思想MapReduce,是一种“分而治之”的思想,结合了 MapReduce: Simplified Data Processing on Large Clusters ,它成为Hadoop的另一核心组件。

Yarn

Yarn是个作业调度/监视与集群资源管理的框架。

Common

支持其他模块的工具模块(Configuration、RPC、序列化机制、日志操作)。笔者尽量不将调API的“教程”引入到系列文章中,所以后续文章不会单独介绍它😯

Ozone

Ozone是个适用于Hadoop的可扩展、冗余和分布式的对象存储。除了可以缩放到数十亿个大小不同的对象外,还可以在容器化环境(例如YARN)中有效运行。由于诞生时间较晚,笔者并未将其纳入学习范围和系列文章内,所以后续大致不会介绍它😯


5️⃣Hadoop的版本更迭和发行版本

Hadoop的版本更迭可以在官网的更新页看到详情,简而言之可以总结为以下:

  • 0.x 系列版本:Hadoop当中最早的一个开源版本,在此基础上演变而来的1.x以及2.x的版本
  • 1.x 版本系列:Hadoop版本当中的第二代开源版本,主要修复0.x版本的一些bug等
  • 2.x 版本系列:架构产生重大变化,引入了yarn平台等许多新特性
  • 3.x 版本系列:EC技术、YARN的时间轴服务等新特性

相比这个,笔者更关注的是咱们工作和学习中用的是什么版本,因为Hadoop是开源的,所以目前市面上存在非常多发行版,包括Cloudera发行版(CDH)、Hortonworks发行版、华为发行版、Intel发行版等,所有这些发行版都是基于Apache Hadoop衍生出来的,这里列一下企业中主要用到的三个版本:

  • Apache Hadoop版本(最原始的,所有发行版均基于这个版本进行改进)

    优点:拥有全世界的开源贡献,代码更新版本比较快
    缺点:版本的升级,版本的维护,以及版本之间的兼容性,学习非常方便

  • Cloudera版本(Cloudera’s Distribution Including Apache Hadoop,简称“CDH”)

    这个版本是美国一家大数据公司通过自己公司内部的各种补丁在Apache Hadoop基础上魔改的,实现版本之间的稳定运行,针对大数据生态圈的各个版本的软件都提供了对应的版本,解决了版本的升级困难,版本兼容性等各种问题,对开发者来说就一个问题——收费

  • Hortonworks版本(Hortonworks Data Platform,简称“HDP”)

    Hortonworks是雅虎主导Hadoop开发的副总裁带领二十几个核心成员成立的公司,核心产品软件叫HDP(ambari),HDF免费开源,并且提供一整套的web管理界面,供我们通过web界面管理我们的集群状态。


6️⃣总结

本篇承接了上一篇引出的Hadoop,从狭义和广义角度解读了Hadoop,并对它的发展历史做了简单介绍,大致知道了Hadoop的诞生历程,更多相关的故事咱完全可以换个系列分享一波(并不是😂),接着简单地一句话阐述了Hadoop的优缺点,没有展开是因为优缺点并不能很好地在本篇表现出来,必须结合它的组件来讨论才有意义,同样的,也是一句话简述了Hadoop的组成部分,最后说了版本的更迭(笔者个人不是很关注这个)和发行版本(笔者个人倒是比较关心这个)。

这里已经挖好坑了——Hadoop的组件(组成部分),接下来就要“各个击破”,下一篇就从HDFS写起。

改日再战

image-20210522152435218

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值