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设计目标
- 硬件失效
将硬件失效看作一种常态,健壮性,高可用.检查错误,快速和自动恢复是核心架构 - 流式访问
允许通过流的方式访问数据集,批量处理非交互,高吞吐量访问非低延迟 - 大数据集
支持PB级数据量,具有高带宽,可扩展到集群中 - 简单一致性模型
一次写入,多次读取,文件创建后无须修改(日志等),支持追加,不支持任意位置修改 - 移动计算要比移动数据更划算
以文件块管理,提供接口去移动计算到数据所在位置,非移动数据到应用位置 - 轻便的跨异构的软硬件平台
可轻便从一个平台跨到另一个平台,包括版本不同和运行环境不同
重要特性
- 分块存储(block)
默认大小128M(2.x版本),64M(老版本),可修改 - 统一的抽象目录树
可通过路径访问文件(hdfs://namenode:port/…) - 统一管理
目录结构和元数据的管理都由namenode(集群主节点)承担
负责维护目录树和文件所对应的block块id和所在datanode服务器 - datanode存储管理
集群从节点,每个block可在多个datanode上存储多个副本,副本数量可修改 - 一次写多次读,可追加不可改
- 一些缺点:
不便修改,延迟大,网络开销大,仅适用于数据分析任务
HDFS工作机制
datanode损坏
如配置10个datanode,备份数为3,则损坏1个datanode时会自动寻找新的datanode补充进来,保证备份数为设定值写数据的流程
首先,客户端要和namenode通信以确认可以写文件并获得接收文件block的datanode
然后,客户端按顺序将文件逐个block传递给相应的datanode
最后,由接收到block的datanode负责向其他datanode复制block的副本读数据的流程
首先,客户端将要读取的文件路径发送给namenode
然后,namenode获取文件的元信息(主要是block的存放位置信息)返回给客户端
最后,客户端根据返回的信息找到相应datanode逐个获取文件的block并在客户端本地进行数据追加合并从而获得整个文件
HDFS常用功能
元数据
- Metadata,维护文件和目录信息,分为内存元数据和元数据文件
- NameNode主要存储元数据镜像文件Fsimage和日志文件Edits
a. Fsimage记录某一永久性检查点时整个HDFS的元信息
b. Edits所有对HDFS的写操作都会记录在此文件
检查点
- 定期对NameNode中的文件进行备份,NameNode启动时会将最新的Fsimage加载到内存中
- 由secondary namenode完成namenode备份,后者损坏后前者将fsimage拷贝到namenode工作目录,恢复其元数据
- 触发条件分为两次检查点间隔时间和两次检查点操作数两种
DataNode功能
- 存储管理用户的文件块数据,默认128M/block
- 定期汇报块信息给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发送请求释放资源
Hadoop运行原理总结相关推荐
- Hadoop运行原理之Spill, Shuffle
Shuffle阶段又可以分为Map端的shuffle和Reduce端的Shuffle. 一.Map端的shuffle Map端会处理输入数据并产生中间结果,这个中间结果会写到本地磁盘(转者注: 这个中 ...
- Hadoop基础-Hdfs各个组件的运行原理介绍
Hadoop基础-Hdfs各个组件的运行原理介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.NameNode工作原理(默认端口号:50070) 1>.什么是NameN ...
- spark on yarn 完全分布式_Spark编程笔记(1)-架构基础与运行原理
引言 根据IBM前首席执行官郭士纳的观点,IT领域每隔十五年就会迎来一 次重大变革 .当前我们正处于第三次信息浪潮(2010年前后),物联网.云计算和大数据技术突飞猛进. 信息爆炸是我们当前所需要解决 ...
- flink运行原理_浅谈Flink分布式运行时和数据流图的并行化
本文将以WordCount的案例为主线,主要介绍Flink的设计和运行原理.关于Flink WordCount程序可以参考我之前的文章:读取Kafka实时数据流,实现Flink WordCount.阅 ...
- spark启动的worker节点是localhost_Spark大数据在线培训:Spark运行原理解析
在大数据技术框架当中,Spark是继Hadoop之后的又一代表性框架,也是学习大数据当中必学的重点技术框架.在这些年的发展当中,Spark所占据的市场地位,也在不断拓展.今天的Spark大数据在线培训 ...
- HiveQL学习笔记(一):Hive安装及Hadoop,Hive原理简介
本系列是本人对Hive的学习进行一个整理,主要包括以下内容: 1.HiveQL学习笔记(一):Hive安装及Hadoop,Hive原理简介 2.HiveQL学习笔记(二):Hive基础语法与常用函数 ...
- Spark大数据技术与应用 第一章Spark简介与运行原理
Spark大数据技术与应用 第一章Spark简介与运行原理 1.Spark是2009年由马泰·扎哈里亚在美国加州大学伯克利分校的AMPLab实验室开发的子项目,经过开源后捐赠给Aspache软件基金会 ...
- Hadoop运行环境搭建(二)
文章目录 一.本地运行模式 二.完全分布式运行模式 1.编写集群分发脚本 2.SSH免密登录配置 3.集群配置 4.集群启动 5.集群基本测试 6.集群启动/停止方式总结 总结 Hadoop运行模式包 ...
- Servlet运行原理以及生命周期
Servlet运行原理 Servlet生命周期定义了一个Servlet如何被加载.初始化,以及它怎样接收请求.响应请求,提供服务.在讨论Servlet生命周期之前,先让我们来看一下这几个方法: 1. ...
- ASP.NET运行原理
一个ASP.NET的应用程序是开始于IIS的. 当你请求一个包含ASP.NET应用的网址时,IIS接受到请求(IIS是WEB服务守候进程),IIS收到请求后,会根据请求者请求的主机头或者IP或者端口号 ...
最新文章
- Clone Detective java home
- 【学习笔记】SAP OData服务简介
- JavaSE(十三)——Swing
- Github Page创建个人主页以及绑定域名
- Leetcode刷题(1)两数之和
- 问题 G: 区间权值
- java word流_(word)java中字节流示例.doc
- angular之性能优化
- 【转发】Git本地服务器搭建及使用详解
- 联想智能云教室安win7_联想智能云教室解决方案-联想商用.PDF
- 用acdsee制作html,ACDSee 制作网络像册
- 如何给Digspark ATTINY85下载程序
- iPhoneXS、XS Max与iPhoneXR 适配
- 计算机组成原理读写周期波形图,计算机组成原理_第八章
- ChatGpt会替代码农可行性分析
- ROS 学习笔记3. launch文件的使用
- 数据库备份 bak 下载方式,迅雷
- unix/linux编程实践,Unix/Linux编程实践教程–cp在OS X的实现
- 勇者斗恶龙———算法题
- 23. DICOM图像显示-DCMTK-image转dicom