hadoop学习笔记

这篇为学习hadoop的笔记,书籍来自《Hadoop构建数据仓库实战》

hadoop简介

  hadoop是一个由Apache基金会所开发的分布式系统基础架构,目前已经构成一个大数据生态。基于hadoop,可以组建单台到多台服务器的集群,来提供大数据存储和计算方案。

简单需求

  假设我们目前有一个1g的文件需要存储,使用传统的文件系统存储的话,就需要1g的存储空间,需要考虑到文件数据丢失,我们需要进行数据的备份,这时我们搭建一个集群,使得集群内的机器都会存储同样的文件。但是实际上我们不需要每一台机器都存储文件,我们只需要整个集群中每个文件都存有3个备份就行。
  hadoop的hdfs文件系统可以提供相应的解决方案。hdfs的存储原理为:假设我们有一个1g的文件,我们设定总共存储3个副本,假如集群总共有10台机器,那个只有3台机器是存储有这个文件的,假如中途存储这个文件的1台机器挂掉,hdfs的策略会复制这个文件到另一台机器上,保证整个集群中肯定有3台机器存储有这个文件。
  这样,既不需要所有机器都存储文件的副本,又能够保证文件不会丢失。
  由此引出hadoop的一些优点:高容错性使得数据能够保持稳定,高扩展性使得集群能够更加强大,分布式运算提高运算性能。

hadoop 构成

Hadoop包括以下四个基本模块:
Hadoop基础功能库:支持其他Hadoop模块的通用程序包。
HDFS:一个分布式文件系统,能够以高吞吐量访问应用的数据。
YARN:一个作业调度和资源管理框架。
MapReduce:一个基于YARN的大数据并行处理程序。
基于hadoop架构的相关存储,计算组件有:hbase, hive,spark,flink等。

hadoop 架构

hadoop学习笔记_第1张图片
一个多节点的hadoop集群架构

  hadoop的集群分为主从模式,主节点有一个Job Tracker和NameNode进程,从节点会有Task Tracker和Data Node进程。NameNode负责保存文件系统的索引,DataNode负责数据存储和操作,Job Tracker负责作业间的节点调度,Task Tracker负责具体节点的任务计算。

HDFS模块

  HDFS是一个运行在通用硬件设备之上的分布式文件系统。HDFS是高度容错的,在廉价的硬件上部署。HDFS提供以高吞吐量访问应用数据的能力,非常适合拥有大数据集的应用。
  HDFS命名空间的元数据由NameNode进程负责存储,元数据保存有相应的文件的所在节点的索引,备份数量等。文件的打开,关闭,重命名操作通过NameNode来执行。NameNode通过一个叫做FsImage的文件存储所有整个hdfs文件的命名空间,包括数据块和文件映射关系,文件属性等。运行NameNode的节点是HDFS的主节点。
  数据的实际存储由DataNode进程负责,运行DataNode的节点成为从节点,又叫工作节点,依照NameNode的指令执行数据块的创建,删除,复制操作。
   数据存储过程:HDFS会把文件分解成多个数据块,每个数据块存储在不同的工作节点中,然后每个数据块会有多个备份,这个备份由复制因子指定。NameNode会周期性的检测DataNode的心跳,来检验DataNode是否正常工作,如果不正常,则会根据元数据信息。把该DataNode都是数据块复制到其他可用工作节点,后面如果重新恢复了工作节点的心跳,而该工作节点的数据正常的话,会删除多余的数据来保证数据备份都是固定的。这种机制使得文件系统能够稳定健壮。

你可能感兴趣的:(hadoop学习笔记)