Hadoop概述

Hadoop概述

1、Hadoop介绍

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通常是指一个更广泛的概念——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项目包含了5个模块:

    • Hadoop Common:支持其他Hadoop模块的通用实用程序
    • Hadoop Distributed File System(HDFS):一种分布式文件系统,可提供对应用程序数据的高吞吐量访问
    • Hadoop YARN:用于作业调度和集群资源管理的框架
    • Hadoop MapReduce:基于YARN的系统,用于并行处理大数据集
    • Hadoop Ozone:Hadoop的对象存储,这家伙很年轻,在2020年9月2日才面世

    Hadoop核心组件

    1. Hadoop HDFS(分布式文件存储系统)︰解决海量数据存储
    2. Hadoop YARN(集群资源管理和任务调度框架)︰解决资源任务调度
    3. Hadoop MapReduce (分布式计算框架)︰解决海量数据计算

2、Hadoop发展简史

在这里插入图片描述

起初,Doug Cutting有个雄心勃勃的计划,在Google横行搜索引擎市场的时代,他想从头开始构建一个超越Google的开源搜索引擎,于是Nutch项目开始了,当时是2002年

后来,Nutch开发者认为这一网页爬取工具和搜索引擎系统可扩展度不够,不能解决数十亿网页的搜索问题,项目陷入瓶颈

直至2004年,Google的两位大佬Jeffrey Dean和Sanjay 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:结构化数据的分布式存储系统》 被并称为“大数据的三驾马车”。)

在这里插入图片描述

谷歌最顶尖的工程师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就是小孩子起的名字

大约在同一时间,Doug Cutting加入了Yahoo,Yahoo为此组织了一个专门的团队和资源,将Hadoop发展成一个能够处理Web数据的系统

到2008年1月,Hadoop已经成为Apache的顶级项目,证明了它的成功、多样化、活跃性,一度成了“大数据”的代名词。Hadoop成功地被雅虎之外的很多公司应用,如Last.fmFacebook和《纽约时报》

在2008年2月,雅虎宣布其搜索引擎产品部署在一个拥有1万个内核的Hadoop集群上

2008年4月,Hadoop打破世界纪录,成为最快排序1TB数据的系统。Hadoop在209秒内排序了1TB的数据(还不到三分半钟),击败了前一年的297秒冠军

同年11月,谷歌在报告中声称,它的 MapReduce 实现执行ITB数据的排序只用了68秒

在2009年5月,有报道宣称Yahoo的团队使用 Hadoop对ITB的数据进行排序只花了62秒时间

  • Hadoop创始人:Doug Cutting

    Doug Cutting,是说到Hadoop绕不开的人物,这位大佬是Apache Lucene之父,也是Hadoop的创建者。

    在这里插入图片描述

    Doug Cutting(道格·卡特)
  • Hadoop起源于Apache Lucene(Lucene是一个被广泛使用的文本搜索系统库)子项目:Nutch(Nutch的设计目标是构建一个大型的全网搜索引擎。遇到瓶颈︰如何解决数十亿网页的存储和索引问题)

  • Google三篇论文

    1. 《The Google file system》:谷歌分布式文件系统GFS
    2. 《MapReduce: Simplified Data Processing on Large Clusters》︰谷歌分布式计算框架MapReduce
    3. 《Bigtable: A Distributed Storage System for Structured Data》︰谷歌结构化数据存储系统BigTable

3、Hadoop特性优点

在这里插入图片描述

  1. 高可靠性:Hadoop底层维护多个数据副本,所以即使Hadoop某个计算元素或存储出现故障,也不会导致数据的丢失
  2. 高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点
  3. 高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度
  4. 高容错性:能够自动将失败的任务重新分配
  5. 低成本:Hadoop通过普通廉价的机器组成服务器集群来分发以及处理数据,以至于成本很低

缺点

  • 不适用于低延迟数据访问
  • 不能高效存储大量小文件
    • 存储大量小文件的话,它会占用NamelNode大量的内存来存储文件目录和块信息。这样是不可取的,因为NameNode的内存总是有限的
    • 小文件存储的寻址时间会超过读取时间,它违反了HDFS的设计目标
  • 不支持并发写入、文件随机修改
    • 一个文件只能有一个写,不允许多个线程同时写
    • 仅支持数据append(追加),不支持文件的随机修改

4、Hadoop发行版本

在这里插入图片描述

  1. Apache hadoop(Apache社区版本):ApacheHadoop是一款支持数据密集型分布式应用并以Apache 2.0许可协议发布的开源软件框架。它支持在商品硬件构建的大型集群上运行的应用程序。Hadoop是根据Google公司发表的MapReduce和Google档案系统的论文自行实作而成。称为社区版Hadoop

    网址:Apache Hadoop

    • 优点:

      • 完全开源免费

      • 社区活跃

      • 文档、资料详实

    • 缺点:

      • 复杂的版本管理。版本管理比较混乱的,各种版本层出不穷,让很多使用者不知所措

      • 复杂的集群部署、安装、配置。通常按照集群需要编写大量的配置文件,分发到每一台节点上,容易出错,效率低下

      • 复杂的集群运维。对集群的监控,运维,需要安装第三方的其他软件,如ganglia,nagois等,运维难度较大

      • 复杂的生态环境。在Hadoop生态圈中,组件的选择、使用,比如Hive,Mahout,Sqoop,Flume,Spark,Oozie等等,需要大量考虑兼容性的问题,版本是否兼容,组件是否有冲突,编译是否能通过等。经常会浪费大量的时间去编译组件,解决版本冲突问题

  2. 第三方发行版Hadoop:Hadoop遵从Apache开源协议,用户可以免费地任意使用和修改Hadoop,也正因此,市面上出现了很多Hadoop版本。其中有很多厂家在Apache Hadoop的基础上开发自己的Hadoop产品,比如Cloudera的CDH,Hortonworks的HDP,MapR的MapR产品等

    1. Cloudera: Apache Hadoop open source ecosystem | Cloudera

      • 2008年成立的Cloudera是最早将Hadoop商用的公司,为合作伙伴提供Hadoop的商用解决方案,主要是包括支持、咨询服务、培训

      • 2009年Hadoop的创始人Doug Cutting也加盟Cloudera公司。Cloudera产品主要为CDH,Cloudera Manager,Cloudera Support

      • CDH是Cloudera的Hadoop发行版,完全开源,比Apache Hadoop在兼容性,安全性,稳定性上有所增强

      • Cloudera Manager是集群的软件分发及管理监控平台,可以在几个小时内部署好一个Hadoop集群,并对集群的节点及服务进行实时监控。Cloudera Support即是对Hadoop的技术支持

      • Cloudera的标价为每年每个节点4000美元。Cloudera开发并贡献了可实时处理大数据的Impala项目

    2. Hortonworks:Hortonworks Data Platform | Cloudera

      • 2011年成立的Hortonworks是雅虎与硅谷风投公司Benchmark Capital合资组建

      • 公司成立之初就吸纳了大约25名至30名专门研究Hadoop的雅虎工程师,上述工程师均在2005年开始协助雅虎开发Hadoop,贡献了Hadoop80%的代码

      • 雅虎工程副总裁、雅虎Hadoop开发团队负责人Eric Baldeschwieler出任Hortonworks的首席执行官

      • Hortonworks的主打产品是Hortonworks Data Platform(HDP),也同样是100%开源的产品,HDP除常见的项目外还包括了Ambari,一款开源的安装和管理系统

      • HCatalog,一个元数据管理系统,HCatalog现已集成到Facebook开源的Hive中。Hortonworks的Stinger开创性的极大的优化了Hive项目。Hortonworks为入门提供了一个非常好的,易于使用的沙盒

      • Hortonworks开发了很多增强特性并提交至核心主干,这使得Apache Hadoop能够在包括Window Server和Windows Azure在内的Microsoft Windows平台上本地运行。定价以集群为基础,每10个节点每年为12500美元

      • 2018年Hortonworks被Cloudera公司收购

    • 优点:

      • 基于Apache协议,100%开源

      • 版本管理清晰。比如Cloudera,CDH1,CDH2,CDH3,CDH4,CDH5 等,后面加上补丁版本,如CDH4.1.0 patch level 923.142,表示在原生态Apache Hadoop 0.20.2基础上添加了1065个patch

      • 比Apache Hadoop在兼容性、安全性、稳定性上有增强。第三方发行版通常都经过了大量的测试验证,有众多部署实例,大量的运行到各种生产环境

      • 版本更新快。通常情况,比如CDH每个季度会有一个update,每一年会有一个release。

      • 基于稳定版本Apache Hadoop,并应用了最新Bug修复或Feature的patch

      • 提供了部署、安装、配置工具,大大提高了集群部署的效率,可以在几个小时内部署好集群

      • 运维简单。提供了管理、监控、诊断、配置修改的工具,管理配置方便,定位问题快速、准确,使运维工作简单,有效

5、Hadoop架构变迁

  • Hadoop 1.0

    • HDFS(分布式文件存储)
    • MapReduce(资源管理和分布式数据处理)

    在这里插入图片描述

  • Hadoop 2.0

    • HDFS(分布式文件存储)
    • MapReduce (分布式数据处理)
    • YARN(集群资源管理、任务调度)

    在这里插入图片描述

  • Hadoop 3.0

    在这里插入图片描述

    • 通用方面
      精简内核、类路径隔离、shell脚本重构
    • Hadoop HDFS
      EC纠删码、多NameNode支持
    • Hadoop MapReduce
      任务本地化优化、内存参数自动推断
    • Hadoop YARN
      Timeline Service V2、队列配置

首先我们来看一下致命性的变化,就是1.0版本到2.0版本的变迁,因为hadoop发展到现在,大概经历了三个大的版本变化,我们仔细对比一下,发现底层都是hdfs,没有什么变化,也就是说,数据怎么存的,没有什么变化

1.0到2.0最大的变化,就是对MR进行了大的拆分,并且引入了一个新的组件,叫做YARN。大家可以看下图,我们发现,这个mapReduce这个组件太累了,他除了要做集群的资源管理,还要做数据的处理,这一个组件身兼数职,并且这两件事情都非常的重要,那他的性能能好吗

完全不行啊,所以呢,到2.0版本之后,hadoop做了一个非常大的构架变化,就是把MR做了拆分,MR你只负责处理数据就可以了,资源管理的事情,交给专门的组件来做,这个组件就是YARN,并且YARN这个组件做的非常通用,不仅支持MapReduce,还支持其他的计算框架,什么Spark,Flink等。目前市面上1.0基本上没什么人用了,但是2.8、2.9这些还是有在用、

Hadoop 3.0架构组件和Hadoop 2.0类似,3.0着重于性能优化

我们可以看一下,2.0到3.0的版本,构架已经没有大的改变了,一个软件要是天天变构架,那就太搓了,3.0版本侧重的是性能的优化,就比如说支持cup的多重运算、支持多重备份,并且内部的数据支持动态平衡,并且存储效率变高了,采用删码存储等等

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
近百节课视频详细讲解,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 课程目录 000 上课方式和课程大纲介绍 001 Linux系统基本知识说明和启动Linux虚拟机 002 配置虚拟机IP地址和如何使用远程工具SecureCRT 003 Linux 环境下基本命令使用及Linux系统中文件的类型和权限 004 Linux 环境下基本命令讲解二 005 Linux 系统远程FTP工具与桌面工具XManager使用和培养三大能力 006 Linux 系统基本命令和基本配置的复习讲解 007 What is Apache Hadoop讲解 008 Hadoop 的发展史和版本发展与区别 009 Hadoop 生态系统介绍讲解 010 Hadoop 生态系统介绍讲解 011 Hadoop 服务讲解 012 HDFS 架构的讲解 013 MapReduce 架构讲解和MapReduce思想原理讲解 014 Apache Hadoop 三种安装部署模式讲解 015 Apache Hadoop 单机(本地)模式安装部署与测试 016 Hadoop 伪分布式安装部署 017 查看Hadoop 日志以及日志的格式和命名组成 018 Hadoop 守护进程服务三种启动停止方式 019 测试环境(HDFS Shell基本命令和运行WordCount程序) 020 结合WordCount实例讲解Hadoop的数据存储和数据计算 021 Hadoop 五大服务与配置文件中的对应关系 022 分析Hadoop 三种启动停止方式的Shell 脚本 023 去除警告【Warning$HADOOP HOME is deprecated。】 024 Hadoop相关命令中的【–config configdir】作用 025 Hadoop 目录结构 026 Eclipse导入Hadoop源码项目 027 HDFS 设计目标 028 HDFS 文件系统架构概述 029 HDFS架构之NameNode和DataNode 030 HDFS 架构讲解总结 031 回顾NameNode和DataNode 032 HDFS架构之Client和SNN功能 033 HDFS Shell 命令命令讲解和演示 034 讲解HDFS 文件读写流程 035 详解HDFS API之FileSystem方式基本操作一 036 HDFS Java API 两种方式介绍及使用URL API详解一 037 使用URL API详解二 038 使用HDFS FileSystem API 详解 039 HDFS文件系统读写流程及HDFS API两种方式读取文件 040 详解HDFS API之FileSystem方式基本操作二 041 讲解分析Configuration和FileSystem类源代码 042 引出HDFS实际应用场景之合并文件和使用getmerge命令并查看实现源码 043 分析getmerge功能实现思路和代码实现 044 演示讲解【百度网盘】功能与HDFS API对应说明 045 HDFS 专题结束和布置HDFS 作业 046 MapReduce架构原理介绍讲解 047 WordCount运行和MapReduce运行基本流程 048 MapReduce执行流程详解 049 MapReduce编程模型讲解及运行PI程序和JobWebUI监控Job运行 050 如何按照【八股文】方式编写MapReduce 051 复习MapReduce编写模型和【八股文】方式编写MapReduce 052 完成MyWordCount程序编写 053 打包运行MyWordCount程序并监控Job运行 054 优化MyWordCount程序和讲解GenericOptionsParser 055 安装Hadoop Eclipse插件并使用Eclipse查看文件系统 056 使用Eclipse运行MyWordCount程序并解决PriviledgedActionException问题 057 MyWordCount 处理过程详解 058 MapReduce提交作业源码跟踪讲解 059 MR作业运行流程整体分析 060 MapReduce执行流程之Shuffle和排序流程以及Map端分析 061 MapReduce执行流程之Reduce端分析 062 MapReduce Shuffle过程讲解和Map Shuffle Phase讲解 063 Reduce Shuffle Phase讲解 064 源代码跟踪查看Map Task和Reduce Task数目的个数 065 回顾MapReduce执行过程以及MapReduce核心 066 Hadoop MapReduce框架数据类型讲解 067
Hadoop是一个开源的分布式计算框架,它允许用户在大量的计算机集群上存储和处理大量数据。Hadoop的核心组件包括HDFS(Hadoop Distributed FileSystem)和MapReduce。HDFS是Hadoop的分布式文件系统,它将数据存储在大量的磁盘上,而不是单个计算机上。MapReduce是一种编程模型,用于处理和生成大数据集。 Hadoop的基本框架包括以下几个部分: 1. HDFS:Hadoop分布式文件系统,负责存储和管理大量数据。 2. MapReduce:一种编程模型,用于处理和生成大数据集。 3. YARN:Yet Another Resource Negotiator,负责资源管理和任务调度。 4. Hadoop Common:Hadoop的共享库,包含一些通用的工具和库。 5. Hadoop Auth:Hadoop的身份验证服务,负责用户认证和授权。 6. Hadoop HDFS Java API:Hadoop HDFS的Java接口,用于编写Java程序操作HDFS。 Hadoop的环境搭建主要包括以下步骤: 1. 安装Java环境:Hadoop是基于Java开发的,所以首先需要安装Java环境。 2. 下载并解压Hadoop:从Hadoop官网下载最新版本的Hadoop,然后解压到本地目录。 3. 配置Hadoop环境:编辑Hadoop的配置文件,设置Hadoop的环境变量。 4. 初始化HDFS:使用Hadoop的启动脚本初始化HDFS。 5. 启动Hadoop:启动Hadoop的各个组件,如HDFS、YARN等。 6. 测试Hadoop:运行一个简单的MapReduce任务,检查Hadoop是否正常运行。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bit-apk-code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值