hadoop是一个分布式的基础架构,利用分布式实现高效的计算与储存,最核心的设计在于HDFS与MapReduce,HDFS提供了大量数据的存储,mapReduce提供了大量数据计算的实现,通过Java项目实现hadoop job处理海量数据解决复杂的需求。
一、基本环境及相关软件的配置
...
二、hadoop项目开发流程
hadoop主要的开发为job的初始化与分布式处理流程的开发。
1、任务基本配置
首相根据业务需求,需要在代码中配置job在每台机器上需要的java虚拟机使用的内存与执行过程需要的最大内存。
Configuration configuration =
new
Configuration();
configuration.set(
"mapreduce.map.java.opts"
,
"-Xmx2048m"
);
configuration.set(
"mapreduce.map.memory.mb"
,
"3072"
);
configuration.set(
"mapreduce.reduce.java.opts"
,
"-Xmx2048m"
);
configuration.set(
"mapreduce.reduce.memory.mb"
,
"3072"
);
Job job =
new
Job(configuration,
"miuilite-dailyRetain-"
+arg[
4
]);
|
2、运行参数配置
job.setJarByClass(MiuiliteRetainJob.
class
);
MultipleOutputs.addNamedOutput(job, MIUIDanfaGeneralMapReduce.MULTI_OUTPUT_NAME_STATUS, SequenceFileOutputFormat.
class
,Text.
class
, Text.
class
);
job.setOutputFormatClass(SequenceFileOutputFormat.
class
);
MultipleInputs.addInputPath(job,
new
Path(arg[
0
]), SequenceFileInputFormat.
class
, MiuiliteRetainMapReduce.NewLogMapper.
class
);
MultipleInputs .addInputPath(job,
new
Path(arg[
1
]), SequenceFileInputFormat.
class
, MiuiliteRetainMapReduce.StatusLogMapper.
class
);
FileOutputFormat.setOutputPath(job,
new
Path(arg[
2
]));
job.setReducerClass(MiuiliteRetainMapReduce.RetainReducer.
class
);
job.setMapOutputKeyClass(Text.
class
);
job.setMapOutputValueClass(Text.
class
);
job.setOutputKeyClass(Text.
class
);
job.setOutputValueClass(LongWritable.
class
);
job.setNumReduceTasks(
40
);
//配置节点数量
|
hadoop任务处理过程中,各个分布式机器读取操作数据都是通过分布式储存文件系统hdfs,并且分布式计算将中间结果或者最终结果都是保存到hdfs上的,所以在job开发过程中需要的配置有:
1)相关的地址:数据hdfs地址,中间状态缓存保存HDFS地址,以及生成的结果hdfs保存地址,(如需要本地进一步处理结果,还需要本地地址,需要将hd

本文介绍了如何使用Hadoop的MapReduce和HDFS处理数据,包括环境配置、Job开发流程、数据处理步骤及运行流程。通过Java项目实践,展示了配置Job的内存需求、读写参数设置、Mapper和Reducer的实现,以及结果的本地处理方法。

1738

被折叠的 条评论
为什么被折叠?



