Hadoop基本知识,(以及MR编程原理)
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编程原理)的更多相关文章
- JavaScript异步编程原理
众所周知,JavaScript 的执行环境是单线程的,所谓的单线程就是一次只能完成一个任务,其任务的调度方式就是排队,这就和火车站洗手间门口的等待一样,前面的那个人没有搞定,你就只能站在后面排队等着. ...
- Windows环境下多线程编程原理与应用读书笔记(1)————基本概念
自从学了操作系统知识后,我就对多线程比较感兴趣,总想让自己写一些有关多线程的程序代码,但一直以来,发现自己都没怎么好好的去全面学习这方面的知识,仅仅是完成了操作系统课程上的小程序,对多线程的理解也不是 ...
- Atitit.并发编程原理与概论 attilax总结
Atitit.并发编程原理与概论 attilax总结 1. 并发一般涉及如下几个方面:2 2. 线程安全性 ( 2.2 原子性 2.3 加锁机制2 2.1. 线程封闭3.3.1Ad-hoc线程封闭 3 ...
- windows编程原理
这里在学网络编程时遇到了讲解windows的编程,稍微整理一下windows编程原理,顺便复习一下. 首先,理解Windows 程序运行原理:Windows应用程序,操作系统,计算机硬件之间的相互关系 ...
- JAVA基础知识之网络编程——-网络基础(Java的http get和post请求,多线程下载)
本文主要介绍java.net下为网络编程提供的一些基础包,InetAddress代表一个IP协议对象,可以用来获取IP地址,Host name之类的信息.URL和URLConnect可以用来访问web ...
- Hadoop学习笔记(7) ——高级编程
Hadoop学习笔记(7) ——高级编程 从前面的学习中,我们了解到了MapReduce整个过程需要经过以下几个步骤: 1.输入(input):将输入数据分成一个个split,并将split进一步拆成 ...
- socket编程原理
socket编程原理 1.问题的引入 1) 普通的I/O操作过程: UNIX系统的I/O命令集,是从Maltics和早期系统中的命令演变出来的,其模式为打开一读/写一关闭(open-write-rea ...
- 第1章 网络编程基础(2)——Socket编程原理
Socket编程原理 Socket是网络通信端点的一种抽象,它提供了一种发送和接收数据的机制. 流socket(SOCK_STREAM):双向.有序.无重复.并且无记录边界 数据报Socket(SOC ...
- Mybatis接口编程原理分析(三)
前面两篇博客Mybatis接口编程原理分析(一)和Mybatis接口编程原理分析(二)我们介绍了MapperProxyFactory.MapperProxy和MapperMethod的操作及源码分析, ...
随机推荐
- COM原理与实现之二: 聚合
COM原理与实现之二: 聚合 C++没有同聚合等价的特性.聚合实际上是继承性的一种动态形式.而C++的继承总是静态的,是实现继承.COM是接口继承,通过聚合接口,可以做成动态配置. 研究COM,主要是 ...
- TBschedule入门
tbschedule 淘宝的wiki: http://code.taobao.org/p/tbschedule/wiki/index/ 截取内容如下: 此文档内部包括: 1.设计目标说明 2.主要概念 ...
- TCP连接建立系列 — 客户端的端口选取和重用
主要内容:connect()时的端口选取和端口重用. 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd 端口选取 connect()时本地端口是如何选取的呢 ...
- (一一九)通过CALayer实现阴影、圆角、边框和3D变换
在每个View上都有一个CALayer作为父图层,View的内容作为子层显示,通过layer的contents属性决定了要显示的内容,通过修改过layer的一些属性可以实现一些华丽的效果. [阴影和圆 ...
- iOS中 项目开发易错知识点总结 韩俊强的博客
每日更新关注:http://weibo.com/hanjunqiang 新浪微博! 点击return取消textView 的响应者 - (BOOL)textFieldShouldReturn:(UI ...
- Uva - Uva272 - TEX Quotes
TeX is a typesetting language developed by Donald Knuth. It takes source text together with a few ty ...
- 【翻译】Ext JS 6.2 早期访问版本发布
原文:Announcing Ext JS 6.2 Early Access 非常开心,Sencha Ext JS 6.2早期访问版本今天发布了.早期访问版本的主要目的是为了让大家进行测试并评估Ext ...
- 【java集合框架源码剖析系列】java源码剖析之java集合中的折半插入排序算法
注:关于排序算法,博主写过[数据结构排序算法系列]数据结构八大排序算法,基本上把所有的排序算法都详细的讲解过,而之所以单独将java集合中的排序算法拿出来讲解,是因为在阿里巴巴内推面试的时候面试官问过 ...
- Sharepoint2013部署ADFS 报new-sptrustedIdentityTokenIssuer:the trust provider certificate already exist
在做sharepoint2013的adfs部署时,根据MSDN的步骤到新建身份验证程序时,powershell中报"ADFS new-sptrustedIdentityTokenIssuer ...
- 【Unity Shader实战】卡通风格的Shader(一)
写在前面 本系列其他文章: 卡通风格的Shader(二) 呜,其实很早就看到了这类Shader,实现方法很多,效果也有些许不一样.从这篇开始,陆续学习一下接触到的卡通类型Shader的编写. 本篇的最 ...