hadoop核心是:MapReduce和HDFS
(对应着job执行(程序)和文件存储系统(数据的输入和输出))



CRC32作数据交验:在文件Block写入的时候除了写入数据还会写入交验信息,在读取的时候需要交验后再读入。

安全模式:不能写或删文件。系统启动时检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。

Map之后还会有Shuffle(混合)的过程:对于提高Reduce的效率以及减小数据传输的压力有很大的帮助

mde调度,定期心跳监测

NameNode节点:管理HDFS文件系统的命名空间,维护着文

apreduce的原理

MapReduce就是“任务的分解与结果的汇总”,来自Google的一篇论文。MapReduce是使用简易的软件框架,把输入的数据集切分为若干独立的数据块,由map任务(task)并行处理。框架对map的输出排序后传给reduce任务。计算节点和存储节点通常在一起。

MapReduce框架由一个master的JobTracker和集群中每个节点slave的 TaskTracker组成,整个框架负责调度任务和监控,每个slave上执行任务,master监控所有任务的执行以及重启失败任务。

HDFS的三个实体:

数据块:默认为64MB(map的数据大小)。HDFS的文件划分为块大小。

DataNode节点:存储并检索数据块的工作节点,受NameNo件系统树及整棵树的所有的文件及目录。文件会以两个形式永久保存在本地磁盘上(命名空间镜像文件和编辑日志文件)。NameNode记录着文件的各个块所在的datanode信息。但并不永久保存这些块的位置信息,因为在系统启动时datanode会重建这些信息。

没有NameNode,文件系统将无法使用。NameNode损坏,则文件系统的所有文件丢失,因为不能根据DataNode的块来重建文件。所以NameNode的容错非常重要。

第一种机制:备份那些组成文件系统元数据持久状态的文件.通过配置使NameNode在多个文件系统上保存元数据的持久状态或将数据写入本地磁盘的同时,写入一个远程挂载的网络文件系统.当然这些操作都是原子操作.

第二种机制:运行一个辅助的NameNode(secondarynamenode)保存合并后的命名空间镜像的副本。但secondarynamenod保存状态会滞后一些,所以Name/Node发生故障时难免丢失数据。一般把存储在远程挂载的网络文件系统的数据复制到secondarynamenod并作为新NameNode运行

hadoop中Combiner的作用

、combiner实现本地key聚合:对map输出的key排序,value组成列表进行迭代。

、combiner还具有类似本地reduce功能,对key的value列表直接合并成统计值。如hadoop的wordcount例子和找出value的最大值的程序,combiner和reduce完全一致。

使用combiner,则map先本地聚合,提升效率。当value是数字列表时,则可以直接合并统计,而不必等到所有map结束再reduce合并统计。

combiner使用合适,可提升速度,如果不合适,则会导致出错。

Hadoop运行问题

运行的job分为map和reduce的任务task,由jobtracker监控,tasktracker在datanode上执行。详细介绍可以参考:

http://hi.baidu.com/fengvsjinglove/item/7e78060ff64f5c1a3b53ee7c

1.一个map可能在多个节点上运行:

如果map运行过慢,就会在别的节点上重开一个,两个谁先跑完就取谁的结果,然后杀掉另一个。

2.上百个节点左右的集群做hadoop版本升级:

升级一般都要一起升,因为是跨版本,如1.0升到2.0,则需要停集群。不同版本很多东西不兼容。如果是不跨版本,比如1.x中各版本之间升级则可以不用。

3.集群中分配给各节点的block块数越均衡性能越好:

一个DataNode上的Block是唯一的,多个DataNode可能有相同的Block。关于其通信机制参考http://blog.csdn.net/longshenlmj/article/details/16341315

4.每一个datanode会在每一个namenode里面去注册

datanode负责向namenode定时发送心跳。这样就解决了节点之间的单点故障,而jobtracker也根据它的资源管理和job生命周期管理,被拆分了,分别叫ResourceManager和ApplicationMaster。

ResourceManager 负责管理全局的资源和任务的分配。

ApplicationMaster负责管理任务的执行和协调。

Hadoop基本知识,(以及MR编程原理)的更多相关文章

  1. JavaScript异步编程原理

    众所周知,JavaScript 的执行环境是单线程的,所谓的单线程就是一次只能完成一个任务,其任务的调度方式就是排队,这就和火车站洗手间门口的等待一样,前面的那个人没有搞定,你就只能站在后面排队等着. ...

  2. Windows环境下多线程编程原理与应用读书笔记(1)————基本概念

    自从学了操作系统知识后,我就对多线程比较感兴趣,总想让自己写一些有关多线程的程序代码,但一直以来,发现自己都没怎么好好的去全面学习这方面的知识,仅仅是完成了操作系统课程上的小程序,对多线程的理解也不是 ...

  3. Atitit.并发编程原理与概论 attilax总结

    Atitit.并发编程原理与概论 attilax总结 1. 并发一般涉及如下几个方面:2 2. 线程安全性 ( 2.2 原子性 2.3 加锁机制2 2.1. 线程封闭3.3.1Ad-hoc线程封闭 3 ...

  4. windows编程原理

    这里在学网络编程时遇到了讲解windows的编程,稍微整理一下windows编程原理,顺便复习一下. 首先,理解Windows 程序运行原理:Windows应用程序,操作系统,计算机硬件之间的相互关系 ...

  5. JAVA基础知识之网络编程——-网络基础(Java的http get和post请求,多线程下载)

    本文主要介绍java.net下为网络编程提供的一些基础包,InetAddress代表一个IP协议对象,可以用来获取IP地址,Host name之类的信息.URL和URLConnect可以用来访问web ...

  6. Hadoop学习笔记(7) ——高级编程

    Hadoop学习笔记(7) ——高级编程 从前面的学习中,我们了解到了MapReduce整个过程需要经过以下几个步骤: 1.输入(input):将输入数据分成一个个split,并将split进一步拆成 ...

  7. socket编程原理

    socket编程原理 1.问题的引入 1) 普通的I/O操作过程: UNIX系统的I/O命令集,是从Maltics和早期系统中的命令演变出来的,其模式为打开一读/写一关闭(open-write-rea ...

  8. 第1章 网络编程基础(2)——Socket编程原理

    Socket编程原理 Socket是网络通信端点的一种抽象,它提供了一种发送和接收数据的机制. 流socket(SOCK_STREAM):双向.有序.无重复.并且无记录边界 数据报Socket(SOC ...

  9. Mybatis接口编程原理分析(三)

    前面两篇博客Mybatis接口编程原理分析(一)和Mybatis接口编程原理分析(二)我们介绍了MapperProxyFactory.MapperProxy和MapperMethod的操作及源码分析, ...

随机推荐

  1. springMVC源码分析--动态样式ThemeResolver(二)

    在上一篇博客springMVC源码分析--动态样式ThemeResolver(一)中我们介绍了多样式ThemeResolver的使用方法,接下来我们对源码进行简单的分析一下. ThemeResolve ...

  2. Java的多态及注意事项

    什么是多态: 多态不但能够改善代码的组织结构和可读性,还能够创建可扩展的程序.在Java中,所有的方法都是通过动态绑定实现多态的.将一个方法调用同一个方法主体关联起来被称作绑定.动态绑定的含义是在运行 ...

  3. 【移动开发】binder阻塞/非阻塞与单向/双向的问题

    The client thread calling transact is blocked by default until onTransact has finishedexecuting on t ...

  4. 3. React 组件生命周期介绍

            React 中的每个组件都有三个阶段,这三个阶段构成了组件完整的生命周期.组件的生命周期为]); return; } this.setState({name: event.target ...

  5. 详解EBS接口开发之库存事务处理批次更新

    库存事务处理批次有时候出现导入错误需要更新可使用次程序更新,批次导入可参考博客 详解EBS接口开发之库存事务处理-物料批次导入 http://blog.csdn.net/cai_xingyun/art ...

  6. 高通平台MSM8916LCM模块移植(一)-bootloader部分

    此次移植打算分成两个模块来说,bootloader部分和kernel部分.在实际的移植调试过程中也是这么分成了两个部分分别调试. 高通平台中的bootloader叫做LK(Little Kernel, ...

  7. 【嵌入式开发】嵌入式 开发环境 (远程登录 | 文件共享 | NFS TFTP 服务器 | 串口连接 | Win8.1 + RedHat Enterprise 6.3 + Vmware11)

    作者 : 万境绝尘 博客地址 : http://blog.csdn.net/shulianghan/article/details/42254237 一. 相关工具下载 嵌入式开发工具包 : -- 下 ...

  8. jquery 只读

    大家都理解这是什么,正常的写法如下: if (status == true) { $("#minDelistStr").val(totalAmount);// 去掉首部的" ...

  9. iOS中 Swift初级入门学习(二)

    // Copyright (c) 2015年 韩俊强. All rights reserved. // import Foundation /* // 控制语句 // for - in // 遍历字符 ...

  10. 存储那些事儿(三):OpenStack的块存储Cinder与商业存储的融合

    OpenStack是一个美国国家航空航天局和Rackspace合作研发的云端运算‎软件,以Apache许可证授权,并且是一个自由软件和开放源代码项目.OpenStack是IaaS(基础设施即服务)‎软 ...