HDFS/MapReduce及应用

Hadoop家族

  1. HDFS
    海量分布式文件系统
  2. Map-Reduce
    数据计算
  3. RPC
    序列化,动态代理与反射
  4. Hive
    用SQL的形式来操作数据
  5. HBase
    实时(KV)存储
  6. Flume
    实时日志收集系统
  7. zookeeper
  8. Mahout
    大数据的数据挖掘,实现几种常见的机器学习算法,开发人员就能更快捷的使用。

Hadoop历史

  1. 2003 Google发表有关MapReduce论文
  2. 2005 Nutch迁移到MapReduce实现
  3. 2006.1 Doug Cutting(Lucene创始人)加入Yahoo!
  4. 2006.2 Yahoo从Nutch中剥离出
    MapReduce并开始使用Hadoop
  5. 2007.1 Yahoo组建1000+节点的Hadoop集群
  6. 2008.1 Hadoop成为Apache TLP
  7. 2008.4 Hadoop打破世界纪录,成为最快排序
    1TB数据的系统

HDFS

一. 设计目标

  1. 硬件错误
    硬件错误是常态而不是异常。HDFS可能由成百上千的服务器所构成,每个服务器上存储着文件系统的部分数据。我们面对的现实是构成系统的组件数目是巨大的,而且任一组件都有可能失效,这意味着总是有一部分HDFS的组件是不工作的。因此错误检测和快速、自动的恢复是HDFS最核心的架构目标。

  2. 流式数据访问
    流式数据,特点就是,像流水一样,不是一次过来而是一点一点“流”过来。而你处理流式数据也是一点一点处理。如果是全部收到数据以后再处理,那么延迟会很大,而且在很多场合会消耗大量内存。

  3. 大规模数据集

  4. 简单的一致性模型
    早期版本的HDFS不支持任何的文件更新操作,一旦一个文件创建、写完数据、并关闭之后,这个文件就再也不能被改变了。为什么这么设计?是为了与MapReduce完美配合,MapReduce的工作模式是接受一系列输入文件,经过map和reduce处理,直接产生一系列输出文件,而不是在原来的输入文件上做原位更新,因为直接输出新文件比原位更新一个旧文件高效的多

二. 系统结构


HDFS/MapReduce及应用_第1张图片

Namenode执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录,它也负责确定数据块到具体Datanode节点的映射。
Datanode负责处理文件系统客户端的读写请求,在Namenode的统一调度下进行数据块的创建、删除和复制。

三. 元数据
元数据一般有三种类型,都会被保存在NameNode内存中

  1. 文件和目录自身的属性信息,例如文件名、目录名、父目录信息、文件大小、创建时间、修改时间等
  2. 文件到文件块的映射,如:那个文件由几个文件块(Block)组成,副本个数
  3. 文件块的位置信息,组成Block的文件块持久化在那几个DataNode中

四. 元数据文件

  1. fsimage:元数据镜像文件。
    fsimage是HDFS文件系统存于硬盘中的元数据检查点,里面记录了自最后一次检查点之前HDFS文件系统中所有目录和文件的序列化信息
  2. edits:日志文件。
    edits保存了自最后一次检查点之后所有针对HDFS文件系统的操作,比如:增加文件、重命名文件、删除目录等等
  3. fstime:保存最近一次Checkpoint的时间。
  4. version:标志性文件,最后被创建,它的存在表明前三个文件的创建成功。

在NameNode启动时候,会先将fsimage中的文件系统元数据信息加载到内存,然后根据eidts中的记录将内存中的元数据同步至最新状态;所以,这两个文件一旦损坏或丢失,将导致整个HDFS文件系统不可用。

五. Secondary NameNode

HDFS/MapReduce及应用_第2张图片

解决的问题

  1. 只有在NameNode重启时,edit logs才会合并到fsimage文件中,从而得到一个文件系统的最新快照。但是在集群中NameNode是很少重启的,这也意味着当NameNode运行了很长时间后,edit logs文件会变得很大。
  2. NameNode的重启会花费很长时间,因为有很多改动要合并到fsimage文件上。
  3. NameNode单点,机器完全挂了,数据会丢失。
    为了避免edits日志过大,SecondaryNameNode设置一个检查点,会周期性的将fsimage和edits的合并,然后将最新的fsimage推送给NameNode,新的edit变更会写到edit.new里面,在进行后续切换。

六.读数据过程

HDFS/MapReduce及应用_第3张图片
HDFS/MapReduce及应用_第4张图片

七.写数据过程


HDFS/MapReduce及应用_第5张图片
HDFS/MapReduce及应用_第6张图片
HDFS/MapReduce及应用_第7张图片

Map-Reduce

一. 介绍:

  1. MapReduce能做:
    日志分析
    商业智能分析
    客户营销
    大规模索引

  2. MapReduce不能:
    在线应用
    复杂依赖逻辑(循环、递归?)

二. 流程
举个例子:
一个非常大的数据文件,需要计算文件中每个单词出现频率

HDFS/MapReduce及应用_第8张图片
HDFS/MapReduce及应用_第9张图片
HDFS/MapReduce及应用_第10张图片

应用

HDFS/MapReduce及应用_第11张图片

你可能感兴趣的:(HDFS/MapReduce及应用)