我爱编程

hadoop 学习笔记

2016-05-31  本文已影响442人  794de449c8d3

MR的优势

MapReduce与SETI(Search fo Extra—Terrestrial Intelligence)搜索外星智慧 的计划不同之处是,SETI的确招募了全球大量的志愿计算机,不过它所发散出去的task是CPU高密度计算任务,广大志愿者贡献的是CPU周期,而不是网络带宽。例如需要处理存储在HDFS上的log,海量的log统计需要切分任务,第一步要把各个任务所需资源传输到所在的计算节点,这里依赖大量的网络带宽。各个计算节点在maptask阶段完全并行,计算结果输出到HDFS上再进行分桶排序,进入到reduce阶段。

MR过程

HDFS

HDFS的设计
HDFS数据块

NAMENODE AND DATANODE

client 与HDFS、NameNode、DataNode之间的数据流:

  • client通过调用open方法打开希望读取的文件,HDFS通过RPC调用namenode ,namenode返回文件每个块的序列+datanode地址。

Hadoop的IO操作

  • 数据完整性:
    数据第一次引入HDFS前计算校验和,在通过不可靠的通道进行传输之后再次计算校验和。其中写数据的client将数据及其校验和发送到一系列datanode组成的管道线,管道线中的最后一个datanode负责验证校验和。
    不仅如此,每个datanode也会在后台线程运行一个datablockscanner,定期验证存储在这个datanode上的所有数据块。

序列化

  • 序列化定义:序列化(serialization)是指将结构化对象转化为字节流一般在网络上传输或者写入磁盘永久存储的过程。反序列化(deserialization)是指将字节流转回结构化对象的逆过程。

HIVE VS HBASE

  • HIVE 数据仓库存储,一次存储,多次访问。可用partition分桶存储,一般适用于全盘扫描的需求,例如分桶统计数据需要访问某桶内全部数据,如果想要查询某跳数据,显然不是Hive擅长的工作,因为其没有索引。

调度框架背景

在目前版本以及0。20版本系列中,mapred.job.tracker决定了执行MR程序的方式,如果被设置为local,则在单个JVM上运行整个作业,小数据集单机测试,如果被设置成主机+端口号,运行器将作业交给该地址的jobtracker。hadoop2.0引入了一种新的执行机制,称为MR2,建立在一个名为YARN的系统上。目前执行框架通过mapreduce.framework.name属性进行设置,local表示本地作业运行器,classic表示经典MR框架MR1,使用一个jobtracker和多个tasktracker,yarn表示新的框架。

经典MR框架组成

  • 客户端:
    1、提交MR作业,检查输出目录是否存在,计算作业的输入分片(因为输入路径已经给定,根据文件大小计算分片个数)
    2、将作业所需资源(作业JAR文件,配置文件和计算所得的输入分片)复制到一个以作业ID明明的目录下jobtracker的文件系统中,告知jobtracker作业准备执行(通过调用Jobtracker的submitJob()图中步骤4)
Streaming与tasktracker机器子进程之间的关系

YARN(MR2)

对于节点数量超出4000的大型集群,MR1系统开始面临拓展性的瓶颈,因此YARN(Yet Another Resource Nefotiator)

失败

作业的失败处理目前还不是很能影响到自身,所以优先将时间用在其它地方,此处留空

shuffle

UDF

上一篇 下一篇

猜你喜欢

热点阅读