Hadoop 简介

这篇具有很好参考价值的文章主要介绍了Hadoop 简介。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、Hadoop 是什么

Hadoop 是一个提供分布式存储和计算的开源软件框架,它具有无共享、高可用(HA)、弹性可扩展的特点,非常适合处理海量数量。

  • Hadoop 是一个开源软件框架
  • Hadoop 适合处理大规模数据
  • Hadoop 被部署在一个可扩展的集群服务器上

二、Hadoop 三大核心组件

  • HDFS(分布式文件系统) -—— 实现将文件分布式存储在集群服务器上
  • MAPREDUCE(分布式运算编程框架) —— 实现在集群服务器上分布式并行运算
  • YARN(分布式资源调度系统) —— 帮用户调度大量的 MapReduce 程序,并合理分配运算资源(CPU和内存)

 1.X和2.X版本的区别

Hadoop 简介

1、HDFS

定义

HDFS (Hadoop Distributed File System) ,它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。
HDFS 的使用场景:适合一次写入,多次读出的场景,且不支持文件的修改。适合用来做数据分析,并不适合用来做网盘应用。

优缺点

优点:

1 )高容错性
        ①数据自动保存多个副本。它通过增加副本的形式,提高容错性。
        ②某一个副本丢失以后,它可以自动恢复。
(2)适合处理大数据
        ①数据规模:能够处理数据规模达到 GB TB 、甚至 PB 级别的数据;
        ②文件规模:能够处理百万规模以上的文件数量,数量相当之大。
(3)可构建在廉价机器上,通过多副本机制,提高可靠性。
缺点:
1 )不适合低延时数据访问,比如毫秒级的存储数据,是做不到的。
(2)无法高效的对大量小文件进行存储。
        ①存储大量小文件的话,它会占用 NameNode 大量的内存来存储文件目录和块信息。这
样是不可取的,因为 NameNode 的内存总是有限的;
        ②小文件存储的寻址时间会超过读取时间,它违反了 HDFS 的设计目标。
(3)不支持并发写入、文件随机修改。
        ①一个文件只能有一个写,不允许多个线程同时写;
        ②仅支持数据 append ( 追加 ) ,不支持文件的随机修改。

核心思想

Hadoop 简介
1 NameNode (nn) :就是 Master , 它是一个主管、管理者。
        ①管理 HDFS 的名称空间;
        ②配置副本策略;
        ③管理数据块(Block) 映射信息;
        ④处理客户端读写请求。
(2) DataNode :就是 Slave NameNode 下达命令, DataNode 执行实际的操作。
        ①存储实际的数据块;
        ③执行数据块的读/ 写操作。
(3) Client :就是客户端。
        ①文件切分。文件上传 HDFS 的时候, Client 将文件切分成一个一个的 Block, 然后进行上传;
        ②与 NameNode 交互,获取文件的位置信息;
        ③与 DataNode 交互,读取或者写入数据;
        ④Client 提供一些命令来管理 HDFS, 比如 NameNode 格式化;
        ⑤Client 可以通过一些命令来访问 HDFS ,比如对 HDFS 增删查改操作;
(4) Secondary NameNode :并非 NameNode 的热备。当 NameNode 挂掉的时候, 它并不能马上替换 NameNode 并提供服务。
        ①辅助 NameNode ,分 担其工 作量 ,比如 定期合 并 Fsimage Edits, 并推送给NameNode ;
        ②在紧急情况下,可辅助恢复 NameNode

 重点

HDFS 中的文件在物理上是分块存储 (Block) ,块的大小可以通过配置参数 ( dfs.blocksize)来规定,默认大小在 Hadoop2.x 版本中是 128M ,老版本中是 64M
Hadoop 简介
思考:为什么块的大小不能设置太小,也不能设置太大?
        (1) HDFS 的块设置太小,会增加寻址时间,程序一直在找块的开始位置;
        (2)如果块设置的太大,从磁盘传输数据的时间会明显大于定位这个块开始位置所需的时间。导致程序在处理这块数据时,会非常慢。
总结 : HDFS 块的大小设置主要取决于磁盘传输速率。

2、MapReduce

定义

MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架
MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完的分布式运算程序,并发运行在一个Hadoop集群上

优缺点

优点:

1MapReduce易于编程它简单的实现一些接口,就可以完成一个分布式程序,这个分布式程序可以分布到大量廉价的PC机器上运行。也就是说你写一个分布式程序,跟写一个简单的串行程序是一模一样的。就是因为这个特点使得MapReduce编程变得非常流行。
(2)良好的扩展性
当你的计算资源不能得到满足的时候,你可以通过简单的增加机器来扩展它的计算能力。

(3)高容错性
MapReduce设计的初衷就是使程序能够部署在廉价的PC机器上,这就要求它具有很高的容错性。比如其中一台机器挂了,它可以把上面的计算任务转移到另外一个节点上运行,不至于这个任务运行失败,而且这个过程不需要人工参与,而完全是由Hadoop内部完成的。
(4)适合PB级以上海量数据的离线处理可以实现上千台服务器集群并发工作,提供数据处理能力。

缺点:

(1)不擅长实时计算MapReduce无法像MySQL一样,在毫秒或者秒级内返回结果
(2)不擅长流式计算
流式计算的输入数据是动态的,而MapReduce的输入数据集是静态的,不能动态变化。这是因为MapReduce自身的设计特点决定了数据源必须是静态的不擅长DAG(有向图)计算

(3)多个应用程序存在依赖关系,后一个应用程序的输入为前一个的输出。在这种情况下,MapReduce并不是不能做,而是使用后,每个MapReduce作业的输出结果都会写入到磁盘,会造成大量的磁盘IO,导致性能非常的低下

核心思想 

Hadoop 简介

(1 )分布式的运算程序往往需要分成至少 2 个阶段。
(2 )第一个阶段的 MapTask 并发实例,完全并行运行,互不相干。
(3 )第二个阶段的 ReduceTask 并发实例互不相干,但是他们的数据依赖于上一个阶段的
所有 MapTask 并发实例的输出。
(4 MapReduce 编程模型只能包含一个 Map 阶段和一个 Reduce 阶段,如果用户的业务
逻辑非常复杂,那就只能多个 MapReduce 程序,串行运行。

MapReduce进程

 Hadoop 简介

执行流程

3、Yarn

定义

yarn是一种通用的资源管理系统和调度平台。
资源管理系统 :管理集群内的硬件资源,和程序运行相关,比如内存,CPU等。
调度平台:多个程序同时申请计算资源时提供分配,调度的规则(算法)。
通用:不仅仅支持MapReduce程序,理论上支持各种计算程序如spark,flink。yarn不关系程序的计算内容,只关心程序所需的资源,在程序申请资源的时候根据调度算法分配资源,计算结束之后回收计算资源。使用yarn作为资源调度平台的计算框架自身需要提供ApplicationMaster来负责计算任务的调度。

优缺点

优点

(1)将资源管理和作业控制分离,减小JobTracker压力

(2)YARN的设计大大减小了 JobTracker(也就是现在的 ResourceManager)的资源消耗,并且让监测每一个 Job 子任务 (tasks) 状态的程序分布式化了,更安全、更优美。

(3)老的框架中,JobTracker一个很大的负担就是监控job下的tasks的运行状况,现在,这个部分就扔给ApplicationMaster做了而ResourceManager中有一个模块叫做ApplicationsManager(ASM),它负责监测ApplicationMaster的运行状况。

(4)能够支持不同的计算框架

(5)资源管理更加合理

(6)使用Container对资源进行抽象,Container不同于MRv1中的slot,它是一个动态资源划分单位,是根据应用程序的需求动态生成的,比之前以slot数目更合理。

(7)且使用了轻量级资源隔离机制Cgroups进行资源隔离。

(8)Container的设计避免了之前的map slot/reduce slot分开造成集群资源闲置的尴尬情况。

 缺点:

(1)各个应用无法感知集群整体资源的使用情况,只能等待上层调度推送信息。

(2)资源分配采用轮询、ResourceOffer机制(mesos),在分配过程中使用悲观锁,并发粒度小。

(3)缺乏一种有效的竞争或优先抢占的机制。

(4)简化了双层调度器中的全局资源管理器,改为由一个Cell State来记录集群内的资源使用情况,这些使用情况都是共享的数据,以此来达到与全局资源管理器相同的效果。

(5)所有任务访问共享数据时,采用乐观并发控制方法。

核心思想

 Hadoop 简介 

步骤说明:
1,客户端向ResourceManager中的ApplicationManager提交作业申请,申请jobID。
2,ApplicationManager 返回一个jobID,以及运行的hdfs临时路径(hdfs://… jobID)。
3,客户端将作业的jar包,配置信息等上传到分配的hdfs临时路径(hdfs://… jobID)中。
4,客户端上传文件成功后,向ApplicationManager发送执行作业请求。
5,ApplicationManager将请求转发给Scheduler,申请执行所需资源。
6,调度器将作业放置到相关队列中,当执行到该作业时,开始让ApplicationManager分配Containers。
7,ApplicationManager命令NodeManager使用分配的container资源启动ApplicationMaster。
8,ApplicationMaster启动后去分配的hdfs临时路径(hdfs://… jobID)中读取作业的具体信息,根据分片信息创建map任务,reduce任务。
9,ApplicationMaster向Scheduler请求资源来执行map任务,reduce任务。
10,Scheduler返回申请结果。
11,AppMaster通知NodeManager,启动map,reduce任务。
12,NodeManager启动map,reduce任务。
13,map,reduce任务读取数据,进行逻辑计算。计算过程中如果有map,reduce任务执行失败了,AppMaster负责重启任务。
14,程序执行成功后,AppMaster向Scheduler发送请求,释放资源。

摘抄部分原文链接:https://blog.csdn.net/weixin_43172032/article/details/117759068 

调度策略

  Yarn中有三种资源调度器:FIFO调度器(FIFO Scheduler)、容量调度器(Capacity Scheduler)、公平调度器(Fair Scheduler)。

(1)FIFO调度器

        简介:顾名思义,FIFO调度器把应用放在队列里,按照先进先出的提交顺序执行应用。

        优点:简单,不需要额外配置。

        缺点:不适合共享集群。大应用会占满整个集群的资源,导致小应用长时间等待。

(2)容量调度器

        简介:容量调度器设有一个专门的队列给小作业使用。

        优点:大作业不会占满全部资源,小作业不需要长时间等待大作业完成。

        缺点:整个集群的资源利用率降低了,大作业需要更长的时间来执行。

(3)公平调度器

        简介:公平调度器旨在为所有运行的应用公平地分配资源。

        优点:同时解决了FIFO大作业占满整个集群资源的问题和Capacity小作业队列空闲导致集群资源利用率降低的问题。

        缺点:存在延迟问题,后面的作业需要等待前面的作业让出资源。

具体策略介绍请看:https://blog.csdn.net/m0_37795099/article/details/124211350

三、Hadoop 生态圈

Hadoop 生态圈是指围绕 Hadoop 软件框架为核心而出现的越来越多的相关软件框架,这些软件框架和 Hadoop 框架一起构成了一个生机勃勃的 Hadoop 生态圈。在特定场景下,Hadoop 有时也指代 Hadoop 生态圈。

Hadoop 生态圈的架构图

Hadoop 简介文章来源地址https://www.toymoban.com/news/detail-406198.html

到了这里,关于Hadoop 简介的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Hadoop分布式安装

    首先准备好三台服务器或者虚拟机,我本机安装了三个虚拟机,安装虚拟机的步骤参考我之前的一篇 virtualBox虚拟机安装多个+主机访问虚拟机+虚拟机访问外网配置-CSDN博客 jdk安装 参考文档:Linux 环境下安装JDK1.8并配置环境变量_linux安装jdk1.8并配置环境变量_Xi-Yuan的博客-CSDN博

    2024年02月08日
    浏览(52)
  • Hadoop完全分布式搭建

    1.下载VM 2.下载Centos镜像 3.下载hadoop 4.下载FinalShell 5.下载jdk文件  6.下载hive,数据仓库学习大数据专业的用的到     注:开启虚拟机把鼠标放入屏幕点击后消失,使用键盘上下键进行选择   注:点击之后,什么都不动,再点击完成(因为它自动帮我们分区了) 注:我们配置

    2024年02月04日
    浏览(48)
  • 搭建完全分布式Hadoop

    登录三个虚拟机 执行命令: vim /etc/hosts 1、上传安装包 上传hadoop安装包 查看hadoop安装包 2、解压缩安装包 执行命令: tar -zxvf hadoop-3.3.4.tar.gz -C /usr/local 查看解压后的目录 3、配置环境变量 执行命令: vim /etc/profile 存盘退出,执行命令: source /etc/profile ,让配置生效 查看had

    2024年02月04日
    浏览(54)
  • Hadoop分布式集群搭建

    集群以三台电脑搭建,每台电脑创建一个UbuntuKylin虚拟机,集群以三台UbuntuKylin虚拟机为基础搭建,虚拟机主机名分别为hadoop101、hadoop111和hadoop121。IP地址分别为192.168.214.101、192.168.214.111和192.168.214.121。 主机名 IP地址: hadoop101 192.168.214.101 hadoop111 192.168.214.111 hadoop121 192.168.214

    2024年02月03日
    浏览(48)
  • hadoop分布式计算组件

    ·计算:对数据进行处理,使用统计分析等手段得到需要的结果 ·分布式计算:多台服务器协同工作,共同完成一个计算任务 分布式计算常见的2种工作模式 分散-汇总(MapReduce就是这种模式) 中心调度-步骤执行(大数据体系的Spark、Flink等是这种模式) MapReduce是“分散-汇总”模

    2024年04月11日
    浏览(43)
  • 搭建伪分布式Hadoop

    在独立模式下,所有程序都在单个JVM上执行,调试Hadoop集群的MapReduce程序也非常方便。一般情况下,该模式常用于学习或开发阶段进行调试程序。 在伪分布式模式下, Hadoop程序的守护进程都运行在一台节点上,该模式主要用于调试Hadoop分布式程序的代码,以及程序执行是否

    2024年02月06日
    浏览(44)
  • Hadoop 完全分布式部署

    前期准备 分析: 准备3台客户机(关闭防火墙、静态IP、主机名称) 【CentOS 7】 安装JDK 【jdk1.8】 安装Hadoop 【hadoop 3.3.4】 配置环境变量 配置ssh 配置集群 单点启动 群起并测试集群 Hadoop 集群规划: node1 node2 node3 IP 10.90.100.121 10.90.100.122 10.90.100.123 HDFS NameNode 、 DataNode DataNode D

    2024年03月23日
    浏览(49)
  • Hadoop分布式集群安装

            上一篇大数据文章讲解了在单机上搭建Hadoop-Yarn 伪分布式集群的安装方法,方便大家学习,真实环境不可能只有一台机器,肯定是多节点的集群,大单位还会建设很多Hadoop集群,比如各个大部门有自己的集群,或者按热、温、冷来划分建立集群,反正都是很多台服

    2024年01月19日
    浏览(51)
  • Hadoop分布式安装部署

    VMware Workstation Pro17 CentOS7 Hadoop-3.3.6 jdk1.8.0_391 事先需要在本地电脑安装VMware,再创建虚拟机,并且克隆该虚拟机,使用多台机器配合完成完全的分布式文件系统。本文使用三台虚拟机搭建Hadoop。 Hadoop在安装部署之前,需要对虚拟机进行网络配置,将虚拟机的网络状态由动态修

    2024年01月23日
    浏览(56)
  • Hadoop完全分布式搭建(Hadoop-3.3.0)

            本教程讲解Hadoop-3.3.0在Ubuntu系统下集群的搭建。         在正式开始之前,需要自己先安装好一台虚拟机。下面给大家整理了过程中需要用到的资源包,可以自行获取: 1.打开终端,输入命令,创建新用户 2.为hadoop用户设置密码 3.为了我们后面操作方便,这里可以给

    2024年04月11日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包