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(LongWrita
|