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的操作及源码分析, ...
随机推荐
- springMVC源码分析--HandlerInterceptor拦截器(一)
对SpringMVC有所了解的人肯定接触过HandlerInterceptor拦截器,HandlerInterceptor接口给我们提供了3个方法: (1)preHandle: 在执行controll ...
- Android4.3 屏蔽HOME按键返回桌面详解(源码环境下)
点击打开链接 首先声明我是做系统开发的(高通平台),所以下面介绍的方法并不适合应用开发者. 最经有个需求要屏蔽HOME按键返回桌面并且实现自己的功能,发现以前的方式报错用不了,上网搜索了一下,发现都是 ...
- Java基本语法-----java运算符
这块的东西比较多 我写了太慢了 于是在word里写好贴出来供大家一起学习 运算符 -赋值运算符 -比较运算符 -逻辑运算符 -位运算符 -移位操作符 -三元运算符 [正在看本人博客的这位童鞋,我看你气 ...
- java中抽象类的定义和使用
java虽然比较简单,但是细节的知识点还是很多的,现在,介绍一下抽象类的定义和实现基础. 指的是在类中定义方法,而不去实现它,而在它的子类中去具体实现,继承抽象类的子类必须实现父类的抽象方法,除非子类 ...
- Swift基础之对FMDB第三方的使用方法
相信大家都熟悉OC使用FMDB第三方库,进行数据库操作,增.删.改.查,现在我就来利用代码展示一下Swift对此库的使用方法,我是通过Pods添加的第三方库,如果手动添加记得创建桥接文件,在文件中调用 ...
- maven隐式依赖引起的包冲突
包冲突 使用maven管理项目时可能会遇到包冲突的情况比如:log4j-over-slf4j.jar 和 slf4j-log4j12.jar这两个包同时一起运行时就会有问题. 这种冲突可能是显式依赖导 ...
- Linux2.6 --系统调用处理程序
用户空间的程序无法直接执行内核代码.它们不能直接调用内核空间中的函数,因为内核驻留在受保护的地址空间上.如果进程可以直接在内核的地址空间上读写的话,系统的安全性和稳定性将不复存在. ...
- iOS开发关于适配iOS10以及Xcode8的相关新知识
一.证书管理 用Xcode8打开工程后,比较明显的就是下图了,这个是苹果的新特性,可以帮助我们自动管理证书.建议大家勾选这个Automatically manage signing(Ps.但是在bea ...
- J2EE学习从菜鸟变大鸟之六 EJB(Enterprise JavaBean)企业级Java组件
EJB (EnterpriseJavaBean)是J2EE的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准.其特点包括网络服务支持和核心开发工具(SDK).其称为Java 企业Bean,是 ...
- ORACLE EBS常用表及查询语句(最终整理版)
建议去看参考二 参考一: call fnd_global.APPS_INITI ...