自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序猿进化笔记

好记性不如烂笔头 微博:http://www.weibo.com/u/1840676045

  • 博客(23)
  • 资源 (16)
  • 收藏
  • 关注

原创 HDFS1.0源代码解析—DataNode启动(一)

DataNode的启动实在DataNode.java中进行的,具体启动流程如下:    public static void main(String args[]) { secureMain(args, null); }在secureMain中调用createDataNode方法,该方法public static DataNode createDataNode(Strin

2012-05-03 13:53:07 1197

原创 HDFS1.0源代码解析—数据传输和接受的类BlockSender和BlockReceiver

本次主要介绍DN端进行数据传输和接受的类BlockSender和BlockReceiver,其中BlockSender是读取DN本地block数据传送回数据请求端,BlockReceiver是接受存储数据,写入到本地的block中。首选介绍BlockSender的主要函数的作用:构造函数 94 this.blockLength = datanode.data.getVi

2012-07-21 10:59:58 2805

原创 HDFS1.0源代码解析—DataNode数据接收线程DataXceiverServer与DataXceiver解析

在介绍DataXceiverServer线程之前首先介绍一下,DN启动后一直执行的线程(也就是服务线程)哪些。首选DN本身就是一个线程类,该线程必然会一直执行。在DN的run方法中1432 // start dataXceiveServer1433 dataXceiverServer.start();1434 ipcServer.start();可以看出会启动

2012-07-18 21:45:49 3178

原创 HDFS1.0源代码解析—DataNode端数据存储和管理DataStorage和FSDataset解析

本部分主要介绍DN中的数据的存储和管理,我们知道从逻辑上来看我们把数据存储到HDFS这个文件系统中,但是具体数据在每个DN上是如何存储的呢,这其中就牵扯到几个比较大的类DataStorage、Storage、FSDataset等等。一开始读DN源代码这部分就搞得不是很清楚,现在理一下思路,也算给刚开始看得童鞋一些提示。在配置hdfs-site.xml的时候我们会配置这样一个选项 16

2012-07-16 16:32:50 3915

原创 HDFS1.0源代码解析—Hadoop的RPC机制之Server端解析

上一篇博客中结合DN的应用简单的介绍了一下Hadoop RPC中client端的基本执行流程,算是给大家阅读源代码的一点提示吧。本文将对RPC的Server端的机制做一下简单的分析,但愿对大家的理解有所帮助,也算是对自己工作的一点总结。按照惯例先来看一下Server类主要的组成部分Listener、Handler、Responser,通过名字很容易看出Server功能由三部分构成,负责获取用户

2012-07-10 00:18:42 2808 2

原创 HDFS1.0源代码解析—Hadoop的RPC机制之Client解析

好久没有更新Hadoop相关的博客了,实在是各种压力缠身,各种东西都没准备好,面对即将找工作有点没有了节奏。ok,开始说说今天的主题Hadoop的RPC机制,之所以在HDFS源码解析的系列中添加这部分的内容,是因为DN和NN交互使用的就是RPC的机制,而RPC机制这部分代码年前也是比较深入的研究过,但是是模仿RPC的机制进行分布式检索的实现。开始先介绍一下RPC几个主要的组成类RPC.ja

2012-07-07 00:38:28 6772 4

原创 算法题笔记

即将面临找工作的问题,记录下复习算法工程中遇到的比较好的题目和解法,欢迎大家讨论。1、请给出一个O(nlogn)的算法,使之能够找出一个n个数的序列中最长的单调递增子序列。这是算法导论中的一道课后题。解法一:利用求最长公共子序列的思想,将n个数的序列A先排序形成一个有序的序列B,然后利用动态规划的思想求A与B的最长公共子序列,得到的最长公共子序列就是所求的解。但是我们知道最长公

2012-06-22 17:50:28 1911 2

原创 C++入门系列——C++中的复制控制(复制构造函数、赋值函数和析构函数)、智能指针

这张图摘来酷壳(陈浩大神的博客),感觉他总结的这个图比较经典,至少我是深有感触,从一开始不顾任何规则乱写,到四处碰壁开始明白c++需要编程规则。一直以来都鼓吹自己是一个写C++的选手,但是说实话从来没有系统的打过C++的基础。对于C++的复制控制机制更是知之甚少,这里将结合C++primer中的相关章节谈一下自己的理解。 复制控制 首先解释下什么是复制控制,复制构造函数、赋

2012-06-09 21:42:13 2789

原创 cassandra1.1.0中Compaction部分源代码解析——LeveledCompactionStrategy

近两天事情有点小多,更新速度不太给力,当然这都是借口。Ok,开始LeveledCompactionStrategy的分析。 前篇博客中也提到Compaction启动是在cfs中进行的,其实流程就是调用相应Compaction的构造函数初始化对应的对象。具体构造函数的完成的任务如下:1)调用父类的构造函数,生成一个延时启动的线程,该线程的功能是在启动5分钟之后调用CompactionMa

2012-06-07 00:15:11 3598

原创 百度Star问题的思考

1、第一题:度度熊就是要第一个出场先说一下这个萌萌的题目不知出在哪位大神之手,表示压力山大。该题思路比较简单,(1) 首先计算小熊所在的列能否直接到达1,如果不能计算相邻的两个或一个(可能在最边上)列能否直接到达1,如果能,加一条横线可以实现。(2)如果(1)没有匹配成功,小熊行走一步,继续判断相邻的列能否到达1(该步判断需要删除高于小熊所在点的所有数据数据),如果能,加一条横线可

2012-06-04 23:16:43 1712

原创 Cassandra1.1.0中Compaction部分源代码解析——准备篇

Cassandra目前已经发布了1.1.0,更新速度也还算可以,但是Cassandra屡屡被抛弃的事实,让我们不仅对它的前景表示担忧,好了不说废话了进入正题。写这部分动机一是对自己这段时间工作的总结,另外一个就是Cassandra使用者较少,很多的资料都是0.7以前的,希望这部分的内容能给大家带来帮助,当然更渴望大神给予指点。Ok,let’s go! compaction是神马,为神马进行

2012-06-04 17:38:30 2565

原创 Cassandra1.1.0中SizeTieredCompactionStrategy和LeveledCompactionStrategy的理解

最近一段时间因为项目的需要对cassandra的两种compaction机制进行了比较深入的了解,后续的博客中会有会相应源代码的解析。一、首选先来说一下刚发布的1.1.0在compaction这部分的变化,最表面上的变化就是某些函数的名称改变了,比如获取候选compaction集合的函数getBackgroundTasks更名为getNextBackgroudTask,当然主要的变化就出现在这

2012-06-02 19:58:26 4102

原创 C++中类的理解

1、在类内部定义的函数默认为内联函数,不过是否最终成为内联函数要看函数是否足够简单。2、一种比较特殊的成员函数是const成员函数,该函数拥有一个隐含的const类型的this指针,因此该类型的函数不能改变类的数据成员。3、用struct和class定义的类的唯一区别在于,struct默认的成员是公有的,而class默认是私有的。4、inline函数可以在声明或者定义处指定,都是合法的

2012-05-31 21:57:08 2079

原创 HDFS1.0源代码解析—DataNode类主要数据成员和函数

DataNode.java主要包含三个类DataNode主类、DataTransfer和BlockRecord辅助类。一、看主类DataNode:1、主要的数据成员 public DatanodeProtocol namenode = null; public FSDatasetInterface data = null; public DatanodeRegistration d

2012-05-28 21:07:58 1847

原创 C++中static的理解

博客的所有内容都是个人理解,难免有理解错误的地方,欢迎大家多多拍砖!C++中static的用法可以分为两个大类:C风格的static的使用和C++风格的static的使用。一、C风格的static的使用1、局部静态变量C风格的局部静态变量是在某个函数中定义的static变量,该变量只会被初始化一次,一直存在到程序结束。与普通局部变量的区别是,只会初始化一次,函数退出后该值依然存在一

2012-05-22 19:26:11 1822

原创 C++的命名空间

博客的所有内容都是个人理解,难免有理解错误的地方,欢迎大家多多拍砖!C++中的命名空间是为了防止命名重复,免除程序猿为想名字而绞尽脑汁的痛苦,具体作用于Java中package相同。一、命名空间的定义命名空间可以化为全局的命名空间,将各自的变量和函数封装在自己的命名空间范围内,这样即使各部分存在重名的变量或者函数也不会存在问题。命名空间以namespace开头,后便节命名空间的名字

2012-05-21 22:47:43 1857

原创 Finding a needle in Haystack:Facebook's photo storage的理解

博客的所有内容都是个人理解,难免有理解错误的地方,欢迎大家多多拍砖!这是facebook发在OSDI上的一篇论文,讲述了facebook用于存储用户图片的系统Haystack,目前facebook存储了260billion图片,而图片文件显然都是小文件,使用传统的方式存储数量如此巨大的小文件,必然会带了很大的性能问题。1、元信息数量庞大。因为每一个图片都会当做一个文件进行存储,每个文件都有

2012-05-18 14:59:04 4874

原创 C++成员函数,非成员函数,友元函数,隐式类类型转换

博客的所有内容都是个人理解,难免有理解错误的地方,欢迎大家多多拍砖!成员函数是指在类内部定义的函数,非成员函数是指在某个命名空间或者全局空间内的函数,友元函数是指某些虽然不是类成员却能够访问类的所有成员的函数。成员函数与非成员函数的最大区别是,成员函数可以是虚拟的。class testVar{public: public void init(int num); fri

2012-05-17 15:38:36 6588

原创 C++中的异常处理机制

博客的所有内容都是个人理解,难免有理解错误的地方,欢迎大家多多拍砖!一直以来非常讨厌java中的异常处理机制,虽然号称自己写过不少c++的程序,但是对于c++中的异常处理知识确实一片空白,根据C++ primer中的学习,总结个人的几点理解。1、异常处理机制是程序中相互独立的部分在出现问题时,进行通讯的一种手段,这样做的优点是将问题的检测和问题的处理隔离开来。2、异常类似于将实参传递给

2012-05-16 23:24:40 1697

原创 HDFS1.0源代码解析—DataNode启动(三)

接下来看一下 processCommand(cmd),NameNode会返回那些指令,DataNode响应的动作。 final static int DNA_UNKNOWN = 0; // unknown action final static int DNA_TRANSFER = 1; // transfer blocks to another datanode,在Dat

2012-05-13 14:48:31 1740

原创 HDFS1.0源代码解析—DataNode启动(二)

在(一)中介绍了DataNode启动本机需要进行的一些检查和操作,但是作为分布式文件系统HDFS中的一员,启动时还需要启动各种网络服务。this.registerMXBean(conf); // register the MXBean for DataNode为DataNode注册MBean,具体MBean的介绍和使用见http://damies.iteye.com/blog/5178

2012-05-12 17:02:14 2024

原创 HDFS1.0源代码解析—DataNode状态切换

Hadoop支持软件升级,对于Hadoop这样一个分布式的系统,升级将是一件很复杂的事情。下面介绍升级过程中DataNode的状态切换首先来看DataNode可能存在的各种状态: FORMAT ("-format"),//格式化,用于系统第一次启动,必须先进行格式 REGULAR ("-regular"),//用于正常启动 UPGRADE ("-upgrade"

2012-05-11 09:40:08 1171

原创 C++/C动态内存分配的区别

C++使用new和delete,C语言使用malloc和free进行动态内存的管理,主要区别有以下几点:1、new分配的内存空间是带有类型的,而malloc分配的空间类型是void*。new进行内存分配时,首先调用operator new分配内存空间,然后用placement new调用对应的构造函数创建对象。operator new与malloc是对应的都只负责内存空

2012-05-08 23:15:45 441

Hadoop in Action

Hadoop经典数据,研究hadoop的利器。

2012-05-13

Apress - Pro Hadoop

关于Hadoop的经典数据之一,好东西果断分享。

2012-05-13

HBase:权威指南

HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。 HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用 Chubby作为协同服务,HBase利用Zookeeper作为对应。

2012-02-28

glaux(OpenGL库)

内含glaux.dll glaux.h glaux.lib glaux.pas四个文件

2012-02-28

第五届HADOOP中国2011大会_PPT

hadoop in china 2011,海量数据掘宝大会所有演讲者的PPT,包括google、facebook、IBM、Yahoo、ebay、腾讯、百度、淘宝、人搜等等,不容错过!

2011-12-06

Hadoop开发者第四期

hadoop技术论坛大牛总结,个人感觉很好,推荐!

2011-11-08

Google_三大论文中文版

google经典的三篇论文的中文版,翻译的还可以,希望对大家有帮助。

2011-11-08

hadoop开发者第三期

hadoop技术论坛大牛们的总结,个人认为比较有价值,推荐!

2011-11-08

hadoop开发者第二期

hadoop技术论坛牛人的经验总结,个人感觉很不错,推荐!

2011-11-08

Hadoop开发者第一期

hadoop技术论坛牛人的经验总结,个人感觉很不错,推荐!

2011-11-08

算法导论(美国版)课后习题与思考题答案合集

好东西 算法导论的课后题加思考题的答案 绝对好东西!

2011-03-04

MapReduce中文版

MapReduce是一个编程模型,和处理,产生大数据集的相关实现.用户指定一个map函数处理一个key/value对,从而产生中间的key/value对集.然后再指定一个reduce函数合并所有的具有相同中间key的中间value.下面将列举许多可以用这个模型来表示的现实世界的工作. 以这种方式写的程序能自动的在大规模的普通机器上实现并行化.这个运行时系统关心这些细节:分割输入数据,在机群上的调度,机器的错误处理,管理机器之间必要的通信.这样就可以让那些没有并行分布式处理系统经验的程序员利用大量分布式系统的资源. 我们的MapReduce实现运行在规模可以灵活调整的由普通机器组成的机群上,一个典型的MapReduce计算处理几千台机器上的以TB计算的数据.程序员发现这个系统非常好用:已经实现了数以百计的MapReduce程序,每天在Google的机群上都有1000多个MapReduce程序在执行.

2011-01-16

空空如也

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

TA关注的人

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