当前位置:文档之家› Hadoop介绍+环境搭建

Hadoop介绍+环境搭建


问题:节点失效是常态!
• DataNode中的磁盘挂了怎么办? • DataNode所在机器挂了怎么办? • NameNode挂了怎么办? • Client挂了怎么办?
DataNode的磁盘挂了怎么办?
• DataNode正常服务 • 坏掉的磁盘上的数据尽快通知NameNode
DataNode所在机器挂了怎么办?
• ②软件环境 软件统一安装在虚拟机系统VMware上, Linux系统采用Ubuntu,jdk使用jdk1.6.0 版,Hadoop使用hadoop-0.20.2版本。
2.准备工作
• ①虚拟机VMware的安装 下载安装软件并分别在3台机器上安装。由 于3台机器的某盘剩余空间都较大,统一将 VMware安装在某盘上,分配磁盘空间时统 一分配为10G。
• ② Ubuntu的安装 新建虚拟机,加载Linux系统Ubuntu的iso镜 像文件,并在VMware环境下安装Ubuntu 系统。
在《hadoop the definate guide》的P227的 “secondary sort”章节中,以<year,temperature>为例, 在map阶段按照year来分发temperature,在reduce阶段 按照同一year对应的temperature大小排序。
MapReduce
• 问:NameNode怎么知道DataNode挂掉了 ?
• 答:datanode每3秒钟向namenode发送心 跳,如果10分钟datanode没有向 namenode发送心跳,则namenode认为该 datanode已经dead,namenode将取出该 datanode上对应的block,对其进行复制。
• 高效。通过分配数据,Hadoop能够在存放数据的节点之 间平行的处理它们,因此其处理速度非常快。
• 可信。Hadoop能够自动保存数据的多份副本,并且能够 自动地将失败的任务重新分配
谢谢!
Hadoop环境搭建
1.安装环境
• ①硬件环境 实验共使用三台PC机,一台机器用作 NameNode,另两台用作DateNode。
HDFS:文件读取流程图
HDFS client
1:open 3:read
6:close
client JVM
client node
Distributed FileSystem
FSData InputStream
4:read
2:get block locations
NameNode namenode
5:read
DataNode datanode
DataNode datanode
DataNode datanode
HDFS:文件写入流程图
HDFS client
1:create 3:write
6:close
client JVM
client node
Distributed FileSystem
FSData InputStream
Namenode是一个中心服务 器,负责管理文件系统的名 字空间和客户端对文件的访 问。
Datanode在集群中一般是一 个节点一个,负责管理它所在 节点上的存储。
HDFS:Namenode 和 Datanode
HDFS把节点分为两类:Namenode和Datanode。 Namenode是唯一的,程序与之通信,然后从Datanode上
独立的数据块,由Map任务(Task)以完全并行的方式处 理它们 • MapReduce框架会先排序map任务的输出,然后把结果 输入到reduce任务
• 通常计算结点和存储结点是同一个结点,也就是说 MapReduce框架和HDFS是运行在相同的结点集上。
• MapReduce框架是由一个单独运行在主结点的 JobTracker和运行在每个集群从结点的TaskTracker(任 务跟踪)共同构成。
4.HDFS基本结构
HDFS基本储存单元——
Block(数据块)
一个文件有可能包含多个块,一个块有可以包含多个文件,由 文件的大小和块大小的参数决定。
HDFS结构特点
HDFS是一个大规模的分布式文件系统,采用master/slave架构。 一个HDFS集群是有一个Namenode和一定数目的Datanode组成。
3.Hadoop分布式文件系统(HDFS)简介
Hadoop也跟其他云计算项目有共同点和目标:实现海量数 据的计算。而进行海量计算需要一个稳定的、安全的数据容器, 于是就有了Hadoop分布式文件系统(HDFS)。
Hadoop 分布式文件系统是具有高可靠性和高可扩展性的 分布式文件系统,能够提供海量的文件存储能力。它的开发 和实现遵循了Google 文件系统(GFS)的核心原理,受到 了业界极大关注,并已被广泛应用。
MapReduce
举例:WordCount的Map 过程 WordCount的Reduce 过程
举例:事例MapReduce过程
Hadoop优势:
• 可扩展。不论是存储的可扩展还是计算的可扩展都是 Hadoop的设计根本。
• 经济。它在通常可用的计算机集簇间分配数据和处理,这 些集簇可以被计入数以千计的节点当中
HDFS:数据复制
HDFS被设计成能够在一个大集群中跨机器可靠地存储超大文 件。它将每个文件存储成一系列的数据块,除了最后一个,所有 的数据块都是同样大小的。
为了容错,文件的所有数据块都要备份有副本。每个文件的数 据块大小和副本数目都是可配置的。应用程序可以指定某个文件 的副本系数。
HDFS:数据复制
• Secondary NameNode
– 将NameNode的fsimage (HDFS元数据镜像文件 )与edit log(HDFS文件改动日志)从Namenode 复制到临时目录
– 将fsimage同edit log合并,并产生新的fsimage ( 减少启动时间)
– 将产生的新的fsimage上传给NameNode – 清除NameNode中的edit log
注:可以修改compareTo来实现自己所需的比较算法
MapReduce的二次排序
Hadoop的MapReduce模型支持基于key的排序, 即在一次MapReduce之后,结果都是按照key的大小排序 的。但是在很多应用情况下,我们需要对映射在一个key 下的value集合进行排序,即“secondary sort”。
1.Hadoop概述
Hadoop是一个分布式系统基础架构,是一个能够对大量 数据进行分布式处理的软件框架,由Apache基金会开发。 用户可以在不了解分布式底层细节的情况下,开发分布式程 序,充分利用集群的的威力高速运算和存储。
Hadoop框架中最核心的设计就是:MapReduce和HDFS。
Hadoop程序目前大多运行在Linux系统上,windows上运行 需要安装其他插件(Cygwin)。
Map/Reduce 数据流程
• Input • Split (可缺省,由系统完成) • Recordreader (可缺省,由系统完成) • Mapper • Combiner (可缺省) • Shuffler(partitionner)(可缺省,由系统完成) • Sort (可缺省,由系统完成) • Reducer (可缺省) • Output
[注]: Secondary NameNode仅仅对NameNode中 元数据提供冷备方案
Secondary NameNode
辅助NN处理FsImage和事务日志 1、从NN拷贝FsImage和事务日志到临时目录 2、合并FsImage和事务日志生成一个新的FsImage 3、上传新的FsImage到NN上 4、NN更新FsImage并清理原来的事务日志
• Map-Reduce 计算模型的实现 – 大规模数据处理的框架 • 所有数据作为KEY-VALUE对进行处理 – 嵌入用户数据处理程序
• 简单计算模型,但可以处理很多不同类型的问题 – 日志数据处理 – 搜索引擎
Hadoop Map-Reduce
对于任务处理的两步: • 一个MapReduce作业(Jop)通常会把输入集切分成若干
HDFS集群框架图
5.HDFS的文件操作
HDFS:文件读取和写入基本过程
读取文件: • Client向NameNode发起文件读取的请求 • NameNode返回文件存储的DataNode的信息 • Client读取文件信息 写入文件: • Client向NameNode发起文件写入的请求 • NameNode根据文件大小和文件块配置情况返回给Client它 所管理部分DataNode的信息 • Client将文件划分为多个文件块,根据DataNode的地址信息 按顺序写入到每一个DataNode块中
MapReduce处理
MapReduce物理上处理过程
MapReduce
MapReduce的key排序逻辑
MapReduce本身Key的数据类型的排序逻辑其实就是依 赖于Hadoop本身的继承与WritableComparable<T>的基本数 据类型和其他类型(相关类型可参考《Hadoop权威指南》第二 版的90页)的compareTo方法的定义。 Key排序的规则:
4:write packet
5:Байду номын сангаасck packet
2:create 7:complete
NameNode namenode
4:
4:
Pipeline of
DataNode
DataNode
DataNode
datanodes
5:
5:
datanode
datanode
datanode
HDFS中的文件都是一次性写入的,并且严格要求在任何时候 只能有一个写入者。
相关主题