MapReduce
文章平均质量分 85
wisgood
这个作者很懒,什么都没留下…
展开
-
Hadoop里的设计模式之单例模式
单例模式是创建性模式之一,算是比较简单好理解的了。单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。我们以Hadoop2.7版本中的ShutdownHookManager举例讲解单例模式的几个需要注意的地方: 1)将构造方法私有化。单例模式通常是在类内部提供一个可供使用的对象,通过公共接口对外提供该对象。为了避免在类外面通过new的方式再次生成对象,通常都会将构造方法私有化...原创 2018-06-22 16:53:41 · 1322 阅读 · 0 评论 -
hadoop深入研究:(九)——mapreduce中的压缩
转载请注明出处:http://blog.csdn.net/lastsweetop/article/details/9187721作为输入当压缩文件做为mapreduce的输入时,mapreduce将自动通过扩展名找到相应的codec对其解压。作为输出当mapreduce的输出文件需要压缩时,可以更改mapred.output.compress为true,mapped.out转载 2013-12-31 15:21:45 · 7400 阅读 · 0 评论 -
mapreduce 比较接口
Comparator和Comparable是Jdk中用来实现比较操作的两个常用接口。Comparator,用来比较两个对象是否相等,属于双目运算的,比较方法为compare(T o1, T o2),例如 Comparator.compare(a,b)Comparable,用来一个对象与另一个对象比较,属于单目运算的方法,比较方法为compareTo(T o),例如a.compareTo(b原创 2013-11-25 15:09:38 · 1923 阅读 · 0 评论 -
hadoop深入研究:(二)——java访问hdfs
转载请注明出处,http://blog.csdn.net/lastsweetop/article/details/9001467所有源码在github上,https://github.com/lastsweetop/styhadoop读数据使用hadoop url读取比较简单的读取hdfs数据的方法就是通过java.net.URL打开一个流,不过在这之前先要预先调用它的setU转载 2013-12-02 20:37:10 · 4802 阅读 · 0 评论 -
Pig、Hive、MapReduce 解决分组 Top K 问题
问题:有如下数据文件 city.txt (id, city, value)cat city.txt 1 wh 5002 bj 6003 wh 1004 sh 4005 wh 2006 bj 1007 sh 2008 bj 3009 sh 900需要按 city 分组聚合,然后从每组数据中取出前两条value最大的记录。1、这是实际业务转载 2013-12-09 21:55:52 · 5853 阅读 · 0 评论 -
BloomFilter 简介及在 Hadoop reduce side join 中的应用
1、BloomFilter能解决什么问题? 以少量的内存空间判断一个元素是否属于这个集合, 代价是有一定的错误率 2、工作原理 1. 初始化一个数组, 所有位标为0, A={x1, x2, x3,…,xm} (x1, x2, x3,…,xm 初始为0) 2. 将已知集合S中的每一个数组, 按以下方式映射到A中 2.0转载 2013-12-09 21:21:59 · 4120 阅读 · 3 评论 -
Hadoop小文件带来的问题以及解决方案
小文件指的是那些size比HDFS的block size(默认64M)小的多的文件。Hadoop适合处理少量的大文件,而不是大量的小文件。1, 小文件导致的问题首先,在HDFS中,任何block,文件或者目录在内存中均以对象的形式存储,每个对象约占150byte,如果有1000 0000个小文件,每个文件占用一个block,则namenode大约需要2G空间。如果存储1亿个文件,则原创 2013-12-02 21:49:03 · 7783 阅读 · 2 评论 -
MapReduce 中的两表 join 几种方案简介
1. 概述在传统数据库(如:MYSQL)中,JOIN操作是非常常见且非常耗时的。而在HADOOP中进行JOIN操作,同样常见且耗时,由于Hadoop的独特设计思想,当进行JOIN操作时,有一些特殊的技巧。本文首先介绍了Hadoop上通常的JOIN实现方法,然后给出了几种针对不同输入数据集的优化方法。2. 常见的join方法介绍假设要进行join的数据分别来自File转载 2013-12-09 21:37:33 · 1290 阅读 · 0 评论 -
如何在Hadoop中控制Map的数量
很多文档中描述,Mapper的数量在默认情况下不可直接控制干预,因为Mapper的数量由输入的大小和个数决定。在默认情况下,最终input占据了多少block,就应该启动多少个Mapper。如果输入的文件数量巨大,但是每个文件的size都小于HDFS的blockSize,那么会造成启动的Mapper等于文件的数量(即每个文件都占据了一个block),那么很可能造成启动的Mapper数量超出限制而导转载 2013-12-08 22:02:38 · 987 阅读 · 0 评论 -
hadoop深入研究:(七)——压缩
转载自 http://blog.csdn.net/lastsweetop/article/details/9162031文件压缩主要有两个好处,一是减少了存储文件所占空间,另一个就是为数据传输提速。在hadoop大数据的背景下,这两点尤为重要,那么我现在就先来了解下hadoop中的文件压缩。hadoop里支持很多种压缩格式,我们看一个表格:DEFLATE是同时使转载 2013-12-02 14:40:32 · 1196 阅读 · 0 评论 -
mapreduce中map个数的确定
mapreduce map个数的影响因素原创 2013-12-07 16:33:15 · 10349 阅读 · 0 评论 -
hadoop面试题
Q1. Name the most common InputFormats defined in Hadoop? Which one is default ? Following 2 are most common InputFormats defined in Hadoop - TextInputFormat- KeyValueInputFormat- Seque转载 2013-11-30 18:29:30 · 1813 阅读 · 0 评论 -
HDFS------hadoop fs -ls命令的执行过程
当我们在命令行打如下命令:hadoop fs -ls .我们知道将显示出文件系统中的根目录下的文件,那究竟在代码里如何执行的呢,今天就一看究竟。当我们按下这条命令,首先找到bin目录下的hadoop脚本,其中有一行脚本:elif [ "$COMMAND" = "fs" ] ; then CLASS=org.apache.hadoop.fs.FsShell H转载 2013-11-30 10:45:41 · 2171 阅读 · 0 评论 -
【hadoop】hadoop参数优化
Hadoop实战-中高级部分 之 Hadoop作业调优参数调整及原理 浏览(2826)|评论(1) 交流分类:Java|笔记分类: Hadoop实战-中…… Hadoop RestFulHadoop HDFS原理1Hadoop HDFS原理2Hadoop作业调优参数调整及原理Hadoop HAHadoop MapReduce高级编程Had转载 2013-11-30 18:42:13 · 4755 阅读 · 1 评论 -
【hadoop】task内存设置
关于task内存配置有如下3个选项:mapred.child.java.optsmapred.map.child.java.optsmapred.reduce.child.java.opts通常我们会配置“mapred.child.java.opts”,但其实这个配置已经deprecated,却而代之的是:mapred.map.child.java.opts和mapred.redu转载 2013-11-30 18:27:55 · 1047 阅读 · 0 评论 -
SequcenFileInputFormat SequenceFileOutputFormat例子
SequcenFileInputFormat SequenceFileOutputFormat例子原创 2013-11-30 21:00:10 · 8186 阅读 · 0 评论 -
MapReduce: 提高MapReduce性能的七点建议[译]
Cloudera提供给客户的服务内容之一就是调整和优化MapReduce job执行性能。MapReduce和HDFS组成一个复杂的分布式系统,并且它们运行着各式各样用户的代码,这样导致没有一个快速有效的规则来实现优化代码性能的目的。在我看来,调整cluster或job的运行更像一个医生对待病人一样,找出关键的“症状”,对于不同的症状有不同的诊断和处理方式。 在医学领域,没转载 2014-02-18 15:09:57 · 1383 阅读 · 0 评论 -
手把手编译hadoop
1,必须得是java1.7 及以上java version "1.7.0_55" 2,maven版本不能太低Apache Maven 3.0.4 3,安装protobuf-2.5.0.tar.gztar -xvzf protobuf-2.5.0.tar.gz cd protobuf-2.5.0./configuremake install 如果没有安装p原创 2015-01-08 20:29:07 · 1063 阅读 · 0 评论 -
mapreduce程序中避免reduce输出空文件
在mapreduce里,如果某个reduce输出为空,默认也会生成一个大小为0的文件。原因是reduce写的时候,不知道会不会有输出数据,所以默认初始化了一个文件。如果没有输出,close文件最终会生成一个空文件。如下。有几个缺点: 1)生成的很多小文件,对namenode形成一定压力 2)生成的数据下个阶段处理的时候,这些空的文件会浪费掉一些计算资源。 3)看着不爽-rw-r--r--...原创 2018-05-09 11:24:06 · 8224 阅读 · 1 评论 -
mapreduce中split划分分析(新版api)
面试的过程中,笔者经常喜欢问一个问题:hadoop中map数是怎么确定的?但发现还是有好多面试者都答不上来。这个问题其实算是比较基础的一个问题,对于理解mapreduce的原理很有帮助。今天有空结合源码分析一下。 本文以hadoop2.7.2的版本作为分析,代码链接如下。 —— [ github代码地址 ]本文以org.apache.hadoop.mapreduce包作为讲解(即新AP...原创 2018-01-27 10:19:29 · 14612 阅读 · 2 评论 -
hadoop节点字符编码导致的reduce重复记录问题排查
hadoop节点字符编码导致的reduce重复记录问题排查原创 2017-08-25 09:58:48 · 24310 阅读 · 1 评论 -
hadoop中查找某个字符串所在的hdfs位置
hadoop中查找某个字符串所在的hdfs位置原创 2017-08-29 09:38:27 · 6376 阅读 · 0 评论 -
Hadoop 设置任务执行的队列以及优先级
Hadoop 设置任务执行的队列以及优先级原创 2014-09-05 08:07:03 · 47805 阅读 · 2 评论 -
MapReduce 实现全排序的方式
MapReduce实现全排序的方式原创 2014-02-23 21:17:37 · 6697 阅读 · 0 评论 -
Hadoop使用lzo格式-问题汇总
Hadoop使用lzo格式-问题汇总原创 2013-12-02 20:46:02 · 14296 阅读 · 3 评论 -
源码分析-Reduce阶段shuffle分析
源码分析-Reduce阶段shuffle分析原创 2013-04-09 15:22:41 · 1398 阅读 · 0 评论 -
hadoop distcp拷贝数据问题
hadoop distcp checksum校验原创 2015-07-23 15:03:10 · 6703 阅读 · 0 评论 -
Hadoop源码解析之: TextInputFormat如何处理跨split的行
Hadoop源码解析之: TextInputFormat如何处理跨split的行原创 2014-02-07 14:53:43 · 1039 阅读 · 0 评论 -
MapReduce任务中文部分正常,部分乱码
集群上提交的mr任务,发现结果中有的中文正常,有的中文是论码。分析了一下,应该是集群中hadoop节点的编码配置不一样。可以加上下面的参数:mapred.child.env="LANG=en_US.UTF-8,LC_ALL=en_US.UTF-8" ;原创 2017-02-20 10:29:18 · 1155 阅读 · 0 评论 -
setPartitionerClass、setOutputKeyComparatorClass 与 setOutputValueGroupingComparator
Partitioner这个类是用来决定map输出时,什么样的key输出到同一个reduce节点(调用setPartitionerClass方法),但不保证到同一个reduce节点的key会在同一个group(即不一定在reduce的同一个iter迭代里)。注:map端当输出buffer到达内存的一定比例时,将内存中的数据写到磁盘,此时会按key进行排序,然后才写入磁盘。由于Part原创 2013-04-09 15:38:57 · 1489 阅读 · 0 评论 -
任务配置 (Hadoop 2.2.0)
Topics任务 JVM 内存设置 (AMI 3.0.0)避免集群减速 (AMI 3.0.0)有一些配置变量可用于优化 MapReduce 作业的性能。本部分介绍了一些重要的任务相关性设置。任务 JVM 内存设置 (AMI 3.0.0)Hadoop 2.2.0 使用两个参数配置用于 map 和 reduce 的内存:分别为 mapreduce转载 2015-01-12 12:17:09 · 1055 阅读 · 0 评论 -
新旧Java MapReduce API的差异
摘录自 Hadoop权威指南 1、版本区别Hadoop在0.20.0版本中第一次使用新的API,部分早期的0.20.0版本不支持使用旧的API,但在接下来的1.x和2.x版本中新旧API都可以使用。新旧API的差异主要有以下几点:1. 新的API放在org.apache.hadoop.mapreduce包(和子包)中,旧的API放在org.apache.hadoop.mapred中。2. 新API...原创 2015-01-12 13:59:23 · 3243 阅读 · 0 评论 -
hadoop lzo并行map
Hadoop集群中启用了lzo后,还需要一些配置,才能使集群能够对单个的lzo文件进行并行的map操作,以提升job的执行速度。首先,要为lzo文件创建index。下面的命令对某个目录里的lzo文件创建index:$HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/lib/hadoop-lzo-0.4.10.jar com.hadoop.compres转载 2013-11-30 18:31:18 · 1759 阅读 · 0 评论 -
搞清楚LzoCodec和LzopCodec
使用LZO过程会发现它有两种压缩编码可以使用,即LzoCodec和LzopCodec,下面说说它们区别: LzoCodec比LzopCodec更快, LzopCodec为了兼容LZOP程序添加了如 bytes signature, header等信息如果使用 LzoCodec作为Reduce输出,则输出文件扩展名为".lzo_deflate",它无法被lzop读取;如果使用Lzop转载 2013-11-28 15:30:18 · 2889 阅读 · 0 评论 -
mapreduce的二次排序 SecondarySort
关于二次排序主要涉及到这么几个东西:在0.20.0 以前使用的是setPartitionerClass setOutputkeyComparatorClasssetOutputValueGroupingComparator 在0.20.0以后使用是job.setPartitionerClass(Partitioner p);job.se转载 2013-10-30 10:51:16 · 876 阅读 · 0 评论 -
如何在hadoop中控制map的个数
hadooop提供了一个设置map个数的参数mapred.map.tasks,我们可以通过这个参数来控制map的个数。但是通过这种方式设置map的个数,并不是每次都有效的。原因是mapred.map.tasks只是一个hadoop的参考数值,最终map的个数,还取决于其他的因素。 为了方便介绍,先来看几个名词:block_size : hdfs的文件块大小,默认为64M,可转载 2013-10-30 10:32:45 · 1032 阅读 · 0 评论 -
使用 FileSystem JAVA API 对 HDFS 进行读、写、删除等操作
Hadoop文件系统 基本的文件系统命令操作, 通过hadoop fs -help可以获取所有的命令的详细帮助文件。 Java抽象类org.apache.hadoop.fs.FileSystem定义了hadoop的一个文件系统接口。该类是一个抽象类,通过以下两种静态工厂方法可以过去FileSystem实例: public static FileSystem.get(Configur转载 2013-10-27 21:09:39 · 24362 阅读 · 2 评论 -
MapReduce:默认Counter的含义
MapReduce Counter为提供我们一个窗口:观察MapReduce job运行期的各种细节数据。今年三月份期间,我曾经专注于MapReduce性能调优工作,是否优化的绝大多评估都是基于这些Counter的数值表现。MapReduce自带了许多默认Counter,可能有些朋友对它们有些疑问,现在我分析下这些默认Counter的含义,方便大家观察job结果。 我的分析是基于转载 2013-10-27 21:05:53 · 948 阅读 · 0 评论 -
MapReduce高级编程之本地聚集与Combinner
本篇主要介绍Combinner,这个MapReduce Shuffle中占有重要地位,他能减少磁盘I/O以及网络Fetch时的数据迁移量,在MapReduce Shuffle中存在着三次排序(Map端两次,reduce端一次),每次排序时便会用上一次Combinner函数,也就是这个可有可无的函数一旦定义会被三次调用~~ 然而Combinner的使用需要注意程序的差错性,而且有些情原创 2013-05-10 10:25:56 · 1098 阅读 · 0 评论 -
Hadoop的MapReduce中多文件输出
Hadoop默认的输出是TextOutputFormat,输出文件名不可定制。hadoop 0.19.X中有一个org.apache.hadoop.mapred.lib.MultipleOutputFormat,可以输出多份文件且可以自定义文件名,但是从hadoop 0.20.x中MultipleOutputFormat所在包的所有类被标记为“已过时”,当前如果再使用MultipleOutputF转载 2013-05-04 14:02:28 · 1637 阅读 · 0 评论