随笔 - 371  文章 - 0  评论 - 12  阅读 - 243万
06 2012 档案
[hadoop源码阅读][6]-org.apache.hadoop.ipc-protocol和心跳分析
摘要:1. protocol在rpc中的作用通过对org.apache.hadoop.ipc包分析中,Hadoop实现了基于IPC模型的RPC机制,可以不需要像Java中实现的RMI机制一样,在RPC调用的C/S两端分别创建Stub和Skeleton,而是通过一组协议来进行RPC调用就可以实现通信。这主要是由于Hadoop所采用的序列化机制简化了RPC调用的复杂性。Hadoop定义了自己的通信协议,这些协议都是建立在TCP/IP协议之上的,规范了通信两端的约定。Hadoop集群中,不同进程之间通信需要使用合适的协议才能够进行交互。在协议接口中约定了通信双方的特定行为,那么,在实现这些通信协议的实现类 阅读全文
posted @ 2012-06-23 15:14 阿笨猫 编辑
[hadoop源码阅读][6]-org.apache.hadoop.ipc-ipc.server
摘要:1. nio的reactor模式 具体的处理方式: · 1.一个线程来处理所有连接(使用一个Selector) · 2.一组线程来读取已经建立连接的数据(多个Selector,这里的线程数一般和cpu的核数相当); · 3.一个线程池(这个线程池大小可以根据业务需求进行设置) · 4.一个线程处理所有的连接的数据的写操作(一个Selector) 2. 简明流程图 3. RPC ... 阅读全文
posted @ 2012-06-22 12:02 阿笨猫 编辑
[hadoop源码阅读][6]-org.apache.hadoop.ipc-ipc.client
摘要:1.client运行的流程1)创建代理对象; 2)代理对象调用相应方法(invoke()); 3)invoke调用client对象的call方法,向服务器发送请求(参数、方法); 4)再等待call方法的完成; 5)返回请求结果。2.client主要的内部类主要的几个类说明: 1. Call,表示一次rpc的调用请求2. Connection,表示一个client与server之间的连接,一个连接一个线程启动3. ConnectionId:连接的标记(包括server地址,协议,其他一些连接的配置项信息)4. ParallelCall:实现并行调用的请求5. ParallelResults:并 阅读全文
posted @ 2012-06-21 19:40 阿笨猫 编辑
[hadoop源码阅读][6]-org.apache.hadoop.ipc-ipc总体结构和RPC
摘要:1.前言Hadoop的RPC主要是通过Java的动态代理(Dynamic Proxy)与反射(Reflect)实现,源代码在org.apache.hadoop.ipc下,有以下几个主要类:Client:RPC服务的客户端RPC:实现了一个简单的RPC模型Server:服务端的抽象类RPC.Server:服务端的具体类VersionedProtocol:所有的使用RPC服务的类都要实现该接口,在创建代理时,用来判断代理对象是否创建正确。2.Hadoop RPC简单过程简单来说,Hadoop RPC = 动态代理 + 定制好的二进制流。如果不关注细节,从用户的角度来看,它的结构大致像下图 远程的. 阅读全文
posted @ 2012-06-21 14:38 阿笨猫 编辑
[hadoop源码阅读][6]-org.apache.hadoop.ipc-基础知识点(nio,动态代理)
摘要:动态代理http://langyu.iteye.com/blog/410071java niohttp://weixiaolu.iteye.com/blog/1479656http://blog.csdn.net/historyasamirror/article/details/6159248# 阅读全文
posted @ 2012-06-21 10:38 阿笨猫 编辑
[hadoop源码阅读][5]-counter的使用和默认counter的含义
摘要:ps: 在map和reduce的过程中,可以通过设置Context.setStatus()来随时设置状态,这个底层也是使用reporter来设置的 1.在0.20.x版本中使用counter很简单,直接定义即可,如无此counter,hadoop会自动添加此counter. Counter ct = context.getCounter("INPUT_WORDS", "count"); ct.increment(1); 2.在0.19.x版本中,需要定义enum enum MyCounter {INPUT_WORDS }; reporter.incrCo 阅读全文
posted @ 2012-06-15 17:55 阿笨猫 编辑
[hadoop源码阅读][4]-org.apache.hadoop.io.compress系列3-使用压缩
摘要:hadoop中支持的压缩方式有多种,比如Gzip,bzip2,zlib等,其中Gzip是hadoop中内置就支持的一种压缩方式,这种压缩方式在平时linux的开发人员和管理员中使用的比较广泛,压缩比也比较高,压缩速度也还不错,所以很多人都喜欢第一趋向于使用这种压缩格式进行文件的压缩。 在hadoop中,要在mapreduce 的job中使用gzip压缩是比较容易的,不记得是从哪个版本开始,h... 阅读全文
posted @ 2012-06-15 17:54 阿笨猫 编辑
[hadoop源码阅读][4]-org.apache.hadoop.io.compress系列2-选择编解码器
摘要:在考虑如何压缩那些将由MapReduce处理的数据时,考虑压缩格式是否支持分割是很重要的。考虑存储在HDFS中的未压缩的文件,其大小为1GB,HDFS的块大小为64MB,所以该文件将被存储为16块,将此文件用作输入的MapReduce作业会创建1个输人分片(split ,也称为“分块”。对于block,我们统一称为“块”。)每个分片都被作为一个独立map任务的输入单独进行处理。现在假设。该.文件是一个grip格式的压缩文件,压缩后的大小为1GB。和前面一样,HDFS将此文件存储为16块。然而,针对每 一块创建一个分块是没有用的,因为不可能从gzip数据流中的任意点开始读取,map任务也不可能独 阅读全文
posted @ 2012-06-15 17:53 阿笨猫 编辑
[hadoop源码阅读][4]-org.apache.hadoop.io.compress系列1-认识解码器/编码器
摘要:编码器和解码器用以执行压缩解压算法。在Hadoop里,编码/解码器是通过一个压缩解码器接口实现的。因此,例如,GzipCodec封装了gzip压缩的压缩和解压算法。下表列出了Hadoop可用的编码/解码器。 压缩格式 Hadoop压缩编码/解码器 DEFLATE org.apache.hadoop.io.compress.DefaultCodec gzip org.apache.ha... 阅读全文
posted @ 2012-06-15 17:37 阿笨猫 编辑
[hadoop源码阅读][3]-新旧api区别
摘要:http://blog.csdn.net/xw13106209/article/details/6924458hadoop 版本0.20和之前的版本差距较大,包括部分api结构,配置文件结构在hadoop 权威指南中有说明,原文如下:The new Java MapReduce APIRelease 0.20.0 of Hadoop included a new Java MapReduce API, sometimes referred to as “Context Objects,” designed to make the API easier to evolve in the futu 阅读全文
posted @ 2012-06-15 17:32 阿笨猫 编辑
[hadoop源码阅读][4]-org.apache.hadoop.io
摘要:1.下面是主要的类层次图 2.Writable和WritableComparable的子类们基本大同小异 3.RawComparator和WritableComparator 举例如下,以下以text类型的comparator每个字符从高到低位比较,对于数字类型的字符串也是比较适用的 /** A WritableComparator optimized for Text keys. */... 阅读全文
posted @ 2012-06-15 17:32 阿笨猫 编辑
[hadoop源码阅读][2]-package结构
摘要:http://caibinbupt.iteye.com/blog/270378PackageDependencestool提供一些命令行工具,如DistCp,archivemapreduceHadoop的Map/Reduce实现filecache提供HDFS文件的本地缓存,用于加快Map/Reduce的数据访问速度fs文件系统的抽象,可以理解为支持多种文件系统实现的统一文件访问接口hdfsHDFS,Hadoop的分布式文件系统实现ipc一个简单的IPC的实现,依赖于io提供的编解码功能参考:http://zhangyu8374.iteye.com/blog/86306io表示层。将各种数据编码 阅读全文
posted @ 2012-06-15 17:31 阿笨猫 编辑
[hadoop源码阅读][1]-源码目录结构
摘要:由于版本的不同,可能部分目录有些不同.http://clearity.iteye.com/blog/1331489首先我们需要对hadoop解压包的目录结构有个大概了解,解压下载的hadoop1.0.0版本压缩包到文件系统,目录如下:bin: 此目录下为进行hadoop配置、运行以及管理的shell命令集合c++:此目录下为linux下amd64-64位系统以及i386-32位系统提供的库文件集合conf:此目录下为运行与配置hadoop环境需要的配置文件以及示例文件集合,实际运行时可以对照此目录下的文件结构进行 相应的配置contrib:此目录下针对hadoop运行过程中需要特殊强... 阅读全文
posted @ 2012-06-15 17:30 阿笨猫 编辑
[hadoop源码阅读][0]-初衷和各种资源
摘要:初衷一直业余的维护着一个hadoop应用程序,一直想看点hadoop源码,主要依据这篇博文(http://caibinbupt.iteye.com/blog/262412)的线索看下去,如果中途有自己感兴趣的就先散开看看.原则以看代码为主,看别人的文章为辅,但是也不会很仔细的阅读每行代码,知道那些代码能干些什么事,以后遇到问题回来仔细查看,同时将自己看到过的资料记录下来,基本不会自己总结写,(呵呵比较浪费时间,不过参考的文档都给出url自己)直接从笔记里面copy的,排版可能不那么好看ps:阅读代码版本为hadoop-0.20.2-cdh3u0 源码包下载http://www.apache.o 阅读全文
posted @ 2012-06-15 17:27 阿笨猫 编辑
hadoop streaming和pipes资料
摘要:streaminghttp://hadoop.apache.org/common/docs/r0.21.0/cn/streaming.html#Hadoop+Streaminghttp://dongxicheng.org/mapreduce/hadoop-streaming-programming/http://dongxicheng.org/mapreduce/hadoop-streaming-advanced-programming/http://blog.csdn.net/yfkiss/article/category/817084pipeshttp://www.wikieno.com/ 阅读全文
posted @ 2012-06-07 17:36 阿笨猫 编辑
[转]剖析top命令显示的VIRT RES SHR值
摘要:http://yalung929.blog.163.com/blog/static/203898225201212981731971/http://www.fuzhijie.me/?p=741引言:top命令作为Linux下最常用的性能分析工具之一,可以监控、收集进程的CPU、IO、内存使用情况。比如我们可以通过top命令获得一个进程使用了多少虚拟内存(VIRT)、物理内存(RES)、共享内存(SHR)。最近遇到一个咨询问题,某产品做性能分析需要获取进程占用物理内存的实际大小(不包括和其他进程共享的部分),看似很简单的问题,但经过研究分析后,发现背后有很多故事……1VIRTRESSHR的准确含 阅读全文
posted @ 2012-06-05 10:46 阿笨猫 编辑


点击右上角即可分享
微信分享提示