Hadoop介绍
狭义上指的是一款开源软件,用Java实现
核心组件
- Hadoop HFDS(分布式文件存储系统)
作用:解决海量数据存储问题 - Hadoop YARN(集群资源管理和任务调度框架)
作用:解决资源任务调度 - Hadoop MapReduce(分布式计算框架)
作用:解决海量数据计算
Hadoop集群概述
Hadoop集群 = Hadoop集群 + YARN集群
两个集群 逻辑上分离,通常物理上在一起
两个集群互相之间没有依赖、互不影响(逻辑)
某些角色进程往往部署在同一台物理服务器上(物理)
都是标准的 主从架构 集群
HDFS集群
HDFS集群 = 主角色(NameNode)+ 从角色(DataNode)+ 主角色辅助角色(SecondaryNameNode)
引入
文件系统
定义
- 是一种 存储和组织数据 的方法,实现了数据的存储、分级组织、访问和获取等操作
- 使用 树形目录的抽象概念 代替了硬盘等物理设备使用数据块的概念。
- 通常使用硬盘、光盘等存储设备,并 维护文件在设备中的物理位置。
特点
- 带有抽象的目录树结构,从根目录开始往下蔓延
- 树中结点分为目录与文件两类
- 节点路径唯一
数据 与 元数据
数据:只存储的内容本身
元数据:解释性数据,一般指文件大小、最后修改时间、属性等
海量数据存储遇到的问题
- 性能低:单节点I/O性能 瓶颈无法逾越,难以支撑海量数据的 高并发吞吐 场景。
- 可拓展性差:无法实现快速部署和弹性扩展,动态扩容、缩容成本高,技术实现难度大。
HDFS简介
- 主要 解决大数据如何存储 的问题,分布式意味着HDFS是 横跨在多台计算机 上的存储系统。
- 能够在普通硬件上运行的分布式文件系统,高度容错,适用于具有大数据集的应用程序,十分适用于存储大型数据
- 使用多台计算机存储文件,并且提供 统一的访问接口
HDFS设计目标
- 故障检测及快速恢复
- HDFS上的应用以 流式 读取数据,HDFS被设计成用于 批处理,而不是用户交互的,注重数据访问的高吞吐量
- 支持大文件,提供很高的聚合数据带宽
- 一次写入,多次读取
- 移动计算的代价比移动数据的代价低
- 平台轻松移植
HDFS整体概述
主从架构
- HDFS集群是标准的master/slave主从架构集群
- 一个HDFS集群是由一个NameNode和一定数目的DataNode组成
- NameNode是主节点,DataNode是从节点,共同协调完成服务
分块存储
文件在物理上分块存储(block),默认大小128M,不足128M也是一块。
块大小可以改变
副本机制
文件中的所有block都有副本。默认值是3(包含自身)。
元数据记录
HDFS中,NameNode管理的数据有两类:
- 文件自身属性信息
名称、权限······
- 文件块位置映射信息
文件块和DateNode之间的映射信息
namespace 抽象统一的目录树结构
支持层次型文件组织结构
NameNode负责维护文件系统的namespace名称空间
HDFS给客户端提供统一的抽象目录树
数据块存储
文件的各个block的具体存储管理由DataNode节点承担
每个block都可以在多个DataNode上存储
HDFS核心属性
分布式存储
问题:数据量大,单机存储遇到瓶颈
解决:
- 单机纵向扩展
- 多级横向扩展