【Hadoop13】:MapReduce用户日志 发表于 2019-03-17 | 分类于 Hadoop | | 阅读次数: 前言我们在编写MapReduce时,有时候需要打印一些日志信息,方便排查错误。例如,在Map任务中,发现某些数据格式错误,不仅仅是跳过这些错误的数据,还需要将错误数据打印到日志中。 YARN有一个日志聚合服务,可以去取到已完成的应用的任务日志,并且将其搬移到HDFS中,在那里任务日志被存储在一个容器文件中用于存档。我们在环境搭建的章节,已经开启了日志聚合服务。 阅读全文 »
【Hadoop12】:MapReduce Combiner 发表于 2019-03-10 | 分类于 Hadoop | | 阅读次数: 前言我们在介绍MapReduce Shuffle阶段时,曾经提及过Combiner的概念。Combiner在某种场景下,可以减少Map任务和Reduce任务之间的数据传输,属于优化方案。简单来说,即便不使用Combiner,我们的程序也没有任何影响,如果要使用Combiner,可以适当提升运行速度,不过有条件限制。 阅读全文 »
【Hadoop11】:MapReduce分区器 发表于 2019-03-10 | 分类于 Hadoop | | 阅读次数: 前言到目前为止,我们编写的所有MapReduce只有一个Reducer任务。Map任务可能有多个,因为通过输入分片的机制,将数据源切分为多个分片,每个分片由一个Map任务进行处理。在一些特殊的场景下,我们可能要对数据进行分组,将不同类型的数据处理后存放到不同的目标文件中。由于Reducer任务只有一个,所有Map任务的输出只会由单独的Reducer任务进行处理,因此所生成的数据文件只有一个。这时,分区器(Partitioner)就出现了。 阅读全文 »
【Hadoop10】:MapReduce自定义Writable对象 发表于 2019-03-10 | 分类于 Hadoop | | 阅读次数: 前言在之前的章节中,我们介绍了Hadoop中的序列化,即Writable。虽然Hadoop自身提供了很多内置的Writable实现,可以满足大部分需求。但在有些场景下,我们需要根据自己的需求构造一个新的实现。有了定制的Writable类型,就可以完全控制二进制表示和排序顺序。此外,在对于数据字段较多的场景下,我们也会构建一个新的实现,来包装这些字段。 阅读全文 »
【Hadoop09】:MapReduce执行流程分析 发表于 2019-03-09 | 分类于 Hadoop | | 阅读次数: 前言在上一章中,我们对WordCount程序进行了详细的分析,并简单介绍了WordCount程序的运行流程。今天我们从来详细分析下MapReduce的执行流程,并引出一些核心的概念与组件。本章非常重要,理解了运行机制和原理,不仅有助于排查故障,更能够根据需要进行系统调优。 在MapReduce中,最重要的一个环节是Shuffle,深刻理解Shuffle机制对于理解MapReduce程序的执行流程非常重要,此外,Shuffle的调优也是MapReduce中非常重要的环节,只有理解了原理,才能有针对的设置参数。 阅读全文 »
【Hadoop08】:WordCount详解 发表于 2019-03-07 | 分类于 Hadoop | | 阅读次数: 前言在上一章中,我们介绍了MapReduce的基本概念,并编写了一个WordCount程序提交到集群上运行。想必大家在编写完第一个程序后,会有很多疑惑,本章会对该程序进行详细剖析,把知识点理解透彻。 阅读全文 »
【Hadoop07】:MapReduce基础 发表于 2019-03-07 | 分类于 Hadoop | | 阅读次数: 前言MapReduce是一种可用于数据处理的编程模型,用于解决大数据场景下数据处理的问题。该模型比较简单,但要想写出有用的程序却不太容易。Hadoop可以运行各种语言版本的MapReduce程序,不过我们这里以Java语言为主。 MapReduce的核心思想是”分而治之”,简单来说,就是将要处理的数据集,拆分成多个任务并行在多个节点上运行,然后将任务的运行结果收集起来,再进行全局的计算,最后将结果保存。 阅读全文 »
【Hadoop06】:Hadoop压缩 发表于 2019-03-06 | 分类于 Hadoop | | 阅读次数: 前言Hadoop集群能够存储非常庞大数量的数据文件,我们可以使用压缩技术来降低存储空间的使用量。 将文件压缩有两大好处:减少存储文件所需要的磁盘空间,并加速数据在网络和磁盘上的传输。这两大好处在处理大量数据时相当重要,所以我们值得仔细考虑在Hadoop中文件压缩的用法。 注意,Hadoop的压缩并不是指你上传一个文本文件,自动为你压缩,或者说你下载一个压缩文件,自动帮你解压。而是指,MapReduce程序在进行数据处理时,可以自动将所支持的压缩文件解压缩,转换为普通文本数据进行处理,以及处理完成后,根据所配置的压缩算法,将结果数据压缩后保存至HDFS。 阅读全文 »
【Hadoop05】:Hadoop基准测试 发表于 2019-03-06 | 分类于 Hadoop | | 阅读次数: 前言在创建好集群后,为了测试集群性能以及集群是否正确,可以运行测试程序来验证这个问题。当然,我们也可以通过基准测试来不断的优化集群参数,或者在不同的集群运行相同的基准测试,对比集群之间的性能差异。 Hadoop自带了若干个基准测评程序,能够很方便的运行。下面我们运行一些测试程序,来说明如何在Hadoop集群上进行性能测试。 阅读全文 »
【Hadoop04】:HDFS基本操作 发表于 2019-03-06 | 分类于 Hadoop | | 阅读次数: 前言在熟悉了HDFS的概念后,下面我们使用客户端对HDFS进行一些基本操作,例如读取文件、新建目录、移动文件、删除数据、列出目录等等。本章我们会使用hadoop自带的命令行工具以及Java客户端两种方式与HDFS进行交互。 阅读全文 »