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的操作及源码分析, ...
随机推荐
- SQL Server 执行计划操作符详解(2)——串联(Concatenation )
本文接上文:SQL Server 执行计划操作符详解(1)--断言(Assert) 前言: 根据计划,本文开始讲述另外一个操作符串联(Concatenation),读者可以根据这个词(中英文均可)先幻 ...
- jvm库对nio的处理
JVM的IO选择 查JVM源码时刚好看到JVM库的一段代码: public static SelectorProvider create() { String osname = AccessContr ...
- 初探linux子系统集之timer子系统(三)
因为现在的linux虽然还是可以使用低精度的timer,但是趋势是高精度hrtimer,所以上一篇试着翻译一下hrtimer的一些介绍,翻译的不是很好,看来英语还得好好学习啊,下面还是好好学习下lin ...
- Cocos2D iOS之旅:如何写一个敲地鼠游戏(九):创建动画
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...
- Spring事务管理与数据库隔离级别的关系(Spring+mysql)
之前写过一篇文章<数据库隔离级别(mysql+Spring)与性能分析 >,里面很多问题写的不是很专业,也不是很有逻辑性,现在重新整理一下,希望对大家有帮助. 这部分通过两天时间反复的 ...
- Linux:ssh_config快速访问服务器
在当前用户的根目录下: cd ~/.ssh vi config 编辑config内容为下面: ForwardAgent yes Host 1 Hostname 192.168.1.1 User roo ...
- android 中List转换String,String转换List 改进版本
原来博客地址http://blog.csdn.net/qq7342272/article/details/6830907 使用原作者贴的代码不是很好用,不能正常运行,所以我稍微改进了一下,特来分享给大 ...
- ADO.NET常用方法释义
先列个列表,下面的就是常用的数据库操作的方法. ExecuteNonQuery 释义:对链接执行的SQL语句,并返回受影响的行数(注意:用它来执行目录操作,如查询数据库的结构,创建表等数据库对象,或通 ...
- (NO.00003)iOS游戏简单的机器人投射游戏成形记(十七)
现在玩家选择机器人后,可以在屏幕上或手臂上点击来移动robot's arm了. 但是玩家选择一个机器人后没有视觉效果来表明哪个机器人被选中.玩家做了一个操作后没有视觉反馈会惹恼强迫症用户滴 ;) 这篇 ...
- Gradle 1.12 翻译——第九章 Groovy快速入门
由于时间关系,没办法同时做笔记和翻译,关于Gradle的用户指南,本博客不再做相关笔记,而只对未翻译章节进行翻译并在此发表. 有关其他已翻译的章节请关注Github上的项目:https://githu ...