Hadoop

90 阅读3分钟

分布式与集群

分布式:将一个任务分成多个子任务交由多台服务器完成,每台服务器完成不同的任务.
集群:多台服务器做相同的任务,任务量多的时候每台服务器做不同的工作,任务量小的时候,一台服务器工作,其余作为备份

分布式与集群.jpg

Hadoop架构

hadoop三大组件: HDFS MapReduce YARN
详细介绍:
    HDFS:(分布式文件系统),解决海量数据存储
        元数据: 描述核心数据的数据
        NameNode:集群当中的主节点,主要用于管理集群当中的各种数据
        SecondaryNameNode:主要能用于辅助NameNode进行文件块元数据存储
        DataNode:集群当中的从节点,主要用于存储真实的海量的业务数据
    YARN:(作业调度和集群资源管理的框架),解决资源任务调度
        ResourceManager: 接收用户的计算请求任务,并负责集群的资源管理和分配
        NodeManager: 负责执行主节点分配的任务(给MR的计算程序提供资源)
    MapReduce:(分布式运算编程框架),解决海量数据计算
        如何计算: 核心思想就是分而治之   Map负责分解,Reduce负责合并
        MR程序: 使用java/python然后去编写MR程序,成本高          
                如何解决?  在hive平台上编写sql,执行sql底层自动转为MR程序
	
MapReduce计算需要的数据和产生的结果需要HDFS来进行存储
MapReduce的运行需要由Yarn集群来提供资源调度。

Hadoop-HDFS

特点

HDFS存储大文件,把大文件默认切割成128M大小的block块,进行存储
HDFS存储块的时候,会给每个块进行备份(一共三份)
HDFS文件系统可存储超大文件,时效性稍差。
HDFS具有硬件故障检测和自动快速恢复功能。
HDFS为数据存储提供很强的扩展能力。
HDFS存储一般为一次写入,多次读取,只支持追加写入,不支持随机修改。
HDFS可在普通廉价的机器上运行。

架构

hadoop-hdfs架构.jpg

1、Client
    发请求就是客户端。
    文件切分。文件上传 HDFS 的时候,Client 将文件切分成 一个一个的Block,然后进行存储
    与 NameNode 交互,获取文件的位置信息。
    与 DataNode 交互,读取或者写入数据。
    Client 提供一些命令来管理 和访问HDFS,比如启动或者关闭HDFS。
2、NameNode
    就是 master,它是一个主管、管理者。
    处理客户端读写请求。
    管理 HDFS 元数据(文件路径,文件的大小,文件的名字,文件权限,文件切割后的块(block)信息…)。
    配置3副本备份策略。
3、DataNode
    就是Slave。NameNode 下达命令,DataNode 执行实际的操作。
    存储实际的数据块(block)。
    执行数据块的读/写操作。
    定时向namenode汇报block信息。
4、Secondary NameNode
    并非 NameNode 的备份节点。当NameNode 挂掉的时候,它并不能马上替换 NameNode 并提供服务。
    只是辅助 NameNode,对HDFS元数据进行合并,合并后再交给NameNode。
    在紧急情况下,可辅助恢复 NameNode 部分数据。

副本

block块: HDFS被设计成能够在一个大集群中跨机器可靠地存储超大文件。
它将每个文件拆分成一系列的数据块进行存储,这个数据块被称为block,除了最后一个,所有的数据块都是同样大小的。

block 块大小默认: 128M(134217728字节)

注意: 为了容错,文件的所有block都会有副本。每个文件的数据块大小和副本系数都是可配置的。
	
副本系数默认:  3个

hdfs默认文件: https://hadoop.apache.org/docs/r3.3.4/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

hadoop-hdfs副本.jpg