- 浏览: 208879 次
- 性别:
- 来自: 哈尔滨
文章分类
- 全部博客 (267)
- java.lang (8)
- 问题汇总 (21)
- 异常记录 (20)
- 功能实现 (19)
- 面试总结 (25)
- 技巧总结 (8)
- 常用代码 (4)
- 编程习惯 (3)
- 编码规则 (3)
- java.util (10)
- java.io (1)
- JavaWeb (9)
- MySQL (16)
- SVN (3)
- MyBatis (11)
- Velocity (7)
- 其他知识 (10)
- 人生哲理 (1)
- 人生故事 (1)
- 自我感悟 (1)
- shiro (3)
- 基础知识 (0)
- 问题总结 (1)
- Spring 标签 (1)
- Spring (3)
- 点滴生活 (1)
- DOS (1)
- CAS (4)
- Linux (9)
- Storm (6)
- Shell (1)
- regex (1)
- Collection (4)
- poi (1)
- 经典语句 (1)
- NIO (5)
- concurrent (14)
- RPC (1)
- zookeeper (3)
- 待整理 (2)
- Hadoop (9)
- RabbitMq (2)
- flume (1)
- hive (7)
- hbase (4)
- kafka (1)
- scala (1)
- GC (0)
- java.util.concurrent.atomic (1)
- java.lang.ref (6)
- JVM (2)
- algorithm (1)
- conception (1)
- java key word (1)
- sun.misc (1)
最新评论
一、去除重复的内容
源文件:
192.168.234.21
192.168.234.22
192.168.234.21
192.168.234.21
192.168.234.23
192.168.234.21
192.168.234.21
192.168.234.21
192.168.234.25
192.168.234.21
192.168.234.21
192.168.234.26
192.168.234.21
1.新建 Path : distinct ,上传文件
2.Mapper.java
因为无需统计任务内容,所以value传空,故可用 NullWritable
3.Reducer.java
4.Driver
二、面向对象编程
源文件:
手机号码 地区 姓名 流量使用
13877779999 bj zs 2145
13766668888 sh ls 1028
13766668888 sh ls 9987
13877779999 bj zs 5678
13544445555 sz ww 10577
13877779999 sh zs 2145
13766668888 sh ls 9987
1.面向对象编程,建立对象
2.Mapper
3.Reducer
4.Driver
源文件:
192.168.234.21
192.168.234.22
192.168.234.21
192.168.234.21
192.168.234.23
192.168.234.21
192.168.234.21
192.168.234.21
192.168.234.25
192.168.234.21
192.168.234.21
192.168.234.26
192.168.234.21
1.新建 Path : distinct ,上传文件
2.Mapper.java
public class DistinctMapper extends Mapper<LongWritable, Text, Text, NullWritable> { @Override protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, NullWritable>.Context context) throws IOException, InterruptedException { context.write(value, NullWritable.get()); } }
因为无需统计任务内容,所以value传空,故可用 NullWritable
3.Reducer.java
public class DistinctReducer extends Reducer<Text, NullWritable, Text, NullWritable> { @Override protected void reduce(Text key, Iterable<NullWritable> value, Reducer<Text, NullWritable, Text, NullWritable>.Context context) throws IOException, InterruptedException { context.write(key, NullWritable.get()); } }
4.Driver
public class DistinctDriver { public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); Job job = Job.getInstance(conf); job.setJarByClass(DistinctDriver.class); job.setMapperClass(DistinctMapper.class); job.setReducerClass(DistinctReducer.class); job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass(NullWritable.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(NullWritable.class); FileInputFormat.setInputPaths(job, new Path("hdfs://192.168.76.131:9000/distinct/distinct.txt")); FileOutputFormat.setOutputPath(job, new Path("hdfs://192.168.76.131:9000/distinct/result")); job.waitForCompletion(true); } }
二、面向对象编程
源文件:
手机号码 地区 姓名 流量使用
13877779999 bj zs 2145
13766668888 sh ls 1028
13766668888 sh ls 9987
13877779999 bj zs 5678
13544445555 sz ww 10577
13877779999 sh zs 2145
13766668888 sh ls 9987
1.面向对象编程,建立对象
package com.study.flow.day01; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; import org.apache.hadoop.io.Writable; public class FlowBean implements Writable{ private String phone ; private String addr ; private String name ; private Integer flow ; public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getAddr() { return addr; } public void setAddr(String addr) { this.addr = addr; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getFlow() { return flow; } public void setFlow(Integer flow) { this.flow = flow; } // 反序列化,顺序要与序列化时的顺序相同 @Override public void readFields(DataInput input) throws IOException { this.phone = input.readUTF(); this.addr = input.readUTF(); this.name = input.readUTF(); this.flow = input.readInt(); } // 序列化 @Override public void write(DataOutput output) throws IOException { output.writeUTF(phone); output.writeUTF(addr); output.writeUTF(name); output.writeInt(flow); } @Override public String toString() { return "FlowBean [phone=" + phone + ", addr=" + addr + ", name=" + name + ", flow=" + flow + "]"; } }
2.Mapper
public class FlowMapper extends Mapper<LongWritable, Text, Text, FlowBean> { @Override protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, FlowBean>.Context context) throws IOException, InterruptedException { String line = value.toString(); String [] datas = line.split(" "); FlowBean bean = new FlowBean(); bean.setPhone(datas[0]); bean.setAddr(datas[1]); bean.setName(datas[2]); bean.setFlow(Integer.valueOf(datas[3])); context.write(new Text(bean.getName()), bean); } }
3.Reducer
public class FlowReducer extends Reducer<Text, FlowBean, Text, FlowBean> { @Override protected void reduce(Text key, Iterable<FlowBean> values, Reducer<Text, FlowBean, Text, FlowBean>.Context context) throws IOException, InterruptedException { Integer sum = 0 ; FlowBean bean = new FlowBean(); for(FlowBean flowBean : values){ sum = sum + flowBean.getFlow(); bean.setPhone(flowBean.getPhone()); bean.setAddr(flowBean.getAddr()); bean.setName(flowBean.getName()); } bean.setFlow(sum); context.write(key, bean); } }
4.Driver
public class FlowDriver { public static void main(String[] args) throws IllegalArgumentException, IOException, ClassNotFoundException, InterruptedException { // 配置文件 Configuration conf = new Configuration(); Job job = Job.getInstance(conf); // 设置运行入口,Mapper,Reducer job.setJarByClass(FlowDriver.class); job.setMapperClass(FlowMapper.class); job.setReducerClass(FlowReducer.class); // 设置Mapper 的key value 类型 job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass(FlowBean.class); // 设置Reducer 的 key value 类型 job.setOutputKeyClass(Text.class); job.setOutputValueClass(FlowBean.class); // 设置文件的读入 输出目录 FileInputFormat.setInputPaths(job, new Path("hdfs://192.168.76.131:9000/flow")); FileOutputFormat.setOutputPath(job, new Path("hdfs://192.168.76.131:9000/flow/result")); job.waitForCompletion(true); } }
发表评论
-
hadoop
2017-06-17 09:03 377一、 hadoop job list 查看 hadoop ... -
Hadoop2.0 HA 集群搭建步骤
2017-06-10 18:40 407Hadoop2.0 HA 集群搭建步骤 一、准备 1.新建 ... -
MapReduce(4)
2017-06-05 22:32 398一、处理多个文件 求每个同学每科成绩的总分 chinese.t ... -
MapReduce(3)
2017-06-04 20:51 564一、Mapper分区数量 1.Mapper 分区数量 = 文 ... -
MapReduce
2017-06-03 20:52 568WordCount 统计文本单词的数量 源文件内容: word ... -
Hadoop插件
2017-05-19 22:35 3041.启动hadoop cd ../sbin sh ./sta ... -
HDFS命令
2017-05-15 23:01 4881.创建目录 hadoop fs -mkdir /park0 ... -
搭建Hadoop
2017-05-11 22:01 5101.修改虚拟机内存为1GB 2.Xshell / Ser ...
相关推荐
### Hadoop MapReduce V2 知识点概览 #### 一、Hadoop MapReduce V2 生态系统介绍 **Hadoop MapReduce V2** 是Hadoop生态系统中的一个关键组件,用于处理大规模数据集。相较于V1版本,V2版本在架构上进行了重大...
2. **Container概念**:应用程序的执行单元是Container,它包含了运行应用程序所需的所有资源(如内存、CPU等)。 3. **更细粒度的资源分配**:YARN允许更精细的资源管理,使得系统能够更好地利用硬件资源。 4. **更...
MapReduce2(也称为 YARN)是 Hadoop 2.x 版本引入的重要改进,旨在解决原 MapReduce 的资源管理和调度问题。本文将详细探讨在 MapReduce2 中如何实现自定义排序和分组,以满足特定的数据处理需求。 首先,了解 ...
这本书籍详细介绍了如何在Hadoop 2.x环境中有效地设计、开发和优化MapReduce作业。 Hadoop是Apache软件基金会开发的一个开源框架,专门用于处理和存储海量数据。它的核心组件包括HDFS(Hadoop Distributed File ...
Hadoop MapReduce v2 Cookbook (第二版), Packt Publishing
标题“hadoop mapreduce2”可能指的是在Hadoop 2.x版本下进行MapReduce编程,这个版本引入了YARN(Yet Another Resource Negotiator),作为资源管理和调度器,改进了原本单一JobTracker的架构,使得系统更加灵活和...
2. **实际编程经验积累**:通过编写MapReduce程序,积累了实际编程经验,熟悉了Hadoop和MapReduce的API。 3. **分布式计算的认识**:认识到分布式计算的局限性与优势,在实际应用中需要权衡数据规模和计算需求。 4. ...
随着时间的推移,MapReduce经历了两次主要的版本升级,即MapReduce V1(MRv1)和MapReduce V2(MRv2,也称为YARN)。这两个版本在API设计和执行模型上有所不同,影响了开发人员的工作流程和系统性能。下面将详细讨论...
Starting with installing Hadoop YARN, MapReduce, HDFS, and other Hadoop ecosystem components, with this book, you will soon learn about many exciting topics such as MapReduce patterns, using Hadoop to...
MapReduce是一种编程模型和处理大数据集的相关实现,它是Google提出的一个软件框架。Hadoop的MapReduce是一个更加著名的开源实现。MapReduce模型主要用于将大任务拆分成许多小任务,然后在集群的不同节点上并行计算...
赠送jar包:hadoop-mapreduce-client-common-2.7.3.jar; 赠送原API文档:hadoop-mapreduce-client-common-2.7.3-javadoc.jar; 赠送源代码:hadoop-mapreduce-client-common-2.7.3-sources.jar; 赠送Maven依赖信息...
file2.txt: mapreduce science big data hadoop file3.txt: hadoop mapreduce wordcount computer science 然后,我们需要启动Hadoop伪分布式,并将input文件夹上传到HDFS上。接下来,我们需要编写MapReduce程序来...
2. **MapReduce编程模型**:详细解释Map函数和Reduce函数的编写,以及如何定义输入输出格式,理解JobConf配置参数,以及如何使用Hadoop API编写MapReduce程序。 3. **数据分片与任务分配**:探讨如何将大数据集切...
典型应用案例展示了MapReduce在处理不同类型数据上的高效性,如何将复杂的数据处理问题简化为MapReduce模型,并通过具体的案例分析来指导开发人员编写更加高效的MapReduce程序。 4.6 MapReduce网站浏览量统计分析 ...
于是产生了 MapReduce2,为了区别版本,将老版本的 MapReduce 称为 MapReduce1,MapReduce2 称之为 YARN(Yet Another Resource Negotiator,另一种资源协调者)。 YARN 的设计思想是为了改善 MapReduce 的实现,但...
1.什么是mapreduce 2.编写mapreduce典型demo 3.理解mapreduce核心思想 4.熟练编写mapreduce典型demo
MapReduce是一种分布式计算模型,由Google在2004年提出,主要用于处理和生成大量数据集。该模型的核心思想是将复杂的大规模数据处理任务分解为两个主要阶段:Map(映射)和Reduce(归约),使其能够在大规模分布式...
实验项目“MapReduce 编程”旨在让学生深入理解并熟练运用MapReduce编程模型,这是大数据处理领域中的核心技术之一。实验内容涵盖了从启动全分布模式的Hadoop集群到编写、运行和分析MapReduce应用程序的全过程。 ...
2. 基于MapReduce的决策树算法实现:在Reducer中,主要实现了决策树算法的计算工作,包括对树的构建、决策树的分裂和叶节点的计算等。Reducer需要对Mapper输出的结果进行处理和计算,以生成最终的决策树模型。 3. ...