1. Hahoop概述

1.1 Hodoop是什么

1) Hadoop是一个有Apache基金会所开发的分布式系统基础架构

2) 主要解决海量数据的存储和海量数据的分析计算问题

3) 广义上来说,Hadoop通常是指一个更广泛的概念——Hadoop生态圈

1.2 Hadoop优势

1) 高可靠性:Hadoop底层维护多个数据副本,所以即使Hadoop某个计算元素或存储出现故障,也不会导致数据的丢失。

2) 高扩展性:在集群间分配任务数据,可方便地扩展数以千计的节点。

3) 高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度。

4) 高容错性:能够自动将失败的任务重新分配。

1.3 Hadoop组成

Hadoop1.x组成:Common(辅助工具)、HDFS(数据存储)、MapReduce(计算+资源调度)

Hadoop2.x组成:Common(辅助工具)、HDFS(数据存储)、Yarn(资源调度)、MapReduce(计算)

在Hadoop1.x时代,Hadoop中的MapReduce同时处理业务逻辑运算和资源的调度,耦合性较大。

在Hadoop2.x时代,增加了Yarn。Yarn只负责资源的调度,MapReduce只负责运算。

Hadoop3.x时代在组成上没有变化。

1.3.1 HDFS 架构概述

Hadoop Distributed File System,简称HDFS,是一个分布式文件系统。

1) NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表块所在的DataNode等。

2) DataNode(dn):本地文件系统存储文件块数据,以及块数据的校验和

3)Secondary NameNode(2nn):每隔一段时间对NameNode元数据备份

1.3.2 YARN 架构概述

一种资源协调者,是Hadoop的资源管理器。(资源调度)

1) ResourceManager(RM):整个集群资源(内存、CPU等)的老大

2) NodeManage(NM):单个节点服务器的老大

3) ApplicationMaster(AM):单个任务运行的老大

4) Container :容器,相当于一台独立的服务器,里面封装了任务运行所需要的资源,如内存、CPU、磁盘、网络等

1.3.3 MapReduce架构概述

MapReduce将计算过程分为俩个阶段:Map和Reduce (运算)

1) Map阶段并行处理输入数据

2) Reduce阶段对Map结果进行汇总

1.3.4 HDFS、YARN、MapReduce三者关系

1.3.5 大数据技术生态体系

图中涉及的技术名词解释如下:

1)Sqoop:Sqoop是一款开源的工具,主要用于在Hadoop、Hive与传统的数据库(MySQL)间进行数据的传递,可以将一个关系型数据库(例如 :MySQL,Oracle 等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

2)Flume:Flume是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;

3)Kafka:Kafka是一种高吞吐量的分布式发布订阅消息系统;

4)Spark:Spark是当前最流行的开源大数据内存计算框架。可以基于Hadoop上存储的大数据进行计算。

5)Flink:Flink是当前最流行的开源大数据内存计算框架。用于实时计算的场景较多。

6)Oozie:Oozie是一个管理Hadoop作业(job)的工作流程调度管理系统。

7)Hbase:HBase是一个分布式的、面向列的开源数据库。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。

8)Hive:Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

9)ZooKeeper:它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。

2. HDFS概述

2.1 HDFS产出背景及定义

2.1.1 HDFS产生背景

随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。HDFS只是分布式文件管理系统中的一种。

2.1.2 HDFS定义

HDFS(Hadoop Distributed File System),它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。

HDFS的使用场景:适合一次写入,多次读出的场景。一个文件经过创建、写入和关闭之后就不需要改变。

2.1.3 HDFS优缺点

优点:

缺点:

2.1.4 HDFS组成架构

2.1.5 HDFS文件块大小(面试重点)

2.2 HDFS的操作

2.2.1 基本语法

 hadoop fs 具体命令  或者  hdfs dfs 具体命令两个是完全相同的。可以通过命令 bin/hadoop fs 或者直接输入 hadoop fs查看所有命令​注意:执行命令前需启动集群​

2.2.2 准备工作

 集群启动:切换到集群目录:(首先需要完全切换到hadoop用户下: su - hadoop)​通过shell脚本启动集群:sbin/start-all.sh 或者直接执行 start-all.sh启动验证:jps之后有6个进程,对应的  PID   服务名​关闭集群:stop-all.sh

集群意思就是 多台服务器组成的一个 服务器群体。

集群分为: 完全分布式 跟 伪分布式 完全分布式有多节点(Cluster) 多台服务器 伪分布式 只有一个节点 模拟集群运行环境

HDFS文件存储系统:http://192.168.5.100:9870/

集群监控页面:http://192.168.5.100:8088/

2.2.3 创建 /sanguo 文件夹

 hadoop fs -mkdir /sanguo​如果报出以下错误:mkdir: Cannot create directory /sanguo. Name node is in safe mode.解决方案:hadoop dfsadmin -safemode leave      # 强制关闭安全模式​

2.2.4 上传

  1. -moveFromLocal:从本地剪切粘贴到HDFS

     先编写文件:vim shuguo.txt (输入内容:shuguo)

     执行命令将本地文件剪切粘贴到HDFS中  /sanguo 目录下:hadoop fs  -moveFromLocal  ./shuguo.txt  /sanguo

  2. -copyFromLocal:从本地文件系统中拷贝文件到HDFS路径去

     在本地编写文件:vim weiguo.txt (输入内容:weiguo)执行命令:hadoop fs -copyFromLocal weiguo.txt /sanguo
  3. -put:等同于copyFromLocal,生产环境更习惯用put

     在本地编写文件:vim wuguo.txt (输入内容:wuguo)执行命令:hadoop fs -put liubei.txt /sanguo/shuguo.txt

2.2.5 下载

  1. -copyToLocal:从HDFS拷贝到本地

     hadoop fs -copyToLocal /sanguo/shuguo.txt /home/hadoop  # 必须下载到hadoop的目录里面     
  2. -get:等同于copyToLocal,生产环境更习惯用get

      hadoop fs -get /sanguo/shuguo.txt /home/hadoop  # 必须下载到hadoop的目录里面 

2.2.6 HDFS直接操作

  1. -ls: 显示目录信息

     hadoop fs -ls /sanguo
  2. -cat:显示文件内容

     hadoop fs -cat /sanguo/shuguo.txt
  3. -chmod、-chown:Linux文件系统中的用法一样,修改文件所属权限

     hadoop fs  -chmod 666  /sanguo/shuguo.txt​hadoop fs  -chown  tom:tom   /sanguo/shuguo.txt
  4. -mkdir:创建路径

     hadoop fs -mkdir /jinguo
  5. -cp:从HDFS的一个路径拷贝到HDFS的另一个路径

     hadoop fs -cp /sanguo/shuguo.txt /jinguo 
  6. -mv:在HDFS目录中移动文件

     hadoop fs -mv /sanguo/wuguo.txt /jinguohadoop fs -mv /sanguo/weiguo.txt /jinguo
  7. -rm:删除文件或文件夹

     hadoop fs -rm /sanguo/shuguo.txt
  8. -rm -r:递归删除目录及目录里面内容

     hadoop fs -rm -r /sanguo
  9. -du统计文件夹的大小信息

      hadoop fs -du -s -h /jinguohadoop fs -du  -h /jinguo上面命令查询出来会有三个参数,例如:27  81  /jinguo其中27表示文件大小,81表示27*3个副本,/jinguo 表示查看的目录

2.3 HDFS的读写流程(面试重点)

2.3.1 HDFS写数据流程

(1)客户端通过Distributed FileSystem模块向NameNode请求上传文件,NameNode检查目标文件是否已存在,父目录是否存在。

(2)NameNode返回是否可以上传。

(3)客户端请求第一个 Block上传到哪几个DataNode服务器上。

(4)NameNode返回3个DataNode节点,分别为dn1、dn2、dn3。

(5)客户端通过FSDataOutputStream模块请求dn1上传数据,dn1收到请求会继续调用dn2,然后dn2调用dn3,将这个通信管道建立完成。

(6)dn1、dn2、dn3逐级应答客户端。

(7)客户端开始往dn1上传第一个Block(先从磁盘读取数据放到一个本地内存缓存),以Packet为单位,dn1收到一个Packet就会传给dn2,dn2传给dn3;dn1每传一个packet会放入一个应答队列等待应答。

(8)当一个Block传输完成之后,客户端再次请求NameNode上传第二个Block的服务器。(重复执行3-7步)。

2.3.2 HDFS读数据流程

(1)客户端通过DistributedFileSystem向NameNode请求下载文件,NameNode通过查询元数据,找到文件块所在的DataNode地址。

(2)挑选一台DataNode(就近原则,然后随机)服务器,请求读取数据。

(3)DataNode开始传输数据给客户端(从磁盘里面读取数据输入流,以Packet为单位来做校验)。

(4)客户端以Packet为单位接收,先在本地缓存,然后写入目标文件。

3. MapReduce

3.1 MapReduce概述

3.1.1 MapReduce定义

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

3.1.2 MapReduce优缺点

优点:

 1)MapReduce易于编程它简单的实现一些接口,就可以完成一个分布式程序,这个分布式程序可以分布到大量廉价的PC机器上运行。也就是说你写一个分布式程序,跟写一个简单的串行程序是一模一样的。就是因为这个特点使得MapReduce编程变得非常流行。2)良好的扩展性当你的计算资源不能得到满足的时候,你可以通过简单的增加机器来扩展它的计算能力。3)高容错性MapReduce设计的初衷就是使程序能够部署在廉价的PC机器上,这就要求它具有很高的容错性。比如其中一台机器挂了,它可以把上面的计算任务转移到另外一个节点上运行,不至于这个任务运行失败,而且这个过程不需要人工参与,而完全是由Hadoop内部完成的。4)适合PB级以上海量数据的离线处理可以实现上千台服务器集群并发工作,提供数据处理能力。

缺点:

 1)不擅长实时计算MapReduce无法像MySQL一样,在毫秒或者秒级内返回结果。2)不擅长流式计算流式计算的输入数据是动态的,而MapReduce的输入数据集是静态的,不能动态变化。这是因为MapReduce自身的设计特点决定了数据源必须是静态的。3)不擅长DAG(有向无环图)计算多个应用程序存在依赖关系,后一个应用程序的输入为前一个的输出。在这种情况下,MapReduce并不是不能做,而是使用后,每个MapReduce作业的输出结果都会写入到磁盘,会造成大量的磁盘IO,导致性能非常的低下。

3.2 MapReduce核心思想

(1)分布式的运算程序往往需要分成至少2个阶段。

(2)第一个阶段的MapTask并发实例,完全并行运行,互不相干。

(3)第二个阶段的ReduceTask并发实例互不相干,但是他们的数据依赖于上一个阶段的所有MapTask并发实例的输出。

(4)MapReduce编程模型只能包含一个Map阶段和一个Reduce阶段,如果用户的业务逻辑非常复杂,那就只能多个MapReduce程序,串行运行。

总结:分析WordCount数据流走向深入理解MapReduce核心思想。

4. Yarn资源调度器

Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序。

4.1 Yarn基础架构

4.2 Yarn工作机制

(1)MR程序提交到客户端所在的节点。

(2)YarnRunner向ResourceManager申请一个Application。

(3)RM将该应用程序的资源路径返回给YarnRunner。

(4)该程序将运行所需资源提交到HDFS上。

(5)程序资源提交完毕后,申请运行mrAppMaster。

(6)RM将用户的请求初始化成一个Task。

(7)其中一个NodeManager领取到Task任务。

(8)该NodeManager创建容器Container,并产生MRAppmaster。

(9)Container从HDFS上拷贝资源到本地。

(10)MRAppmaster向RM 申请运行MapTask资源。

(11)RM将运行MapTask任务分配给另外两个NodeManager,另两个NodeManager分别领取任务并创建容器。

(12)MR向两个接收到任务的NodeManager发送程序启动脚本,这两个NodeManager分别启动MapTask,MapTask对数据分区排序。

(13)MrAppMaster等待所有MapTask运行完毕后,向RM申请容器,运行ReduceTask。

(14)ReduceTask向MapTask获取相应分区的数据。

(15)程序运行完毕后,MR会向RM申请注销自己。

【Hadoop快速入门】Hdfs、MapReduce、Yarn相关推荐

  1. Hadoop快速入门——第三章、MapReduce案例(字符统计)

    Hadoop快速入门--第三章.MapReduce案例 目录 环境要求: 1.项目创建: 2.修改Maven 3.编码 4.本地文件测试 5.修改[Action]文件(修改测试文件路径) 6.导出ja ...

  2. Hadoop快速入门——入门考试(伪分布式60+编码25+执行jar15)

    Hadoop快速入门--入门考试(伪分布式60+编码25+执行jar15) 目录 一.伪分布式搭建(60分) 1.创建1台Linux虚拟机,并打开对应的网络连接(VMnet8)(5分) 2.通过xsh ...

  3. Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解

    编者按:HDFS和MapReduce是Hadoop的两大核心,除此之外Hbase.Hive这两个核心工具也随着Hadoop发展变得越来越重要.本文作者张震的博文<Thinking in BigD ...

  4. Thinking in BigData(八)大数据Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解

          纯干货:Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解. 通过这一阶段的调研总结,从内部机理的角度详细分析,HDFS.MapReduce.Hbase.H ...

  5. Hadoop快速入门——第四章、zookeeper安装

    Hadoop快速入门--第四章.zookeeper安装 压缩包下载地址:[https://download.csdn.net/download/feng8403000/85227883] 目录 1.上 ...

  6. Hadoop基础【HDFS、Yarn、MapReduce框架概述、框架的搭建】

    1.Hadoop是什么 是一个由Apache基金会所开发的分布式系统基础架构:主要解决海量数据的存储和海量数据的分析计算问题:hadoop通常是指一个更加宽泛的概念,Hadoop生态圈. 最先遇到大数 ...

  7. 什么是Hadoop - HDFS - MapReduce - YARN - HA

    Hadoop 为什么要有Hadoop? 从计算机诞生到现今,积累了海量的数据,这些海量的数据有结构化.半结构化.非 结构的数据,并且这些海量的数据存储和检索就成为了一大问题. 我们都知道大数据技术难题 ...

  8. 大数据技术之Hadoop(快速入门)

    目录 第一章 Hadoop概述 1.1 什么是Hadoop 1.2  Hadoop 产生背景 Hadoop之父:Doug cutting 1.3  Hadoop 三大发行版本 Hadoop 三大发行版 ...

  9. 4.2.Hadoop快速入门

    python编程快速上手(持续更新中-) 推荐系统基础 文章目录 python编程快速上手(持续更新中-) 推荐系统基础 1 HADOOP概述 1.1 什么是Hadoop Hadoop名字的由来 Ha ...

最新文章

  1. 2020年,计算机视觉领域会有哪些新的研究方向值得提前探索?
  2. iphone退款申请教程_王者荣耀账号注销退钱吗?王者荣耀账号注销100%退款教程...
  3. lex 词法分析 linux,lex语言词法分析
  4. 计算机视觉与深度学习 | 基于Faster R-CNN的目标检测(深度学习Matlab代码)
  5. 介绍一个统计键盘和鼠标输入情况的工具软件
  6. 三张图搞懂JavaScript的原型对象与原型链
  7. 【Java】计算符号函数的值
  8. 2022年全球与中国汽车MEMS加速度计市场现状及未来发展趋势
  9. 【宋词】之《菩萨蛮·书江西造口壁》
  10. 《HTML 编辑器》
  11. matplotlib+basemap画出标记地图
  12. 家庭教师服务器维护,成立首家“家庭教师服务中心”
  13. CSDN博客炫丽图标调整字体大小和颜色
  14. OkHttp3-使用详解-OkHttpClient
  15. Work_Day02(2019-10-24)_CFCA电子签章
  16. 生活随记-下周很重要
  17. A - Palindrome
  18. CAD dxflib 圆弧的标注
  19. 数字集成电路:电路系统与设计
  20. related work 怎么写

热门文章

  1. 一款技术人必备的接口测试神器:Apifox
  2. 油猴(tampermonkey)脚本安装及使用教程
  3. Linux---冯诺依曼体系结构和操作系统
  4. 一个程序员的奋斗历程
  5. 37岁京东程序员“被猝死”,当事人辟谣:已报警
  6. ## 嵌入式软件编程
  7. 初中计算机考试青岛多少分及格,详解青岛中考等级制成绩分五等按百分比划分...
  8. C99标准里的inttypes.h头文件
  9. prettier简单介绍
  10. 资产监测设备中二极管单向性和三相电电流流向问题