本篇将记录笔者学习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发送请求释放资源

Hadoop运行原理总结相关推荐

  1. Hadoop运行原理之Spill, Shuffle

    Shuffle阶段又可以分为Map端的shuffle和Reduce端的Shuffle. 一.Map端的shuffle Map端会处理输入数据并产生中间结果,这个中间结果会写到本地磁盘(转者注: 这个中 ...

  2. Hadoop基础-Hdfs各个组件的运行原理介绍

    Hadoop基础-Hdfs各个组件的运行原理介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.NameNode工作原理(默认端口号:50070) 1>.什么是NameN ...

  3. spark on yarn 完全分布式_Spark编程笔记(1)-架构基础与运行原理

    引言 根据IBM前首席执行官郭士纳的观点,IT领域每隔十五年就会迎来一 次重大变革 .当前我们正处于第三次信息浪潮(2010年前后),物联网.云计算和大数据技术突飞猛进. 信息爆炸是我们当前所需要解决 ...

  4. flink运行原理_浅谈Flink分布式运行时和数据流图的并行化

    本文将以WordCount的案例为主线,主要介绍Flink的设计和运行原理.关于Flink WordCount程序可以参考我之前的文章:读取Kafka实时数据流,实现Flink WordCount.阅 ...

  5. spark启动的worker节点是localhost_Spark大数据在线培训:Spark运行原理解析

    在大数据技术框架当中,Spark是继Hadoop之后的又一代表性框架,也是学习大数据当中必学的重点技术框架.在这些年的发展当中,Spark所占据的市场地位,也在不断拓展.今天的Spark大数据在线培训 ...

  6. HiveQL学习笔记(一):Hive安装及Hadoop,Hive原理简介

    本系列是本人对Hive的学习进行一个整理,主要包括以下内容: 1.HiveQL学习笔记(一):Hive安装及Hadoop,Hive原理简介 2.HiveQL学习笔记(二):Hive基础语法与常用函数 ...

  7. Spark大数据技术与应用 第一章Spark简介与运行原理

    Spark大数据技术与应用 第一章Spark简介与运行原理 1.Spark是2009年由马泰·扎哈里亚在美国加州大学伯克利分校的AMPLab实验室开发的子项目,经过开源后捐赠给Aspache软件基金会 ...

  8. Hadoop运行环境搭建(二)

    文章目录 一.本地运行模式 二.完全分布式运行模式 1.编写集群分发脚本 2.SSH免密登录配置 3.集群配置 4.集群启动 5.集群基本测试 6.集群启动/停止方式总结 总结 Hadoop运行模式包 ...

  9. Servlet运行原理以及生命周期

    Servlet运行原理 Servlet生命周期定义了一个Servlet如何被加载.初始化,以及它怎样接收请求.响应请求,提供服务.在讨论Servlet生命周期之前,先让我们来看一下这几个方法: 1. ...

  10. ASP.NET运行原理

    一个ASP.NET的应用程序是开始于IIS的. 当你请求一个包含ASP.NET应用的网址时,IIS接受到请求(IIS是WEB服务守候进程),IIS收到请求后,会根据请求者请求的主机头或者IP或者端口号 ...

最新文章

  1. Clone Detective java home
  2. 【学习笔记】SAP OData服务简介
  3. JavaSE(十三)——Swing
  4. Github Page创建个人主页以及绑定域名
  5. Leetcode刷题(1)两数之和
  6. 问题 G: 区间权值
  7. java word流_(word)java中字节流示例.doc
  8. angular之性能优化
  9. 【转发】Git本地服务器搭建及使用详解
  10. 联想智能云教室安win7_联想智能云教室解决方案-联想商用.PDF
  11. 用acdsee制作html,ACDSee 制作网络像册
  12. 如何给Digspark ATTINY85下载程序
  13. iPhoneXS、XS Max与iPhoneXR 适配
  14. 计算机组成原理读写周期波形图,计算机组成原理_第八章
  15. ChatGpt会替代码农可行性分析
  16. ROS 学习笔记3. launch文件的使用
  17. 数据库备份 bak 下载方式,迅雷
  18. unix/linux编程实践,Unix/Linux编程实践教程–cp在OS X的实现
  19. 勇者斗恶龙———算法题
  20. 23. DICOM图像显示-DCMTK-image转dicom

热门文章

  1. 充电和库仑计,charge(bq24161) and coulomb(bq27425)
  2. 如何将程序下载到单片机
  3. 学习《软件评测师教程》
  4. html如何做滑动门效果,JS+CSS实现简易的滑动门效果代码
  5. 无密码退出、卸载趋势防毒墙网络版
  6. linux安装telnet工具下载,Linux下安装telnet的方法
  7. 计算机数据库相关法规,法律法规数据库-详细页
  8. 【基于JXTA的P2P应用开发】
  9. web前端进阶教程目录
  10. 系泊系统 matlab代码,一种应用于系泊系统的设计方法与流程