文章 56
评论 98
浏览 271600
Java I/O模型从BIO到NIO和Reactor模式解析

Java I/O模型从BIO到NIO和Reactor模式解析

Java I/O模型 同步 vs. 异步 同步I/O 每个请求必须逐个地被处理,一个请求的处理会导致整个流程的暂时等待,这些事件无法并发地执行。用户线程发起I/O请求后需要等待或者轮询内核I/O操作完成后才能继续执行。 异步I/O 多个请求可以并发地执行,一个请求或者任务的执行不会导致整个流程的暂时等待。用户线程发起I/O请求后仍然继续执行,当内核I/O操作完成后会通知用户线程,或者调用用户线程注册的回调函数。 阻塞 vs. 非阻塞 阻塞 某个请求发出后,由于该请求操作需要的条件不满足,请求操作一直阻塞,不会返回,直到条件满足。 非阻塞 请求发出后,若该请求需要的条件不满足,则立即返回一个标志信息告知条件不满足,而不会一直等待。一般需要通过循环判断请求条件是否满足来获取请求结果。 需要注意的是,阻塞并不等价于同步,而非阻塞并非等价于异步。事实上这两组概念描述的是I

64位Ubuntu14.04下安装hadoop2.6单机配置和伪分布配置详解

64位Ubuntu14.04下安装hadoop2.6单机配置和伪分布配置详解

环境 系统: Ubuntu 14.04 64bit Hadoop版本: Hadoop 2.6.0 (stable) JDK版本: oracle jdk7 操作 在Ubuntu下创建hadoop用户组和用户 创建hadoop用户组 sudo addgroup hadoop 创建hadoop用户 sudo adduser -ingroup hadoop hadoop 3. 给hadoop用户添加权限,打开/etc/sudoers文件 sudo gedit /etc/sudoers 在root ALL=(ALL:ALL) ALL下添加hadoop ALL=(ALL:ALL) ALL. 安装SSH server、配置SSH无密码登陆 ssh 是一个很著名的安全外壳协议 Secure Shell Protocol。 rsync 是文件同步命令行工具 sudo apt-get install ssh rsync

mapreduce之数据去重和数据排序实例

mapreduce之数据去重和数据排序实例

数据去重: 数据去重,只是让出现的数据仅一次,所以在 reduce 阶段 key 作为输入,而对于 values-in 没有要求,即输入的 key 直接作为输出的 key,并将 value 置空。具体步骤类似于 wordcount: Tip:输入输出路径配置。 import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.Reducer; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.m

MapReduce实现自定义二次排序

MapReduce实现自定义二次排序

摘要: MapReduce 框架对处理结果的输出会根据 key 值进行默认的排序,这个默认排序可以满足一部分需求,但是也是十分有限的。在我们实际的需求当中,往往有要对 reduce 输出结果进行二次排序的需求。对于二次排序的实现,网络上已经有很多人分享过了,但是对二次排序的实现的原理以及整个 MapReduce 框架的处理流程的分析还是有非常大的出入,而且部分分析是没有经过验证的。本文将通过一个实际的 MapReduce 二次排序例子,讲述二次排序的实现和其 MapReduce 的整个处理流程,并且通过结果和 map、reduce 端的日志来验证所描述的处理流程的正确性。 概述 MapReduce 框架对处理结果的输出会根据 key 值进行默认的排序,这个默认排序可以满足一部分需求,但是也是十分有限的。在我们实际的需求当中,往往有要对 reduce 输出结果进行二次排序的需求。对于二次排序的实现,网络上已经有很多人分享过了,但是对二次排序的实现的原理以及整个 MapReduce 框架的处理流程的分析还是有非常大的出入,而且部分分析是没有经过验证的。本文将通过一个实际的 MapRedu....

java之hashtable和hashmap

java之hashtable和hashmap

hashtable和hashmap是java里面常见的容器类,是Java.uitl包下面的类,那么Hashtable和Hashmap是怎么实现hash键值对配对的呢,我们看看jdk里面的源码,分析下Hashtable的构造方法,put(K, V)加入方法和get(Object)方法就大概明白了。 一、Hashtable的构造方法:Hashtable(int initialCapacity, float loadFactor) public Hashtable(int initialCapacity, float loadFactor) { if (initialCapacity < 0) throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity); if (loadFactor <= 0 || Float.isNaN(loadFactor))

鲜衣怒马提银枪,一日看尽长安花,此间少年。