自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xhh198781的专栏

http://weibo.com/u/1988047825

  • 博客(26)
  • 资源 (4)
  • 收藏
  • 关注

原创 HDFS中的数据存储路径——StorageDirectory

在HDFS中,无论是NameNode节点还是DataNode节点都需要使用它们所在的本地文件系统来存储与自己相关的数据,如:NameNode节点存储系统命名空间的元数据,DataNode节点存储文件的数据块数据。对于NameNode节点或是DataNode节点,我们多可以为它们配置多个本地文件系统的存储路径,不同的是,NameNode节点中的所有存储路径存储的数据基本上是一样的,而DataNode

2011-12-31 19:03:47 13029 1

原创 HDFS中的回收站

在Linux操作系统下面,如果用户删除了某一个文件或者是某一个文件目录,操作系统并不会把这文件从文件系统中真正删除,而是先把它放入回收站中,这样在用户误操作的情况下还能找回原文件,以防止给用户造成中大损失。实际上,HDFS也为用户提供了类似这样的一个功能,但是这样的功能只限于用户在客户端的脚本操作,也就是HDFS的shell命令,而当用户写程序调用HDFS的API时,NameNode并不会把删除的

2011-12-30 22:15:08 4546

原创 NameNode对域名/IP的解析——DNSToSwitchMapping

前面介绍Networktopology结构的时候就说过,NameNode把注册的DataNode节点按照他们的ip地址存储到一个树状网络拓扑图中(对应Networktopology的一个实例),然后NameNode调用ReplicationTargetChooser来为每一个数据块副本选择合适的存储节点。那么,NameNode是如何把一个数据节点按照它的ip解析到对应的树状网络拓扑图中的一个叶子节

2011-12-29 19:08:36 2838

原创 HDFS的副本存放策略——ReplicationTargetChooser

HDFS作为Hadoop中的一个分布式文件系统,而且是专门为它的MapReduce设计,所以HDFS除了必须满足自己作为分布式文件系统的高可靠性外,还必须为MapReduce提供高效的读写性能,那么HDFS是如何做到这些的呢?首先,HDFS将每一个文件的数据进行分块存储,同时每一个数据块又保存有多个副本,这些数据块副本分布在不同的机器节点上,这种数据分块存储+副本的策略是HDFS保证可靠性和性能的

2011-12-28 21:38:21 8231 20

原创 NameNode中数据节点的保存(2)——NetworkTopology

在前面的一篇文章中,我分析了NameNode用来保存DataNode节点的一种数据结构——Host2NodesMap类,它被用来存储主机与DataNode节点之间的映射,同时NameNode用这个数据结构来计算整个集群的负载情况,在本文,我将介绍另一种DataNode节点的存储结构——NetworkTopology。NetworkTopology类将整个集群中的DataNode节点存储成了一个树状

2011-12-27 17:39:34 2945

原创 NameNode中数据节点的保存(1)——Host2NodesMap

对于一台主机,我们可以在它上面部署多个DataNode进程,这也就是说在一台机器上有多个DataNode节点,而且这些DataNode节点属于同一个HDFS集群,那么这里就有一个问题了,NameNode节点是如何考虑整个集群的负载均衡的?如果NameNode节点以DataNode节点为单位来考虑负载均衡的话,就会出现包含有多个DataNode节点的主机负载过重,所以就不得不以主机为单位来计算集群的

2011-12-27 15:21:18 1928

原创 客户端提交作业时发生的一个常见错误

很多朋友在刚开始学习Hadoop的时候,都会以类似于下面的一个例子来开始自己的hadoop学习之旅:public class MyHadoopCounter {  public static class MyHadoopMapper extends Mapper {    @Override  protected void map(LongWritable key, Tex

2011-12-25 18:34:01 2410 1

原创 Reduce任务的Map输出复制器—ReduceCopier

在前面介绍Hadoop的Reduce任务执行框架的时候说过,作业的每一个Map任务被执行完之后,它们的输出结果均保存在各自执行节点的本地磁盘上,当reduce任务执行的时候,它需要自己去到所有的Map节点上取回属于自己的map输出,直到属于自己的所有map输出copy到本地,reduce任务才开始接下来的工作。那么,Reduce是如何从Map节点取回自己的输入数据呢?这就是本文即将要详细讲述的内容

2011-12-22 21:47:40 2667

原创 Hadoop中Reduce任务的执行框架

在前面的一系列文章中我主要围绕Hadoop对Map任务执行框架的设计与实现展开了详细的讨论,记得在博文Hadoop中Map任务的执行框架中说过还要为大家详细地描述Hadoop对Reduce任务执行框架的设计,那么在本文,我将兑现这个承诺。     其实,Hadoop中Reduce任务执行框架跟它的Map任务执行框架大致是很相似的,唯一的不同之处就是他们的数据输入来源、数据输出目的地不一样而已。

2011-12-20 19:53:15 2889

原创 Hadoop中的排序器/组合器/合并器

目前,海量数据处理主要存在二个问题:大规模计算(cpu+mem)、海量数据存储(disk),而Hadoop被专门设计用来针对海量数据的处理,它通过分布式文件系统解决海量数据的存储问题,组织成千上万个计算节点来共同完成一个任务解决了大规模计算问题。Hadoop的核心是MapReduce,而不是分布式文件系统HDFS,这是因为MapRduce所依赖的存储系统并不依赖于任何一个文件系统,甚至是分布式文件

2011-12-19 21:20:53 1654

原创 Map执行时的RecordWriter实现之NewOutputCollector

在前面的一系列文章中我不断的提到了记录写入器RecordWriter,它是一个抽象类,在map任务执行中的根本作用就是向某个文件系统的文件中写入map任务的输出结果——key-value集。所以,本文将主要讨论MapTask对记录写入器RecordWriter的一个具体实现类——NewOutputCollector,来好好的看看这个NewOutputCollector对map任务的输出key-va

2011-12-18 17:20:03 2249

原创 Hadoop对Map执行框架的实现(TaskTracker端)

在前一篇文章中,我从客户端详细的讲解了Hadoop对Map执行框架的实现,即客户端可以自己定义或实现给map操作输入怎样的key-value值、map操作、如何根据map输出的key进行排序、如何对map输出的key-value集合进行合并等。用户在提交作业之前对它进行这些进行相应的配置即可。那么,TaskTracker在真正执行作业的任务时是如何根据用户的设置信息来把Map任务相关操作组合成一个

2011-12-17 14:22:59 2836 1

原创 Hadoop对Map执行框架的实现(客户端)

在前一篇博文:Hadoop中Map任务的执行框架中,我花了大力气把Map任务在TaskTracker节点上的具体执行过程抽象出了框架,这个框架主要涉及到这些组件:map任务执行器Mapper、map任务执行上下文环境Context、任务报告器TaskReporter,而实际上,Context由两个子组件构成:记录读取器RecordReader、记录写入器RecordWriter。所以我将在接下来一

2011-12-16 22:51:09 1979

转载 浅谈ReentrantLock

Condition只是一个接口,怎么可以直接调用它的方法呢?于是查源码(发现这个东西才是最彻底的),从ReentrantLock开始,ReentrantLock.newCondition()->Sync.newCondition() Sync是一个静态抽象的内部类->ConditionObject 看来这个类最终实现了Condition接口->AbstractQueuedSynch

2011-12-16 15:24:12 1732

原创 Hadoop中Map任务的执行框架

在前面的一片博文中,我重点讲述了Task被TaskTracker调度执行的原理及过程,但是在详细的介绍执行Task的过程细节之前,我想先来认真的讨论一下Map Task和Reduce Task的执行框架。当然本文主要集中在Map Task上,至于Reduce Task的相关内容,我会在下一篇博文中谈到。在这篇文章中,我将尽量给出一个最抽象的Map模型     在Hadoop的MapRduce中

2011-12-14 22:29:21 4191

原创 Task在TaskTracker上执行环境的准备

在前面的文章中,我详细的介绍了Job的任务分解以及Job任务的调度,同时也讲述了TaskTracker是每一通过向JobTracker发送心跳包heartbeat并从其响应中获取自己被分配的任务的。那么,在TaskTracker中,它是如何来执行这些Task的呢,或者说为这个Task的执行做了哪些准备工作呢?    其实,在一个TaskTracker节点中,每一Task的执行并不是在当前这个T

2011-12-12 21:51:25 2975 2

原创 Linux下Mysql的一些操作

1、Linux下启动Mysql的命令:/etc/init.d/mysql start2、关闭Mysql的命令:/etc/init.d/mysql shutdown3、重启Mysql的命令:/etc/init.d/mysql restart4、创建用户:grant 权限(all代表所有权限) on database_name.* to userNmae@"%" ident

2011-12-12 08:55:26 1070

原创 如何释放已删除的InnoDB磁盘空间

Innodb数据库对于已经删除的数据只是标记为删除,并不真正释放所占用的磁盘空间,这就导致InnoDB数据库文件不断增长。如果想彻底释放这些已经删除的数据,需要把数据库导出,删除InnoDB数据库文件,然后再倒入。 下面是基本的步骤:1 使用mysqldump命令将InnoDB数据库导出2 停止MySQL3 删除所有InnoDB数据库文件和日志4 启动MySQL并自动重建InnoD

2011-12-11 21:28:26 855

转载 十道海量数据处理面试题与十个方法大总结

本文转自风生水起的博文:http://www.cnblogs.com/end/archive/2011/06/01/2067207.html第一部分、十道海量数据处理面试题  1、海量日志数据,提取出某日访问百度次数最多的那个IP。  此题,在我之前的一篇文章算法里头有所提到,当时给出的方案是:IP的数目还是有限的,最多2^32个,所以可以考虑使用hash将ip直接存入内存

2011-12-10 18:56:12 1640

原创 Job的map任务分配

在前面的博文中,我介绍了Job的调度以及Job的任务分解,但对于Job的调度我只是从宏观的角度作了详细的说明,而关于JobInProgress具体是如何给TaskTracker分配本地Map Task和非本地MapTask的,将是本文将要讲解的重点。      先来看看JobInProgress是如何定义本地Map Task的。在前面的博文:Job的任务分解中,我自己给出了一个关于“预分配ma

2011-12-09 20:05:47 2507

原创 Job的任务分解

在前面的博文JobTracker任务调度器之JobQueueTaskScheduler中,我讲述Job任务调度的时候简单地讲述了一下Job任务的分解,也就是将一个作业Job切分为一个个相对独立的map任务,以及后面的reduce任务。那么,Hadoop的Mapreduce,确切的说是JobTracker是如何来分解作业Job的呢?当然,在JobTracker中并不把这个动作叫做作业分解,而是叫做“

2011-12-08 17:33:58 2888 6

转载 Hadoop公平调度器算法解析

1. 目的本文描述了hadoop中的公平调度的实现算法,公平调度器是由facebook贡献的,适合于多用户共享集群的环境的调度器,其吞吐率高于FIFO,论文参见参考资料[1]。本文分析的Hadoop版本是0.20.2,在新版本(0.21.0)中,公平调度算法已经有了改进与增强。本文组织结构如下:1)目的    2)公平调度介绍  3)公平调度算法分析 4)新版hadoop中公平调度器的新特性

2011-12-06 19:29:51 4597

原创 JobTracker任务调度器之JobQueueTaskScheduler

在客户端把作业提交给JobTracker节点之后,JobTracker节点就可以使用任务调度器TaskScheduler将这个Job的任务分配给那些合适的TaskTracker节点来执行。当然在JobTracker调度该Job之前,必须要确保该Job的JobInProgress被初始化了,即将Job划分为若干个map任务和reduce任务。在JobTracker中有一个基于优先级的FIFO任务调度

2011-12-06 19:15:01 8329 19

原创 JobTracker的操作权限管理——QueueManager

在JobTracker中,有这样的一个属性queueManager,它的类型是org.apache.hadoop.mapred.QueueManager,那么它被JobTracker用来干啥的呢?在上一篇博文中,我们已经大概知道了,JobTracker使用QueueManager来验证一个用户对Job是否具有某些操作权限,如提交等。所以在本文,我将集中讨论QueueManager类。   先来

2011-12-04 16:05:33 1999

原创 Job的提交——JobTracker

在上一篇博文中,我着重谈到了客户端的JobClient对一个作业的提交所做的工作,那么在本文,我就要好好的谈一谈JobTracker为作业的提交到底干了那些个事情——一.为作业生成一个Job;二.接受该作业。      通过上一篇博文,我们都知道,客户端的JobClient把作业的所有相关信息都保存到了JobTracker的系统目录下(当然是HDFS了),这样做的一个最大的好处就是客户端干了它

2011-12-04 14:44:12 1969 8

原创 Job的提交—客户端

使用过Hadoop的MapReduce API的人大概都知道在我们配置好作业之后,就可以向JobTracker提交该作业了,然后JobTracker才能安排适当的TaskTracker来完成该作业。那么MapReduce在这个过程中到底做了那些事情呢?这就是本文以及接下来的一片博文将要讨论的问题,当然本文主要是围绕客户端在作业的提交过程中的工作来展开。先从全局来把握这个过程吧!

2011-12-03 21:37:38 1805 1

Java语言编写的Windows下的小时钟

Java语言编写的Windows下的小时钟

2010-06-06

用汇编语言编写的打字游戏

用PC汇编语言编写的打字游戏,能够记时间和分数

2010-06-06

操作系统习题集下载1

操作系统习题集,比较全面的习题,包括Linux操作系统的习题部分

2009-05-19

Java获取系统内存信息

使用Java的JNI技术来获取系统内存的信息

2009-04-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除