Hadoop运行原理总结

本篇将记录笔者学习hadoop有关的原理总结,将持续更新…

一.Hadoop概述

- 数据等级
ERP
CRM(G级别) -MySQL、jdbc
WEB(T级别) -ES
BIG DATA(PB级别) -Hadoop

- Hadoop架构
HDFS(Hadoop Distributed File System):分布式文件系统,解决分布式存储
MapReduce:分布式计算框架
YARN:分布式资源管理系统、在Hadoop 2.x中引入
Common:支持所有其他模块的公共工具程序

- Hadoop发行版本
社区版:Apache Hadoop
Cloudera发行版:CDH
Hortonworks发行版:HDP

- 为什么使用Hadoop?
高扩展性,可伸缩
高可靠性:多副本机制,容错高
低成本
无共享架构:不依赖某一个技术
灵活:可存储任意类型数据
开源(社区活跃):很重要

- Hadoop生态圈
在这里插入图片描述

Hadoop核心:HDFS、MapReduce、YARN、common、core
数据查询分析:Hive(重要)、 Pig、Impala、 Presto
协调管理:HCatalog、Zookeeper、Ambari
数据迁移:Sqoop、 Flume(实时)
非关系型数据库:HBase
Spark、Tez:都可用于替换MaoReduce
NoSQL、机器学习、任务调度等

- zookeeper
是一个分布式应用程序协调服务:解决分布式集群中应用系统的一致性问题
提供的功能:配置管理、命名服务、分布式同步、队列管理、集群管理等
特性:全局数据一致、可靠性、顺序性、实时性、数据更新原子性
Zookeeper集群
角色:
Leader(领导者):负责投票的发起与决议,更新系统状态
Follower(跟随者):用于接收客户端的请求并向客户端返回结果,在选主过程中参与投票
Observer(观察者):可以接收客户端的请求,将写请求转发给Leader节点,但Observer不参与投票过程,只同步Leader状态,Observer的目的是为了扩展系统,提高读取速度

- HDFS优点
a.支持处理超大文件
b.可运行在廉价机器上
c.高容错性
d.流式文件写入

- HDFS缺点
a.不适合低延时数据访问场景
b.不适合小文件存取场景
c.不适合并发写入,文件随机修改场景

- HDFS CLI(命令行)
基本格式:
hdfs dfs -cmd
hadoop fs -cmd(已过时)
命令和Linux相似:
-ls
-mkdir
-put
-rm
-help

- HDFS dfsadmin
dfsadmin命令用于管理HDFS集群

hdfs dfsadmin -report						返回集群的状态信息
hdfs dfsadmin -safemode enter/leave			进入和离开安全模式
hdfs dfsadmin -saveNamespace				保存集群的名字空间
hdfs dfsadmin -rollEdits					回滚编辑日志
hdfs dfsadmin -refreshNodes					刷新节点
hdfs dfsadmin -getDatanodeInfo node1:8010	获取数据节点信息
hdfs dfsadmin -setQuota 10 /hdfs			设置文件目录配额

- HDFS 常用命令

hdfs dfs -mkdir [/目录名]  					//测试新建test目录
hdfs dfs -mkdir -p [/目录名/目录名/...]  	//新建多级目录
hdfs dfs -ls -R [/目录名] 					//查看test目录下的所有文件以及包
hdfs dfs -touchz [/绝对路径/文件名.格式]	 	//创建a文件
hdfs dfs -put [/绝对路径/文件] [/绝对路径] 	//上传文件
hdfs dfs -cat[或text] [/绝对路径/文件名] 	//查看文件数据
hdfs dfs -get [/绝对路径/文件] [/绝对路径] 	//下载文件
hdfs dfs -du [/绝对路径] 					//查看目录下的文件大小
hdfs dfs -rm [/绝对路径/文件名]  			//删除文件
hdfs dfs -rm -R [/绝对路径/目录名] 			//删除目录下的所有文件以及目录
hadoop fs -chmod -R [权限值] [/目录]			//修改目录权限

二.Hadoop核心之HDFS

该部分选自HDFS特性和常用功能

基本特点
高容错性,高吞吐量,适用于海量数据的可靠性存储和数据归档,对硬件性能要求低

HDFS设计目标

  1. 硬件失效
    将硬件失效看作一种常态,健壮性,高可用.检查错误,快速和自动恢复是核心架构
  2. 流式访问
    允许通过流的方式访问数据集,批量处理非交互,高吞吐量访问非低延迟
  3. 大数据集
    支持PB级数据量,具有高带宽,可扩展到集群中
  4. 简单一致性模型
    一次写入,多次读取,文件创建后无须修改(日志等),支持追加,不支持任意位置修改
  5. 移动计算要比移动数据更划算
    以文件块管理,提供接口去移动计算到数据所在位置,非移动数据到应用位置
  6. 轻便的跨异构的软硬件平台
    可轻便从一个平台跨到另一个平台,包括版本不同和运行环境不同

重要特性

  1. 分块存储(block)
    默认大小128M(2.x版本),64M(老版本),可修改
  2. 统一的抽象目录树
    可通过路径访问文件(hdfs://namenode:port/…)
  3. 统一管理
    目录结构和元数据的管理都由namenode(集群主节点)承担
    负责维护目录树和文件所对应的block块id和所在datanode服务器
  4. datanode存储管理
    集群从节点,每个block可在多个datanode上存储多个副本,副本数量可修改
  5. 一次写多次读,可追加不可改
  6. 一些缺点:
    不便修改,延迟大,网络开销大,仅适用于数据分析任务

HDFS工作机制

  1. datanode损坏
    如配置10个datanode,备份数为3,则损坏1个datanode时会自动寻找新的datanode补充进来,保证备份数为设定值

  2. 写数据的流程
    首先,客户端要和namenode通信以确认可以写文件并获得接收文件block的datanode
    然后,客户端按顺序将文件逐个block传递给相应的datanode
    最后,由接收到block的datanode负责向其他datanode复制block的副本

  3. 读数据的流程
    首先,客户端将要读取的文件路径发送给namenode
    然后,namenode获取文件的元信息(主要是block的存放位置信息)返回给客户端
    最后,客户端根据返回的信息找到相应datanode逐个获取文件的block并在客户端本地进行数据追加合并从而获得整个文件

HDFS常用功能

元数据

  1. Metadata,维护文件和目录信息,分为内存元数据和元数据文件
  2. NameNode主要存储元数据镜像文件Fsimage和日志文件Edits
    a. Fsimage记录某一永久性检查点时整个HDFS的元信息
    b. Edits所有对HDFS的写操作都会记录在此文件

检查点

  1. 定期对NameNode中的文件进行备份,NameNode启动时会将最新的Fsimage加载到内存中
  2. 由secondary namenode完成namenode备份,后者损坏后前者将fsimage拷贝到namenode工作目录,恢复其元数据
  3. 触发条件分为两次检查点间隔时间和两次检查点操作数两种

DataNode功能

  1. 存储管理用户的文件块数据,默认128M/block
  2. 定期汇报块信息给namenode,默认3600000ms(1小时一次)

三.Hadoop核心之Mapreduce

四.Hadoop核心之YARN

运行原理
在这里插入图片描述
1.client向yarn提交job,首先找ResourceManager分配资源(ResourceManager开启一个Container,在Container中运行一个ApplicationManager)

2.ResourceManager返回一个作业ID,并将路径返回给客户端

3.client端将运行作业所需要的资源(Jar包、配置信息、分片信息等)上传到返回的HDFS路径

4.上传成功后,向ResourceManager发送请求,执行作业

5.ApplicationManager将请求转发到调度器ResourceScheduler

6.调度器会将任务放入调度列表,当执行到相应的请求时,会通知ApplicationManager分配容器,找一台nodemanager开辟Container,创建作业对应的Application master

7.ApplicationManager启动NodeManager节点上的ApplicationMaster

8.ApplicationMaster获取HDFS上提交的文件,根据切片信息创建MapTast和ReduceTast

9.ApplicationMaster向调度器申请运行MapTast和ReduceTast的资源

10.调度器返回执行信息

11.ApplicationMaster通知本节点与其他节点NodeManager启动任务

12.NodeManager执行任务

13.MapTast与ReduceTast接受共享文件数据

14.执行结果反馈给ApplicationMaster,ApplicationMaster在将结果发送至ApplicationManager

15.程序执行完毕后ApplicationMaster发送请求释放资源

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值