
Mapreduce
努力的凹凸曼
这个作者很懒,什么都没留下…
展开
-
MapReduce的输入格式
1. InputFormat接口 InputFormat接口包含了两个抽象方法:getSplits()和creatRecordReader()。InputFormat决定了Hadoop如何对文件进行分片和接收, 它能够从一个 job 中得到一个 split 集合(InputSplit[]),然后再为这个 split 集合配上一个合适的 RecordReader(getRecordReader)来...原创 2018-03-31 10:40:15 · 1988 阅读 · 0 评论 -
MapReduce 二次排序
默认情况下,Map 输出的结果会对 Key 进行默认的排序,但是有时候需要对 Key 排序的同时再对 Value 进行排序,这时候就要用到二次排序了。下面让我们来介绍一下什么是二次排序。二次排序原理 我们把二次排序主要分为以下几个阶段。 Map 起始阶段 在Map阶段,使用 job.setInputFormatClass() 定义的 InputFormat...原创 2018-05-10 16:38:13 · 328 阅读 · 0 评论 -
Hadoop实战:reduce端实现Join
项目描述 现在假设有两个数据集:气象站数据库和天气记录数据库,并考虑如何合二为一。一个典型的查询是:输出气象站的历史信息,同时各行记录也包含气象站的元数据信息。 气象站和天气记录合并之后的示意图如下所示。测试数据 启动Hadoop集群,然后在hdfs中创建join文件夹用于存放测试数据station.txt和records.txt,他们分别代表气象站数据库和天...原创 2018-05-10 10:14:17 · 268 阅读 · 0 评论 -
MapReduce中的Join算法
在关系型数据库中 Join 是非常常见的操作,各种优化手段已经到了极致。在海量数据的环境下,不可避免的也会碰到这种类型的需求, 例如在数据分析时需要连接从不同的数据源中获取到数据。不同于传统的单机模式,在分布式存储下采用MapReduce 编程模型,也有相应的处理措施和优化方法。 现在假设有两个数据集:气象站数据库和天气记录数据库,并考虑如何合二为一。一个典型的查询是:输...原创 2018-05-09 10:34:16 · 526 阅读 · 0 评论 -
MapReduce错误之Error: java.lang.RuntimeException: java.lang.NoSuchMethodException的解决方法
今天跑MapReduce项目的时候遇到了这个问题,日志如下所示:18/03/27 01:23:15 DEBUG ipc.ProtobufRpcEngine: Call: getDiagnostics took 19msError: java.lang.RuntimeException: java.lang.NoSuchMethodException: com.hadoop.train.Anagr...原创 2018-03-29 10:06:56 · 4262 阅读 · 0 评论 -
MapReduce项目之气温统计
这一批博文是博主由博客园搬移过来的,所以时间上可能存在混乱,希望大家见谅! 在本博文中,我们要学习一个挖掘气象数据的程序。气象数据是通过分布在美国全国各地区的很多气象传感器每隔一小时进行收集,这些数据是半结构化数据且是按照记录方式存储的,因此非常适合使用 MapReduce 程序来统计分析。 我们使用的数据来自美国国家气候数据中心、美国国家海洋和大气管理局(简称 NCDCNOAA),这些数据按...原创 2018-03-27 11:24:31 · 2456 阅读 · 0 评论 -
使用MRUnit对MapReduce进行单元测试
1. 为什么需要单元测试 一旦MapReduce项目提交到集群之后,若是出现问题是很难定位和修改的,只能通过打印日志的方式进行筛选。又如果数据和项目较大时,修改起来则更加麻烦。所以,在将MapReduce项目提交到集群上之前,我们需要先对其进行单元测试。2. 使用什么框架进行单元测试 MRUnit是Cloudera公司专为Hadoop MapReduce写的单元测试框架,其API非常简洁实用。...原创 2018-03-28 10:09:33 · 360 阅读 · 0 评论 -
No lease on /目录: File does not exist. [Lease. Holder: DFSClient_NONMAPREDUCE_-2059237550_1..]错误及解决方法
感觉程序员的世界真是一个变幻无常且精彩绝伦的世界,每次跑程序都会发现不一样的问题。今天跑MapReduce程序来统计邮箱次数时遇到了一个问题,明明一样的代码,别人能跑,我却跑不了。我相信,基本做这行的都遇到过这种问题。好了,话不多说,来聊聊今天的错误吧。 根据日志查看到报的错误为:No lease on /目录: File does not exist. [Lease. Holder: D...原创 2018-04-02 15:26:15 · 12314 阅读 · 0 评论 -
MapReduce基本流程与设计思想初步
这一批博文是博主由博客园搬移过来的,所以时间上可能存在混乱,希望大家见谅!1.MapReduce是什么? MapReduce是一种编程模型,用于大规模数据集的并行运算。它借用了函数式的编程概念,是Google发明的一种数据处理模型。 主要思想为:Map(映射)和Reduce(化简)。 一个Map/Reduce作业(Job)通常会把输入的数据集切分为若干独立的数据块,由Map任务(Task)...原创 2018-03-27 11:16:24 · 791 阅读 · 0 评论 -
Hadoop与分布式开发
这一批博文是博主由博客园搬移过来的,所以时间上可能存在混乱,希望大家见谅! 分布式系统(也是分布式软件系统)是指在通信网络互联的多处理机体系结构上执行任务的系统,包括:分布式操作系统、分布式程序设计语言及其编译(解释)系统、分布式文件系统和分布式数据库系统等。Hadoop是分布式软件系统中文件系统层的软件,它实现了分布式文件系统和部分分布式数据库系统的功能。Hadoop中的分布式文件系统HDFS...原创 2018-03-27 11:18:54 · 338 阅读 · 0 评论 -
MapReduce作业的执行流程
这一批博文是博主由博客园搬移过来的,所以时间上可能存在混乱,希望大家见谅!MapReduce任务执行总流程 一个MapReduce作业的执行流程是:代码编写 -> 作业配置 -> 作业提交 -> Map任务的分配和执行 -> 处理中间结果 -> Reduce任务的分配和执行 -> 作业完成,而在每个任务的执行过程中又包含输入准备 -> 任务执行 ->...原创 2018-03-27 11:20:05 · 3610 阅读 · 0 评论 -
在Eclipse下搭建Hadoop开发环境
这一批博文是博主由博客园搬移过来的,所以时间上可能存在混乱,希望大家见谅! 在前面的博文中博主展示了如何在虚拟机中搭建Hadoop的单节点伪分布集群,今天给大家介绍一下如何在Eclipse环境中搭建Hadoop的管理和开发环境,话不多说,下面我们就进入正题吧!1.JDK安装配置 如果还没有安装Eclipse的朋友们需要先安装并配置好JDK,再下载安装Eclipse,这些我相信大家走到这一步的时...原创 2018-03-27 11:21:25 · 1012 阅读 · 0 评论 -
MapReduce编程入门实例之WordCount:分别在Eclipse和Hadoop集群上运行
这一批博文是博主由博客园搬移过来的,所以时间上可能存在混乱,希望大家见谅!上一篇博文如何在Eclipse下搭建Hadoop开发环境,今天给大家介绍一下如何分别分别在Eclipse和Hadoop集群上运行我们的MapReduce程序!1. 在Eclipse环境下运行MapReduce程序(WordCount程序) 首先看一下我的项目结构和WordCount程序: 其中word.txt将作为我们测...原创 2018-03-27 11:22:47 · 689 阅读 · 0 评论 -
MapReduce错误之log4j.properties错误及配置详解
这一批博文是博主由博客园搬移过来的,所以时间上可能存在混乱,希望大家见谅!错误提示如下:当在Eclipse上运行MapReduce程序遇到以上问题时,请检查项目中是否有log4j.properties配置文件,或者配置文件是否正确。刚接触Hadoop的时候不太了解log4j.properties配置的含义和作用是什么,后来意识到了其重要性,但网上的内容大多太杂太单一,因此想整理一份出来供大家参考。...原创 2018-03-27 11:23:53 · 1423 阅读 · 0 评论 -
Hadoop体系结构
这一批博文是博主由博客园搬移过来的,所以时间上可能存在混乱,希望大家见谅! 在前面的博文中,我已经介绍过Hadoop的基本概念了(见博文初识Hadoop),今天来介绍一下Hadoop的体系结构。 Hadoop的两大核心是HDFS和MapReduce,而整个Hadoop的体系结构主要是通过HDFS来实现分布式存储的底层支持的,并且它会通过MapReduce来实现分布式并行任务处理的程序支持。下面...原创 2018-03-27 11:12:57 · 925 阅读 · 0 评论 -
Hadoop计数器
1. MapReduce计数器是什么 计数器是用来记录Job的执行进度和状态的,其作用类似于日志。我们可以在程序的某个位置插入计数器,记录数据或进度的变化情况。2. MapReduce计数器能做什么 计数器为我们提供了一个窗口,用于观察Job运行期间的各种细节数据,对MapReduce的性能调优很有帮助,MapReduce性能优化的评估大部分都是基于这些计数器Counter的数值来表现的。3....原创 2018-05-08 16:53:39 · 916 阅读 · 0 评论