Hadoop
squeue2019
邮箱:sunkun201309 at 163.com
展开
-
Hadoop 中context.collect 和 context.write的区别
Mark写MapReduce时,发现很多源码都是写 context.collect 而不是context.write,查阅资料,得到以下结论 老版本是:output.collect(key, result); // output’s type is: OutputCollector新版本是:context.write(key, result); // output’s type is: Conte原创 2017-04-28 09:42:02 · 2504 阅读 · 0 评论 -
java.io.IOException: Type mismatch in key from map: expected org.apache.hadoop.io.Text, recieved org
问题写某Hadoop程序,运行时,遇到以下错误java.io.IOException: Type mismatch in key from map: expected org.apache.hadoop.io.Text, recieved org.apache.hadoop.io.LongWritable具体问题截图 解决解决步骤1、 检查配置job的class格式是否正确 job.原创 2017-05-24 09:47:00 · 3485 阅读 · 0 评论 -
漫谈千亿级数据优化实践:数据倾斜(纯干货)
0x00 前言 引用 数据倾斜是大数据领域绕不开的拦路虎,当你所需处理的数据量到达了上亿甚至是千亿条的时候,数据倾斜将是横在你面前一道巨大的坎。 迈的过去,将会海阔天空!迈不过去,就要做好准备:很可能有几周甚至几月都要头疼于数据倾斜导致的各类诡异的问题。 郑重声明: 话题比较大,技术要求也比较高,笔者尽最大的能力来写出自己的理解,写的不对和不好的地方大家一起交流。 有些例子不是特别严谨,一些小细节对文章理解没有影响,不要太在意。(比如我在算机器内存的时候,就不把Hadoop自身的进程算到使用内存中)转载 2017-06-13 10:34:46 · 636 阅读 · 0 评论 -
浅析 Hadoop 中的数据倾斜
最近几次被问到关于数据倾斜的问题,这里找了些资料也结合一些自己的理解. 在并行计算中我们总希望分配的每一个task 都能以差不多的粒度来切分并且完成时间相差不大,但是集群中可能硬件不同,应用的类型不同和切分的数据大小不一致总会导致有部分任务极大的拖慢了整个任务的完成时间,硬件不同就不说了,应用的类型不同其中就比如page rank 或者data mining 里面一些计算,它的每条记录消耗的成本不太一样,这里只讨论关于关系型运算的(一般能用SQL表述的) 数据切分上的数据倾斜问题. Ha转载 2017-06-13 11:50:59 · 462 阅读 · 0 评论 -
Hadoop作业提交分析(一)
Hadoop作业提交分析(一) bin/hadoop jar xxx.jar mainclass args…… 这样的命令,各位玩Hadoop的估计已经调用过NN次了,每次写好一个Project或对Project做修改后,都必须打个Jar包,然后再用上面的命令提交到Hadoop Cluster上去运行,在开发阶段那是极其繁琐的。程序员是“最懒”的,既然麻烦肯定是要想转载 2017-06-14 11:57:26 · 888 阅读 · 0 评论 -
Hadoop作业提交分析(三)
通过前面两篇文章的分析,对Hadoop的作业提交流程基本明了了,下面我们就可以开始编写代码模拟这个流程。 第一步要做的是添加Hadoop的依赖库和配置文件到classpath。最常用的方法就是用一个容器先把各个要添加到classpath的文件或文件夹存储起来,后面再作为类加载器的URL搜索路径。 /** * Add a directory or file to cl转载 2017-06-14 14:01:38 · 473 阅读 · 0 评论 -
Hadoop作业提交分析(五)
经过上一篇的分析,我们知道了Hadoop的作业提交目标是Cluster还是Local,与conf文件夹内的配置文件参数有着密切关系,不仅如此,其它的很多类都跟conf有关,所以提交作业时切记把conf放到你的classpath中。 因为Configuration是利用当前线程上下文的类加载器来加载资源和文件的,所以这里我们采用动态载入的方式,先添加好对应的依赖库和资源,然后再构建一个转载 2017-06-14 14:05:43 · 443 阅读 · 0 评论 -
Hadoop作业提交分析(二)
上一篇我们分析了bin/hadoop脚本,知道了提交一个Hadoop作业所需要的基本设置以及真正执行任务提交的类。这一篇我们就来分析这个提交任务的类org.apache.hadoop.util.RunJar,看它内部具体又做了些什么。 RunJar是Hadoop中的一个工具类,结构很简单,只有两个方法:main和unJar。我们从main开始一步步分析。 main首转载 2017-06-14 13:59:00 · 516 阅读 · 0 评论 -
Hadoop作业提交分析(四)
前面我们所分析的部分其实只是Hadoop作业提交的前奏曲,真正的作业提交代码是在MR程序的main里,RunJar在最后会动态调用这个main,在(二)里有说明。我们下面要做的就是要比RunJar更进一步,让作业提交能在编码时就可实现,就像Hadoop Eclipse Plugin那样可以对包含Mapper和Reducer的MR类直接Run on Hadoop。 一般来说,每个M转载 2017-06-14 14:04:08 · 496 阅读 · 0 评论