![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Hadoop
文章平均质量分 87
lzm1340458776
这个作者很懒,什么都没留下…
展开
-
MapReduce过程详解
Hadoop越来越火,围绕Hadoop的子项目更是增长迅速,光Apache官网上列出来的就十几个,但是万变不离其宗,大部分项目都是基于Hadoop Common。MapReduce更是核心中的核心。那么到底什么是MapReduce,它具体是怎么工作的呢?关于它的原理,说简单也简单,随便画个图喷一下Map和Reduce两个阶段似乎就完了。但其实这里面还包含了很多的子阶段,尤其是Shuffle转载 2015-04-04 10:57:02 · 1662 阅读 · 1 评论 -
Hadoop常用端口
常用端口设置1.1HDFS端口参数描述默认配置文件示例fs.default.namenamenode RPC交互端口8020core-site.xmlliaozhongmin:8020dfs.http.address NameNode web管理端口50070hdfs- site.xmlliaozhon转载 2015-01-04 16:50:30 · 1806 阅读 · 0 评论 -
分布式文件系统以及对相关节点的简单理解
Distributed File System1.数据量越来越多,在一个操作系统管辖的范围存储不下来,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,分布式文件系统由此产生。2.它是一种允许文件通过网络在多台主机上分享的文件系统,可以让多台机器上的用户分享文件和存储空间。3.通透性,让实际上是通过网络来访问文件的动作,由程序与用原创 2015-01-04 15:24:24 · 2700 阅读 · 0 评论 -
MapReduce表连接之半连接SemiJoin
一:背景SemiJoin,一般称为半连接,其原理是在Map端过滤掉一些不需要join的数据,从而大大减少了reduce和Shuffle的时间,因为我们知道,如果仅仅使用Reduce端连接,那么如果一份数据,存在大量的无效数据,而这些数据在join中并不需要,但是因为没有做过预处理,所以这些数据直到真正执行reduce函数时,才被定义为无效数据,但是这个时候已经执行过了Shuffle、merge转载 2015-01-22 11:55:23 · 5435 阅读 · 1 评论 -
Hadoop日志存放位置
初学者运行MapReduce作业时,经常会遇到各种错误,由于缺乏经验,往往不知所云,一般直接将终端打印的错误贴到搜索引擎上查找,以借鉴前人的经验。然而,对于Hadoop而言,当遇到错误时,第一时间应该是查看日志,日志里通常会有详细的错误原因提示,本文将总结Hadoop MapReduce日志存放位置,帮助初学者定位自己遇到的错误。Hadoop MapReduce日志分为两部分,一部分是转载 2015-01-22 14:00:46 · 3107 阅读 · 0 评论 -
Hadoop中SecondaryNameNode工作机制
首先来看一下HDFS的结构,如下图:如上图,在HDFS架构中,NameNode是职责是管理元数据信息,DataNode的职责是负责数据存储,那么SecondaryNameNode的作用是什么呢?其实SecondaryNameNode是hadoop1.x中HDFS HA的一个解决方案,下面我们来看一下SecondaryNameNode工作的流程,如下图:1.Nam原创 2015-01-04 20:19:17 · 4724 阅读 · 0 评论 -
Hadoop的Shell操作
既然HDFS是存取数据的分布式文件系统,那么对HDFS的操作,就是对HDFS的操原创 2014-07-20 16:01:16 · 2205 阅读 · 0 评论 -
MapReduce表连接操作之Map端join
一:背景MapReduce提供了表连接操作其中包括Map端join、Reduce端join还有半连接,现在我们要讨论的是Map端join,Map端join是指数据到达map处理函数之前进行合并的,效率要远远高于Reduce端join,因为Reduce端join是把所有的数据都经过Shuffle,非常消耗资源。二:技术实现基本思路:(1):需要join的两个文件,一个存储在H原创 2015-01-21 17:26:59 · 6774 阅读 · 3 评论 -
MapReduce程序打成jar包在远程服务器运行
一:背景有时候,我们不想再程序中显示的指定输入路径和输出路径,因为那样不太灵活,不利于扩展,Hadoop提供了将程序打成jar包发到集群上通过命令行参数指定输入输出路径的方式运行程序。二:技术实现(1):主类继承Configured类还要实现Tool接口。(2):将我们以前写的设置各种参数的代码写在run()方法中(实现接口必须要实现run方法)。(3):还有一句很关键原创 2015-01-17 20:55:27 · 4578 阅读 · 0 评论 -
Hadoop二次排序及MapReduce处理流程实例详解
一、概述MapReduce框架对处理结果的输出会根据key值进行默认的排序,这个默认排序可以满足一部分需求,但是也是十分有限的,在我们实际的需求当中,往往有要对reduce输出结果进行二次排序的需求。对于二次排序的实现,网络上已经有很多人分享过了,但是对二次排序的实现原理及整个MapReduce框架的处理流程的分析还是有非常大的出入,而且部分分析是没有经过验证的。本文将通过一个实际的MapRe转载 2015-01-19 17:17:17 · 14191 阅读 · 12 评论 -
MapReduce排序之 二次排序
一:背景Hadoop中虽然有自动排序和分组,由于自带的排序是按照Key进行排序的,有些时候,我们希望同时对Key和Value进行排序。自带的排序功能就无法满足我们了,还好Hadoop提供了一些组件可以让开发人员进行二次排序。二:技术实现我们先来看案例需求#需求1: 首先按照第一列数字升序排列,当第一列数字相同时,第二列数字也升序排列(列之间用制表符\t隔开)3 33原创 2015-01-18 20:25:54 · 1937 阅读 · 0 评论 -
Hadoop自定义分区Partitioner
一:背景为了使得MapReduce计算后的结果显示更加人性化,Hadoop提供了分区的功能,可以使得MapReduce计算结果输出到不同的分区中,方便查看。Hadoop提供的Partitioner组件可以让Map对Key进行分区,从而可以根据不同key来分发到不同的reduce中去处理,我们可以自定义key的分发规则,如数据文件包含不同的省份,而输出的要求是每个省份对应一个文件。二原创 2015-01-17 22:03:17 · 3551 阅读 · 0 评论 -
MapReduce自定义分组Group
一:背景在上一篇文章中我们可以对两列数据进行排序,即完成了当第一列相同时第二列数据升序排列的功能,现在我们需要进一步完善一个功能,那就是当第一列相同时求出第二列的最小值或最大值,Hadoop提供了自定义分组的功能,可以满足我们的需求。二:技术实现我们先来看看需求#当第一列不相等时,第一列按升序排列,当第一列相等时,求出对应第二列的最小值3 33 23 12 22转载 2015-01-18 20:31:04 · 5972 阅读 · 0 评论 -
Hadoop Combiner组件
一:背景在MapReduce模型中,reduce的功能大多是统计分类类型的总量、求最大值最小值等,对于这些操作可以考虑在Map输出后进行Combiner操作,这样可以减少网络传输负载,同时减轻reduce任务的负担。Combiner操作是运行在每个节点上的,只会影响本地Map的输出结果,Combiner的输入为本地map的输出结果,很多时候Combiner的逻辑和reduce的逻辑是相同的,因原创 2015-01-16 18:52:43 · 949 阅读 · 0 评论 -
MapReduce自定义RecordReader
一:背景RecordReader表示以怎样的方式从分片中读取一条记录,每读取一条记录都会调用RecordReader类,系统默认的RecordReader是LineRecordReader,它是TextInputFormat对应的RecordReader;而SequenceFileInputFormat对应的RecordReader是SequenceFileRecordReader。LineR原创 2015-01-23 12:38:28 · 6691 阅读 · 0 评论 -
MapReduce多个作业协调处理
一:背景当数据来源不同的时候,比如用户表在MYSQL数据库中,而销售表在HDFS中,我们可以启动多个作业来依次处理这些数据源。二:技术实现#需求#用户表user在MYSQL数据库中,数据如下:1 liaozhongmin2 lavimer3 liaozemin#销售表user_data在HDFS中,数据如下:1 122 282 363 88#我们原创 2015-01-25 14:55:18 · 1452 阅读 · 0 评论 -
Hadoop多文件输出之MultipleOutputFormat和MultipleOutputs
直到目前,我们看到的所有MapReduce作业都输出一组文件。但是,在一些场合下,经常要求我们输出多组文件或者把一个数据集分为多个数据集更为方便;比如将一个log里面属于不同业务线的日志分开来输出,并且交给相关的业务线。用过旧API的人应该知道,旧API中有org.apache.hadoop.mapred.lib.MultipleOutputFormat和org.apache.hadoop.m转载 2015-01-26 12:24:49 · 2716 阅读 · 1 评论 -
MapReduce 表连接之Reduce端Join
一:背景Reduce端连接比Map端连接更为普遍,因为输入的数据不需要特定的结构,但是效率比较低,因为所有数据都必须经过Shuffle过程。二:技术实现基本思路(1):Map端读取所有的文件,并在输出的内容里加上标示,代表数据是从哪个文件里来的。(2):在reduce处理函数中,按照标识对数据进行处理。(3):然后根据Key去jo原创 2015-04-10 13:59:58 · 1126 阅读 · 0 评论 -
MapReduce排序
一:背景数据排序是许多实际任务执行时需要完成的第一项工作,比如给销售额进行排名、求top N等操作都需要用到排序,使用MapReduce对数据进行简单排序思路是非常简单的。因为MapReduce本身就是支持排序的,MapReduce默认是对Key进行排序,我们可以将要排序的数据作为key进行输出就自动完成排序咯。二:技术实现#需求:现有如下数据,按从小到大进行排列123原创 2015-04-10 13:34:29 · 2226 阅读 · 0 评论 -
链式MapReduce:ChainMapper和ChainReducer
一:背景Hadoop2.0开始MapReduce作业支持链式处理,类似于富士康生产苹果手机的流水线,每一个阶段都有特定的任务要处理,比如提供原配件——>组装——打印出厂日期,等等。通过这样进一步的分工,从而提高了生成效率,我们Hadoop中的链式MapReduce也是如此,这些Mapper可以像水流一样,一级一级向后处理,有点类似于Linux的管道。前一个Mapper的输出结果直接可以作为下一原创 2015-04-10 10:47:44 · 3085 阅读 · 1 评论 -
MapReduce表连接操作之Reduce端join
一:背景Reduce端连接比Map端连接更为普遍,因为输入的数据不需要特定的结构,但是效率比较低,因为所有数据都必须经过Shuffle过程。二:技术实现基本思路(1):Map端读取所有的文件,并在输出的内容里加上标示,代表数据是从哪个文件里来的。(2):在reduce处理函数中,按照标识对数据进行处理。(3):然后根据Keyde的join来求出结果直接输出。转载 2015-01-21 17:58:22 · 6579 阅读 · 2 评论 -
MapReduce Shuffle过程详解
Shuffle过程是MapReduce的核心,也被称为奇迹发生的地方。要想理解MapReduce,Shuffle是必须要了解的。我看过很多相关方面的资料,但每次看完都云里雾里的绕着,很难理清大致的逻辑,反而越搅越乱。前端时间在做MapReduce job性能调优的工作,需要深入代码研究MapReduce的运行机制,这才对Shuffle探了个究竟。考虑到之前我在看相关资料而看不懂时很恼火,所以在这里转载 2015-01-28 17:44:50 · 2519 阅读 · 0 评论 -
Hadoop根据SecondaryNameNode恢复NameNode
1.制造NameNode宕机的情况1.1):kill 掉name转载 2014-08-25 15:06:34 · 2130 阅读 · 0 评论 -
Hadoop2.5.2 Eclipse插件安装及相关问题
资源下载1.下载Hadoop-2.5.2.tar.gz http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.5.2/hadoop-2.5.2.tar.gz2.下载hadoop2.5.2-eclipse-plugin http://download.csdn.net/detail/lzm1340458776/85195153.原创 2015-03-20 22:02:54 · 1236 阅读 · 0 评论 -
国内第一篇详细讲解Hadoop2的automatic HA+Federation+Yarn配置的教程
前言hadoop是分布式文件系统,运行在Linux之上,配置起来相对复杂。对于Hadoop1,很多同学就因为不能搭建正确的运行环境,导致学习兴趣锐减。不过,我有免费的学习视频,请点击这里。hadoop2出来后,解决了hadoop1的几个固有缺陷,比如单点故障、资源利用率低、支持作业类型少等问题,结构发生了很大变化,是hadoop未来使用的一个趋势。当然配置也更加复杂,网上也没有一篇详细的教转载 2015-03-27 19:56:52 · 1411 阅读 · 0 评论 -
解析Hadoop新一代MapReduce框架Yarn
背景Yarn是一个分布式的资源管理系统,用以提高分布式的集群环境下的资源利用率,这些资源包括内存、IO、网络、磁盘等等。其产生的原因是为了解决原MapReduce框架的不足。最初MapReduce的committer们还可以周期性的在已有的代码上进行修改,可是随着代码的增加以及原MapReduce框架设计的不足,在原MapReduce框架上进行修改变得原来越困难,所以MapReduce的com转载 2015-03-17 15:21:34 · 919 阅读 · 0 评论 -
Hadoop新MapReduce框架Yarn详解
简介本文介绍了Hadoop自0.23.0版本后新的MapReduce框架(Yarn)原理,优势,运行机制和配置方法等,着重介绍新的yarn框架相对于原框架的差异及改进,并通过Demo示例详细介绍了在新的Yarn框架下搭建和开发Hadoop程序的方法。读者通过本文中新旧Hadoop MapReduce框架的对比,更深刻理解新的yarn框架技术与那里和设计思想,文中的Demo代码经过微小修改既可用转载 2015-03-17 09:40:29 · 1692 阅读 · 0 评论 -
国内最全最详细的Hadoop2.2.0集群的HA高可靠的最简单配置
简介hadoop中的NameNode好比是人的心脏,非常重要,绝对不可以停止工作。在Hadoop1时代,只有一个NameNode。如果该NameNode数据丢失或者不能工作,那么整个集群就不能恢复了。这是Hadoop1中的单点问题,也是Hadoop1不可靠的表现,如下图所示。这个问题在hadoop2.x中得到了解决。Hadoop2.2.0中HDFS的高可靠指的是可以同时启动2个Na转载 2015-03-27 13:56:47 · 1414 阅读 · 0 评论 -
Hadoop2.x的HA介绍
这篇文章主要介绍的是Hadoop2.0的HA(High Avalability 高可用性),在介绍hadoop2.0的HA配置之前,本文先介绍hadoop2.0 HA的基本原理和2种方式。1.概述在Hadoop2.0之前,NameNode只有一个,存在单点问题(虽然Hadoop1.0有SecondaryNameNode,checkPointNode、buckcupnode这些,但是单点问题转载 2015-03-27 10:50:47 · 1154 阅读 · 0 评论 -
MapReduce二次排序
本文主要介绍下二次排序的实现方式我们知道MapReduce是按照key来进行排序的,那么如果有个需求就是先按照第一个字段排序,在第一个字段相等的情况下,按照第二个字段排序,这就是传说中的二次排序。下面就具体说一下二次排序的实现方式主要就是4点1.自定义一个Key为什么要自定义一个Key,我们知道MapReduce中排序就是按照Key来排序的,我们转载 2015-01-19 17:23:44 · 3205 阅读 · 0 评论 -
Hadoop中的DBInputFormat
一:背景为了方便MapReduce直接访问关系型数据库(MYSQL、Oracle等),Hadoop提供了DBInputFormat和DBOutputFormat两个类,通过DBInputFormat类把数据库表的数据读入到HDFS中,根据DBOutputFormat类把MapReduce产生的结果集导入到数据库中。二:实现我们以MYSQL数据库为例,先建立数据库、表以及插入数据,如原创 2015-01-15 12:40:13 · 2289 阅读 · 0 评论 -
MapReduce默认Counter的含义
MapReduce Counter为我们提供了一个窗口:观察MapReduce job运行期的各种细节数据。今年三月份,我曾专注于MapReduce性能调优工作,是否优化的绝大多评估都是基于这些Counter的数值表现。MapReduce自带了许多默认Counter,可能有些朋友对它们有些疑问,现在我们分析下这些默认Counter的含义,方便大家观察job结果。我的分析是基于Hadoop0.2转载 2015-01-16 14:30:11 · 777 阅读 · 0 评论 -
基于计算机资源分析Hadoop的默认Counter
前言由于项目中,需要统计每个业务组使用的计算资源,如CPU、内存、IO读写、网络流量。所以需要阅读源码查看Hadoop的默认Counter。MapReduce Counter可以观察MapReduce Job运行期的一些数据细节,Counter有"组group"的概念,用于表示逻辑上相同范围的所有数值。cpu 如何衡量mapreduce的任务的计算量呢,如果按照任务的运行时间,转载 2015-01-16 16:11:54 · 2452 阅读 · 0 评论 -
hadoop MapReduce实例解析
1、MapReduce理论简介1.1 MapReduce编程模型MapReduce采用“分而治之”的思想,把对大规模数据集的操作,分发给一个主节点管理下的各个分节点共同完成,然后通过整合各个节点的中间结果,得到最终结果。简单的说,MapReduce就是“任务的分解与结果的汇总”。在Hadoop中,用于执行MapReduce任务的机器角色有两个:一个是JobTra转载 2015-01-10 12:13:53 · 1193 阅读 · 0 评论 -
MapReduce TopK问题实际应用
一:背景TopK问题应该是海量数据处理中应用最广泛的了,比如在海量日志数据处理中,对数据清洗完成之后统计某日访问网站次数最多的前K个IP。这个问题的实现方式并不难,我们完全可以利用MapReduce的Shuffle过程实现排序,然后在Reduce端进行简单的个数判断输出即可。这里还涉及到二次排序,不懂的同学可以参考我之前的文章。二:技术实现#我们先来看看一条Ngnix服务器的日原创 2015-01-28 11:51:04 · 4250 阅读 · 4 评论 -
MapReduce求平均值
一:背景求平均数是MapReduce比较常见的算法,求平均数的算法也比较简单,一种思路是Map端读取数据,Reduce端汇总并且统计记录数,然后作商即可。二:技术实现#需求:现有成绩单如下,求出每个同学的平均成绩小民 语文 80小民 数学 98小民 英语 89小芳 语文 88小芳 数学 99小芳 英语 90实现代码:public class Averag原创 2015-01-28 11:36:24 · 10819 阅读 · 2 评论 -
MapReduce求最大值
一:背景求最值是MapReduce的常见算法,应用也很广泛,比如说求出某大型销售网站各个站点销售量最大的商品,人口最多的城市等等,MapReduce求最大值的关键是要实现cleanUp()方法。二:技术实现#需求 有两个文件max和max2,现要求合并两个并找出最大值。#max文件数据如下:10295039889929100389#max2文件数据如原创 2015-01-28 11:22:50 · 11004 阅读 · 2 评论 -
Hadoop 数据压缩
文件压缩主要有两个好处,一是减少了存储文件所占空间,另一个就是为数据传输提速。在hadoop大数据的背景下,这两点尤为重要,那么我现在就先来了解一下hadoop的文件压缩。Hadoop里支持很多种压缩格式,看下表:DEFLATE是同时使用了LZ77算法与哈弗曼编码(Huffman Coding)的一个无损数据压缩算法,源代码可以在zlib库中找到。gzip是以DEFLATE算法为基转载 2015-01-08 19:38:32 · 1349 阅读 · 0 评论 -
MapReduce去重
一:背景很多数据源中的数据都是含有大量重复的,为此我们需要将重复的数据去掉,这也称为数据的清洗,MapReduce从Map端到Reduce端的Shuffle过程天生就有去重的功能,但是这是对输出的Key作为参照进行去重的。所以我们可以将Map端读入Value作为Key输出,就可以很方便的实现去重了。二:技术实现#需求 有两个文件file0和file1。将两个文件中的内容合并去重原创 2015-01-28 11:03:26 · 4949 阅读 · 2 评论 -
Hadoop序列化与Writable源码分析
序列化的概念 1.序列化(Serialization)是指把结构化对象转化为字节流。 2.反序列化(Deserialization)是序列化的逆过程,即把字节流转回结构化对象Hadoop序列化的特点 1.序列化格式特点 ——紧凑:高效使用 存储空间 ——快速:读写数据的额外开销小 ——可扩展转载 2015-01-07 11:24:33 · 1412 阅读 · 0 评论