Hadoop HAR文件的读取操作

概述

Hadoop Archive是Hadoop官方提供的解决HDFS上小文件过多的一种方案。可以通过如下命令来执行生成har文件:

执行archive命令会提交一个MapReduce任务来生成har文件。在了解har文件…

通过HA访问Hdfs获取ActiveNode

通过HA访问Hdfs的时候如何获取到活跃节点是一个稍稍有些麻烦的事情。

目前使用过两种方案:一是通过webhdfs接口逐一访问测试,找到状态为可用的节点;一是在zookeeper上直接获取当前活跃的节点。

简单说下第二种方案。ha的ActiveNode在zookeeper上的存储节点为:/hadoop-ha/dcnameservice/ActiveStandby…

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等接口。

最后…

关于MapReduce1 – QuickStart

概述

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

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