java注解1 – 元注解

简单整理了一下Annotation相关的内容。

元Annotation就是修饰Annotation的Annotation。

Java有四个元Annotation:@Retention、 @Target、@Documented和@Inherited。

@Retention

@Retention只能用于修饰一个Annotation定义。用于指定被修饰的Annotation…

Yarn架构设计

yarn一个基本理念就是将JobTracker的两大主要功能——资源管理和作业调度/监控——分割开来成为两个独立的守护进程。在这个方案里,有一个全局的ResourceManager (RM)和对应每个应用的ApplicationMaster (AM)。一个应用可以是一个独立作业,也可以是多个作业构成的DAG(有向无环图,Directed Acyclic Graph)…

Yarn命令

概述

yarn命令是调用的bin/yarn脚本。执行yarn命令时如果不带上参数信息则会打印yarn命令的帮助信息。

yarn命令的用法:

yarn有一个命令参数解析框架,可以用来解析通用命令参数以及运行类。命令参数及描述如下表:

–config confdir 覆盖
…

关于MapReduce6 – 重构WordCount

这里是一个更完整的WordCount实例。在这个实例中使用了很多前面提到的MapReduce框架的特性。

这个实例需要HDFS支持运行,尤其是关于DistributedCache的一些特性。因此,这个实例只能运行于伪分布式或者完全分布式安装的Hadoop上。

看下源代码:

…

关于MapReduce5 – 一些有用的特性

提交作业到队列

用户将作业提交到队列。队列是作业的集合,允许系统添加特定的功能,比如,队列通过ACL决定哪些用户可以提交作业。通常主要由Hadoop调度器使用队列。

Hadoop的配置信息使用了一个单独的托管队列,被称为“default”。队列的名称是由mapreduce.job.queuename定义的(Hadoop的site配置)。一些作业调度器支持多重队列…

关于MapReduce4 – 作业的输入输出

作业的输入

InputFormat

InputFormat描述了MapReduce作业的输入规范。

MapReduce框架根据MapReduce作业的InputFormat来做这些事情:

  • 校验作业的输入配置;
  • 把输入文件切分成多个逻辑上的InputSplit实例,并把每个实例分发给一个Mapper;
  • 提供RecordReader实现类,从逻辑InputSplit中收集输
…

关于MapReduce3 – 作业的配置和执行

配置

一个Job就表示了一个MapReduce的作业配置。

Job是用户向Hadoop框架描述一个MapReduce作业如何执行的最主要的接口。框架会尽力按Job的描述去忠实地执行一个作业,但是:

  • 一些配置参数可能会被管理员标记为final(了解下final参数),这意味着不能被更改;
  • 作业的一些参数可以被直接设置(比如Job.setNumReduceTasks(i
…

关于MapReduce2 – Job主体

这一部分内容会适当深入说明用户即将面对的MapReduce框架的各个环节。这有助于用户从一个更细的粒度地去实现、配置、调优作业。

我们先看看Mapper和Reducer接口。通常应用程序实现这两个接口需要提供map和reduce方法。

然后我们会讨论下其他的核心接口,包括Job,Partitioner,InputFormat,OutputFormat等接口。

最后…

kafka简介

简介

kafka是一个分布式的、可分区的、可复制的日志提交服务。它提供了消息传递的功能,但是有着独特的设计。

首先,先了解一些基础概念:

  • Kafka将消息源的分类称为topic;
  • 向Kafka的topic发送消息的进程被称为producer;
  • 订阅并消费消息的进程被称为consumer;
  • Kafka运行在由一个或多个服务组成的集群上,其中的每个服务被称为broker。

从…

关于MapReduce1 – QuickStart

概述

Hadoop Mapreduce是一个简单易用的框架。基于MapReduce写出来的程序能够运行在由上千台商用机器组成的大型集群上,以一种可靠的容错的方式并行处理T级别的海量数据。

一个MapReduce作业通常会把输入的数据集拆分成独立的块,由map任务(task)以完全并行的方式处理。框架先对map的输出结果进行排序,排好序的结果会做为reduce任务的…