`
evans_he
  • 浏览: 12414 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
文章列表
       hadoop作业分本地模式和分布式模式两种执行模式,JobClient初始化时会读取配置项mapred.job.tracker(默认为local),如果该配置项的值为local,则hadoop采本地模式执行作业,否则采用分布式模式执行。本地模式使用LocalJobRuner提交并执行作业。对LocalJobRunner实例调用submitJob( )方法会创建Job(LocalJobRunner的内部类)实例,该实例完成作业的执行。       从图中可以看到,LocalJobRunner的内部类Job就是一个线程,其实本地模式的MapReduce作业就由该线程完成。Job的内 ...
        MapReduce处理数据的基本原则之一就是将输入数据分割成片(split),按片读取数据,每个分片交由一个Mapper去做处理。注意,输入分片只是一种逻辑划分,有别于hdfs的数据分块(block),数据分块是数据的物理划分。InputFor ...
       阅读hdfs的源码看到有对java流进行扩展来对文件、文件块进行读写,顺便就将流这一块再次梳理一下。前面已经从类图上简要介绍了字节流,现在再分析下字符流。 读字符流 写字符流
有关java流的详细介绍网上随处可见,就不再赘述了,本篇博客画出了java字节流的类图。 字节输入流     字节输出流            java io是装饰者模式的典型代表。以输出字节流为例,FilterOutputStream是一个抽象的装饰者,ByteArrayOutputStream、FileOutputStream等是等待被装饰的对象,BufferedOutputStream、DataOutputStream是具体的装饰者。BufferedOutputStream bos = new BufferedOutputStream(new FileOutputS ...
       本篇博客将以WordCount为例从源码上分析hadoop作业提交流程,所使用的hadoop版本为cdh4.3.0。        hadoop作业提交流程如下图所示:   public static void distribute() throws Exception { /*指定Hadoop 环境的用户名称, 如果不指定会抛org.apache.hadoop.security.AccessControlException,访问受限*/ System.setProperty("HADOOP_USER_NAME", "D ...
基本概念                           服务:一个熟知的接口和类(通常为抽象类)集合。 服务提供者:服务的特定实现。 ServiceLoader                        ServiceLoader是专门用于加载服务提供者的加载器 ...
类加载器的继承层次 java类加载器按照如下图所示的结构组织,各加载器各司其职只加载自己管辖范围内的类。引导类加载器(Bootstrap):java虚拟机内置的加载器,在虚拟机启动的时候会用这个类加载器来加载 JDK安装目录下的 /JRE/LIB/rt.jar ,也就是系统默认导入的一些类(如下图所示)。不能通过代码直接获取引导类加载器的引用,获取的都是null。  扩展类加载器(ExtClassLoader):这个类加载器加载JDK安装目录下的/JRE/LIB/ext 目录中的类: 系统类加载器(AppClassLoader):根据java程序的classpath加载对应的类。可以通 ...
       java动态代理就是动态的为委托类生成代理类,相比静态代理需要预先编写代理类源码,动态代理只需要定义好接口,然后使用反射动态生成指定接口的实现类(代理类)。以下通过一个demo来分析动态代理的实现细节。             步骤1:定义接口并提供接口实现类。 /** * 打电话服务接口 */ interface CallService{ public void call(); } /** * 发信息服务接口 */ interface SendMessageService{ public void sendMessage(); } ...
   注解基本信息 自定义注解及使用 定义注解 package com.hsh.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * 定义注解 @ServiceAno * 保留到运行时,作用对象为方法 */ @Target(ElementType.FIE ...
 线程通信和线程同步                      并发编程的两个核心问题是线程通信和线程同步,其中线程通信指线程之间以何种机制交换信息。常见的通信机制有两种:共享内存(线程之间共享公共状态,通过读-写公共 ...
什么是线程安全        如果对象的状态变量(对象的实例域、静态域)具有可变性,那么当该对象被多个线程共享时就的考虑线程安全性的问题,否则很可能出现与预期不同的结果。        线程安全是指:当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程如何交替执行,该类始终能表现出正确的行为。        一个类是否线程安全的,取决于两点:是否被多线程共享;状态是否可变。单线程环境中不涉及变量共享,不会产生线程安全性问题。多线程环境中共享无状态的对象和状态不可变的对象也不会产生线程安全性问题。 原子性        对于计数器counter++这种由“ 读取---& ...
Global site tag (gtag.js) - Google Analytics