自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (3)
  • 问答 (1)
  • 收藏
  • 关注

转载 【Hadoop】22-shuffle和排序

MapReduce确保每个reducer的输人都是按键排序的。系统执行排序、将map输出作为输人传给reducer的过程称为shuffle。在此,我们将学习shuflle是如何工作的,因为它有助于我们理解工作机制(如果需要优化MapReduce程序)。shuffle属于不断被优化和改进的代码库的一部分,因此下面的描述有老要隐藏一些细节(也可能随时间而改变,目前是020版本)。从许多方面来看,shu...

2018-05-22 23:58:28 1243

原创 【Spring源码分析】08-DataBinder

DataBinder实现了TypeConverter和PropertyEditorRegistry接口提供了类型转换功能,并且可以对目标对象字段做Validation。DataBinder有个重要的成员变量bindingResult是AbstractPropertyBindingResult类,我们先分析他的用处。Errors接口定义了存储与展示关于数据绑定和validation到...

2018-05-22 22:58:21 12750

转载 【Hadoop】21-失败

在现实情况中,用户代码错误不断,进程崩溃,机器故障,如此种种。使用Hadoop最主要的好处之一是它能处理此类故障并让你能够成功完成作业。我们需要考虑以下实体的失败:任务、application master、节点管理器和资源管理器。1.任务运行失败首先考虑任务失败的情况。最常见的情况是map任务或reduce任务中的用户代码抛出运行异常。如果发生这种情况,任务JVM会在退出之前向其父applica...

2018-05-19 23:39:41 376

转载 【Hadoop】20-剖析MapReduce作业运行机制

可以通过一个简单的方法调用来运行MapReduce作业:Job对象的submit()方法。注意,也可以调用waitForCompletion(),它用于提交以前没有提交过的作业,并等待它的完成。submit()方法调用封装了大量的处理细节。本小节将揭示Hadoop运行作业时所采取的措施。整个过程描述如下图所示。在最高层,有以下5个独立的实体。客户端,提交MapReduce作业。YARN资源管理器,...

2018-05-19 23:15:15 583

转载 【Hadoop】19-MapReduce的工作流

至此,你已经知道MapReduce应用开发的机制了。我们目前还未考虑如何将数据处理问题转化成MapReduce模型。前面的数据处理都用来解决十分简单的问题(如在指定年份找到最高气温值的记录)。如果处理过程更复杂,这种复杂度一般是因为有更多的MapReduce作业,而不是更复杂的map和reduce函数。换而言之,通常是增加更多的作业,而不是增加作业的复杂度。对于更复杂的问题,可考虑使用比MapRe...

2018-05-19 22:28:19 515

转载 【Hadoop】18-作业调优

作业运行后,许多开发人员可能会问:“能够让它运行得更快一些吗?"有一些Hadoop相关的“疑点”值得检查一下,看它们是不是引发性能问题的“元凶”。在开始任务级别的分析或优化之前,必须仔细研究下表所示的检查内容。作业优化检查表:范围最佳实践更多参考信息mapper的数量mapper需要运行多长时间?如果平均只运行几秒钟,则可以看是否能用更少mapper运行更长的时间,通常是一分钟左右。时间长度取决于...

2018-05-19 19:34:28 195

转载 【Hadoop】17-在集群上运行MapRedece

1.打包作业本地作业运行器使用单JVM运行一个作业,只要作业需要的所有类都在类路径(classpath)上,那么作业就可以正常执行。在分布式的环境中,情况稍微复杂一些。开始的时候作业的类必须打包成一个作业JAR文件并发送给集群。Hadoop通过搜索驱动程序的类路径自动找到该作业JAR文件,该类路径包含JonfConf或Job上的setJarByClass()方法中设置的类。另一种方法,如果你想通过...

2018-05-19 19:07:44 1061

原创 【Spring源码分析】07-BeanWrapper

beans包里一个非常重要的类是BeanWrapper接口和它的相应实现(BeanWrapperImpl)。BeanWrapper提供了设置和获取属性值(单独或批量)、获取属性描述符以及查询属性以确定它们是可读还是可写的功能。BeanWrapper还提供对嵌套属性的支持,能够不受嵌套深度的限制启用子属性的属性设置。然后,BeanWrapper提供了无需目标类代码的支持就能够添加标准JavaBean...

2018-05-15 22:19:18 8679 5

转载 【Hadoop】16-本地运行测试数据

现在mapper和reducer已经能够在受控的输人上进行工作了,下一步是写一个作业驱动程序(job driver),然后在开发机器上使用测试数据运行它。1在本地作业运行器上运行作业通过使用前面介绍的Tool接口,可以轻松写一个MapReducer作业的驱动程序,用它来计算按照年度查找最高气温,参见范例的MaxTemperatureDriver。范例,查找最高气温public class MaxT...

2018-05-13 22:36:33 991

转载 【Hadoop】15-用MRUnit编写单元测试

在MapReduce中,map函数和reduce函数的独立测试非常方便,这是由函数风格决定的。MRUnit(http://mrunit.apache.org/)是一个测试库,它便于将已知的输人传递给mapper或者检查reducer的输出是否符合预期。MRUnit与标准的测试执行框架(如JUnit)—起使用,因此可以在正常的开发环境中运行MapReduce作业的测试。1.关于Mapper范例是一个...

2018-05-13 21:56:35 372

转载 【Hadoop】14-MapReduce配置开发环境

首先新建一个项目,以便编译MapReduce程序并通过命令或在自己的IDE中以本地(独立,standalone)模式运行他们。在下面范例中的Maven POM项目对象模型(Project Object Model)说明了编译和测试Map-Reduce程序时需要的依赖项(dependency)。<project> <modelVersion>4.0.0</mod...

2018-05-13 21:14:05 908

转载 【Hadoop】13-MapReduce用于配置的API

        MapReduce编程遵循一个特定的流程。首先写map函数和reduce函数,最好使用单元测试来确保函数的运行符合预期。然后,写一个驱动程序来运行作业,看这个驱动程序是否可以正确运行,就用本地IDE调试来找出问题根源。根据这些调试信息,可以通过扩展单元测试来覆盖这一测试用例,从而改进mapper或reducer,使其正确处理类似输入。        一旦程序按预期通过小型数据集的测...

2018-05-13 17:16:14 242

转载 【Hadoop】12-基于文件的数据结构

对于某些应用,我们需要一种特殊的数据结构来存储自己的数据。对于基于MapReduce的数据处理,将每个二进制数据大对象(blob)单独放在各自的文件中不能实现可扩展性,所以,Hadoop为此开发了很多更高层次的容器。1.关于SequenceFile考虑日志文件,其中每一行文本代表一条日志记录。纯文本不合适记录二进制类型的数据。在这种情况下,Hadoop的SequenceFile类非常合适,为二进制...

2018-05-13 16:47:11 592

转载 【Hadoop】11-序列化

序列化(serialization)是指将结构化对象转化为字节流以便在网络上传输或写到磁盘进行永久存储的过程。反序列化(deserialiion)是指将字节流转回结构化对象的逆过程。序列化用于分布式数据处理的两大领域:进程间通信和永久存储。在Hadoop中,系统中多个节点上进程间的通信是通过“远程过程调用”(RPC,remote procedure call)实现的。RPC协议将消息序列化成二进制...

2018-05-13 16:23:54 876

转载 【Java基础】属性编辑器PropertyEditor

在Spring配置文件里,我们往往通过字面值为Bean各种类型的属性提供设置值:不管是double类型还是int类型,在配置文件中都对应字符串类型的字面值。BeanWrapper填充Bean属性时如何将这个字面值转换为对应的double或int等内部类型呢?我们可以隐约地感觉到一定有一个转换器在其中起作用,这个转换器就是属性编辑器。  “属性编辑器”这个名字可能会让人误以为是一个带用户界面的输入器...

2018-05-12 22:03:30 14079

转载 【Java基础】Annotation详解

转自http://www.cnblogs.com/peida/archive/2013/04/23/3036035.html什么是注解(Annotation):  Annotation(注解)就是Java提供了一种元程序中的元素关联任何信息和着任何元数据(metadata)的途径和方法。Annotion(注解)是一个接口,程序可以通过反射来获取指定程序元素的Annotion对象,然后通过Annot...

2018-05-12 16:25:50 479

原创 【Spring源码分析】06-ResolvableType

前两篇博客中很多地方都是用到了ResolvableType获取类型信息,这篇就来详细看看它。ResolvableType封装了Java的Type,提供了getSuperType()方法访问父类型,getInterfaces()反回实现的接口,getGeneric()获取泛型参数,resolve()转化为Class对象。那么什么事Java的Type呢,可以看出Type有四个子接口,一个子类。每种类型...

2018-05-12 15:10:26 13209

转载 【Java基础】Type详解

转自https://blog.csdn.net/gdutxiaoxu/article/details/68926515为什么要写这一系列的博客呢?因为在 Android 开发的过程中, 泛型,反射,注解这些知识进场会用到,几乎所有的框架至少都会用到上面的一两种知识,如 Gson 就用到泛型,反射,注解,Retrofit 也用到泛型,反射,注解 。学好这些知识对我们进阶非常重要,尤其是阅读开源框架源...

2018-05-12 14:45:06 2081 1

原创 【Spring源码分析】05-字段格式化

上一篇分析了继承图的右半部分,这次来分析左半部分。Spring 3为此引入了一个方便的Formatter SPI来直接解决这些问题,这个接口为客户端环境提供一种简单强大并且替代PropertyEditor的方案。一般来说,当你需要实现通用的类型转换逻辑时请使用Converter SPI,例如,在java.util.Date和java.lang.Long之间进行转换。当你在一个客户端环境(比如web...

2018-05-10 18:40:49 6728

原创 【Spring源码分析】04-类型转换

Spring提供了一个Converter接口用于做类型装换,但我们需要将对象从一种类型转换为另一种类型只需要调用具体实现类的convert()方法。Spring也默认为我们提供了很多常用的实现类。public interface Converter<S, T> { T convert(S source);}上述接口有一个麻烦的地方是,如果我们需要将String转换到相应的...

2018-05-09 20:42:14 7503

原创 【Spring源码分析】03-ResourceLoader

ResourceLoader 接口是用来加载 Resource 对象的,换句话说,就是当一个对象需要获取 Resource 实例时,可以选择实现 ResourceLoader 接口。public interface ResourceLoader { /** Pseudo URL prefix for loading from the class path: "classpath:" */ St...

2018-05-09 20:41:24 6519

原创 【Spring源码分析】02-Resource

Spring的Resource接口为资源访问提供了统一的接口,不同的实现类实现了从不同上下文获取资源。下面是该接口的方法:public interface Resource extends InputStreamSource { boolean exists(); default boolean isReadable() { return true; } default boolean...

2018-05-09 20:40:06 6625

转载 【Hadoop】10-压缩

与Hadoop结合使用的常见压缩算法。 压缩格式 工具 算法 扩展名 是否可切分 DEFLATE N/A DEFLATE .deflate 否 gzip ...

2018-05-07 22:59:39 386

原创 【Spring源码分析】01-DispatcherServlet注册过程

传统的Servlet注册是配置在/WEB-INF/web.xml下,在容器启动的时候注册Servlet。Servlet3规范为我们又提供了一种更加方便的注册方法。容器启动的时候扫描jar包,找到jar包下一个文件路径为下面这个的文件。META-INF/services/javax.servlet.ServletContainerInitializer该文件的内容必须是一个实现了javax.serv...

2018-05-07 21:56:25 7431 4

原创 【Mybatis源码分析】12-插件PageHelper机制

PageInterceptor是Mybatis的插件,用于拦截Executor的query方法,增强这个方法用于分页查询。@Intercepts( { @Signature(type = Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.cl...

2018-05-05 15:17:33 8014

原创 【Mybatis源码分析】11-插件机制

MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括:Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)ParameterHandler (getParameterObject, setPar...

2018-05-02 23:53:04 4424

原创 【Mybatis源码分析】10-CglibProxyFactory

Mybatis懒加载是通过动态代理完成的,通常来说Mybaits的映射实体都是POJO,所以Mybatis默认使用Cglib来做动态代理框架的。使用CglibProxyFactory的createProxy方法创建代理对象。其中又直接调用了EnhancedResultObjectProxyImpl静态createProxy方法。public Object createProxy(Object ta...

2018-05-02 23:52:42 4840

转载 【Hadoop】09-数据的完整性

Hadoop用户肯定都希望系统在存储和处理数据时不会丢失或损坏任何数据。尽管磁盘或网络上的每个I/O操作不太可能将错误引入自己正在读/写的数据中,但是如果系统中需要处理的数据量大到Hadoop的处理极限时,数据被损坏的概率还是很高的。检测数据是否损坏的常见措施是,在数据第一次还引入系统时计算校验和(checksum)并在数据通过一个不可靠的通道进行传输时再次计算校验和,这样就能发现数据是否损坏。如...

2018-05-01 23:29:46 495

html5帮助文档

很好的html5帮助文档, 值得拥有。

2012-06-14

css2.0cmh文档

内容比较全,讲解比较到位,很适合下载使用

2012-03-19

java编程思想第四版(含源码和课后答案)pdf

java编程思想第四版pdf包括源码和课后答案

2012-03-03

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

TA关注的人

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