Mapreduce学习
IBoyMan
不奋斗,你的才华如何配上你的任性;
不奋斗,你的脚步如何赶上父母老去的速度;
不奋斗,世界那么大,你靠什么去看看;
一个人老去的时候,最痛苦的事情,不是失败,而是我本可以。
展开
-
Java访问kerberos认证的HDFS文件
Kerberos是一种计算机网络授权协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证。具体HADOOP的访问HDFS使用Kerberos的作用和原理请自己查阅相关文档。之前做项目时第一次使用Kbs访问HDFS,当时不了解,翻阅资料搞了好久,也入了不少坑,现分享出来,方便大家。下面代码在项目亲测过,可用代码如下:package zqmKerberos;impor...原创 2020-01-15 15:12:06 · 2308 阅读 · 0 评论 -
Mapreduce(MR)读取配置文件的三种方式,遍历HDFS目录文件
第一种方式: 如果配置文件数据不是很大,可以放在本地,然后在打包进去,代码如下:第二种: 如果配置文件数据比较大,可以传到HDFS里,以传参的形式加载,代码:这种方式需要在Main里设置参数位置,核心代码如图:第三种: 配置文件已经在HDFS上存在(以part文件形式存在,第二种是传上去的文件不是part格式,比如txt形式),以传参的形式加载,代码:这种方式也要在Main设置参数的位...原创 2018-03-13 14:03:58 · 7842 阅读 · 0 评论 -
Mapreduce(MR)设置多个job的任务运行
MapReduce多个job任务其本质原理就是job2任务依赖job1任务的返回结果即job1的输出路径是job2的输入路径。job2任务的启动依赖job1任务结束所返回的状态。 依据自己的实际经验:多个job的串行或并行触发,我认为还是分开写几个程序,用脚本控制其执行顺序,这样便于程序的调试,管理。 当然,选择使用那种情况也是依赖项目的需求而...原创 2018-04-14 11:25:13 · 3924 阅读 · 8 评论 -
MapReduce(MR)框架里shuffer过程中Partition的使用
Partitioner类:主要在Shuffle过程中按照Key值将中间结果分成R份,其中每份都有一个Reduce去负责。使用的时候可以通过job.setPartitionerClass()方法进行设置,实现getPartition函数,默认的使用hashPartitioner类。举一个简单的例子:在Hdfs文件系统下有这样一个txt,txt的数据如下:红色方框是时间戳时间戳的日期是从8月20到9月...原创 2018-04-12 13:47:20 · 620 阅读 · 0 评论 -
Mapredece(MR)的reduce join、解决map端加载海量配置文件报内存溢出问题(OOM)
前面的一个博客写到mr加载配置文件的三种方法都是基于map端加载的,当配置文件非常大时,map加载会报内存溢出(OOM)或报GC overhead limit exceeded,此时应该考虑reduce端加载。当然reduce端的加载也存在缺点,会造成shuffer过程的耗时。当然,任何一个程序都不是那么完美的,时间和空间就是鱼与熊掌不可兼得。 Reduce端加载的核心就是:在redu...原创 2018-11-14 11:12:09 · 827 阅读 · 0 评论 -
Mapredeuce获取文件数据对应的目录
在MR里有个关键的"环境变量"context(上下文),利用它可用做好多事,比如传参等。 当然,获取文件数据对应的目录也少不了它,其实就是简单的一句代码: String filepath = ((FileSplit) context.getInputSplit()).getPath().toString(); filepath就是此时你map接受数据所在...原创 2019-01-31 15:58:03 · 417 阅读 · 0 评论