第5章MapReduce进阶编程 Ver1.2-20230523

Imagemap
第5章MapReduce进阶编程
Ver1.2-20230523任务前言学习目标(1)掌握Hadoop Java API的使用。(2)理解Combiner的工作原理。(3)掌握使用Combiner对MapReduce工作流程进行优化。(4)了解Hadoop内置数据类型。(5)掌握编写和使用自定义数据类型。(6)掌握编写和使用Partitioner设置分区。(7)掌握MapReduce参数传递方式。(8)学会使用ToolRunner提交MapReduce任务。(9)掌握使用Eclipse提交MapReduce任务。任务背景主要介绍MapReduce编程的进阶,包括MapReduce的输出及输入格式、H ...学习视频筛选日志文件并生成序列化文件1.http://i.hddly.cn/media/iQIWJXkHnI.mp42.http://i.hddly.cn/media/aBxuwBBN2R.mp4Hadoop Java API读取序列化日志文件1.http://i.hddly.cn/media/Hadoop_5.3_1.m ...2.http://i.hddly.cn/media/pwc6XtkxPw.mp4优化日志文件统计程序Eclipse提交日志文件统计程序实训视频作业要求http://i.hddly.cn/media/bdeUXxKQpl.mp4任务5.1筛选日志文件并生成序列化文件获取测试数据说明:使用crt进入集群的master或slave节点,使用user_login ...cd /root/hadoop
wget https://hddly.oss-c ...MapReduce输入格式HDFS一个文件对应多个文件块,每个文件块对应一个输入分片InputSplit, ...编写Mapper时只关注输入的键值对Hadoop自带多个输入格式基类
InputFormat<K,V>操作DB:
DBInputFormat<K,V>操作文件:
FileInputFormat<K,V>TextInputFormat(是默认输入格式)Key是行在整个文件中的字节偏移量Value是行的内容,TextKeyValueTextInputFormat每一行是一个键值对SequenceFileInputFormat<K,V>特点紧凑:高效使用存储空间快速:开销小可扩展:可透明地读取旧格式的数据互操作:可以使用不同的语言读写MapReduce输出格式目的:将键值对写入HDFS的文件块中常用输出格式类基类
OutputFormat(K,V)DBOutputFormat<K,V>FileOutputFormat<K,V>SequenceFileOutputFormat:输出序列化文件SequenceFileAsBinaryOutputFormatTextOutputFormat(是默认输出格式):以键值对的方式输出行NullOutputFormat编写代码创建类: SelectData添加importimport java.io.IOException;
import org.a ...添加Mapper类	public static class SelectDataMapper ex ...添加Driver代码	public static void main(String[] args)  ...运行SelectData类方法右击类代码->Run As->Java Application观察运行结果导出jar包右击MemberCount项目->Export->Runnable JAR fi ...Launch configuration:选择刚刚运行的SelectDataExport destinations:d:\soft\hadoop\Selec ...Library handing: 选择Extract required libr ...导出过程有任何提示,直接点确认上传jar包到master通过crt在master上打开 sftplcd d:\soft\hadoop\cd /root/hadoopput SelectData.jar运行jarhadoop jar SelectData.jar /user/myname/u ...任务5.2Hadoop Java API读取序列化日志文件获取测试数据说明:使用crt进入集群的master或slave节点,使用user_login ...cd /root/hadoop
wget https://hddly.oss-c ...在本地d:盘创建tmp目录,作为上下传文件的目录:D:\tmp使用上节SelectData对像生成目标文件:/user/myname/outp ...FileSystemAPI获取实例接口官方文档https://hadoop.apache.org/docs/stable/ap ...获取FileSystemget(Configuration conf)
Returns the conf ...get(URI uri, Configuration conf)
Get a F ...get(URI uri, Configuration conf, String  ...FileSystemAPI实例说明:远程home.hddly.cn暂有异常涉及文件读和写的都不可以原因是无法远程访问内网的IP可以远程home.hddly.cnS1_ListDir列出文件夹import java.io.IOException;
import org.a ...S2_CreateDir创建目录import java.io.IOException;
import org.a ...S3_CopyToLocal下载文件import java.io.IOException;

import org. ...S4_CopyFromLocal上传文件import java.io.IOException;
import org.a ...S5_CatFile读写文件public class CatFile {
	public static vo ...S6_ListFile列出文件import java.io.IOException;

import org. ...S7_DelFile删除文件import java.io.IOException;

import org. ...S8_DelPath删除目录import java.io.IOException;

import org. ...读取序列化文件DownloadFile
读序列化文件注明:需要修改主机名称,本组员目录名称,本地d盘需要创建tmp目录package chap5_selectdata;

import java.i ...运行DownloadFile类main方法右击类代码->Run As->Java Application观察运行结果导出jar包右击MemberCount项目->Export->Runnable JAR fi ...Launch configuration:选择刚刚运行的DownloadFileExport destinations:d:\soft\hadoop\downf ...Library handing: 选择Extract required libr ...导出过程有任何提示,直接点确认在windows上运行jar通过cmd,进入d:\tmp目录:cd d:\tmpjava -jar downfile.jar打开d:\\tmp\\selectdata.txt文件,预期内容无乱码任务5.3优化日志文件统计程序 MR优化关键因素自定义键值类型内置数据类型继承关系内置类型->WritableComparable->Writable常用内置数据类型BooleanWritableByteWritableDoubleWritableFloatWritableIntWritableLongWritableTextNullWritable空值,当<key,value>中的key或value为空时使用MapWritableSortMapWritable自定义键类型需实现WritableComarable接口实现Writable接口需实现方法readFields需实现方法write需实现方法compareTo继承自Object类需重写方法toString()自定义值类型需实现Writable接口需实现方法readFields需实现方法write继承自Object类需重写方法toString()Combiner:定义迷你Reduce使用条件仅当Reducer输入的键值对类型与Reducer输出的键值对类型一样时,
并且 ...如求和或者求最大值 时可以使用如求平均值不可使用如数据:Map1:4,5Map2:3,6,2使用Combiner:Map1:4,5=>(4+5)/2=4.5Map2:3,6,2=>(3+6+2)/3=3.66667Reducer:=(4.5+3.66667)/2=4.08333不使用CombinerReducer:=(4+5+3+6+2)/5=4使用方法申明Combinerpublic class LogCountCombiner extends Re ...在main驱动类里配置Combinerjob.setCombinerClass(LogCombiner.class)当Combiner逻辑与Reducer相同时配置Combinerjob.setCombinerClass(LogCountReducer.cla ...Partitioner定义功能是让Map对Key进行分区,从而将不同的key分发到不同的Reducer中进 ...分区阶段发生在Map阶段之后,在Reduce阶段之前分区的数量等于Reducer的个数。个数=job.setNumReduceTas ...使用条件一般情况,使用默认的HashPartitioner源码HasPartitioner<K2,V2> implements Partiti ...void configue(JobConf job){}int getPartition(K2 key,V2 value,int num ...比如要求按月统计登录次数并且输出到不同的文件里使用方法自定义Partitioner,并继续自Partitioner<K2,V2>,并重 ...如要实现统计结果根据不同的月份分发到不同的输出文件里,在getPartition ...在驱动类main方法中设置Partitioner类和Reducer个数记数器定义计数器是Hadoop框架使用的一种对统计信息收集的手段、主要用于对数据的控制及收 ...分类MapReduce任务计数器org.apache.hadoop.mapreduce.TaskCounter文件系统 计数器org.apache.hadoop.mapreduce.FileSystemCo ...输入文件计数器输出文件计数器作业计数器MR实现日志按月份统计任务目标:MR编程实现用户在2016年1月和2月份每天的登录次数统计任务实现步骤1,读取HDFS中任务5.1生成的序列化文件/uer/myname/output_SelectData/	part-m-00 ...2,InputFormat读入分片数据3,定义MemberLogTime自定义键类型4,定义Map,并使用自定义键类型MemberLogTime,同时还应用自定义计 ...5,加入Combiner组件来减少Reducer的负担6,任务结束前将结果按月份输出到两个文件,用到了Partitioner7,最后编写驱动类Main方法数据准备基于5.1的输出结果:hadoop jar SelectData.jar /us ...源码实现在MemberCount工程下创建包logcount,以下类都在该包下创建自定义类型MemberLogTimeimport java.io.DataInput;
import java.io ...LogCountMapper实现import java.io.IOException;
import org.a ...LogCountCombiner实现import java.io.IOException;

import org. ...LogCountPartitioner实现import org.apache.hadoop.io.IntWritable; ...LogCountReducer实现import java.io.IOException;
import org.a ...LogCount驱动类实现
import org.apache.hadoop.conf.Configura ...调试运行运行LogCount->main()验证结果1,查看/user/myname/output_MonthData目录下是否有两 ...part-r-00000part-r-000012,查看part-r-00000和part-r-00001内容如:Aaron,2016-01-04	99导出jar包右击MemberCount项目->Export->Runnable JAR fi ...Launch configuration:选择刚刚运行的LogCountExport destinations:d:\soft\hadoop\LogCo ...Library handing: 选择Extract required libr ...导出过程有任何提示,直接点确认上传jar包到master通过crt在master上打开 sftplcd d:\soft\hadoop\cd /root/hadoopput LogCount.jar运行jarhadoop jar LogCount.jar /user/myname/out ...任务5.4Eclipse提交日志文件统计程序任务描述在eclipse上直接运行mr将分割符作为参数传入,以应用源文件格式的变化优化:使用ToolRunner调用方法优化:独立方法用来设置Hadoop集群的配置优化:添加日志,方便用户查看日志优化:使用JarUtil工具类直接运行 jar包传递参数使用配置类Configuration设置传递参数属性名称的方法set(String name,String value)set(String name,String value,String sour ...setBoolean(String name,boolean value)setDouble(String name,double value)setFloat(String name,float value)setInt(String name,int value)setLong(String name,long value)setPattern(String name,Pattern pattern)set方法使用Configuration conf= getConf();
conf.set( ...get方法使用String inputPath=context.getConfiguratio ...String outputPath=context.getConfigurati ...String splitter=context.getConfiguration ...ToolRunner在main方法中调用ToolRunner里的run(Configuration  ...MR实现日志按月份统计2任务目标:MR编程实现用户在2016年1月和2月份每天的登录次数统计任务实现步骤1,读取HDFS中任务5.1生成的序列化文件/uer/myname/output_SelectData/	part-m-00 ...2,InputFormat读入分片数据3,定义MemberLogTime自定义键类型4,定义Map,并使用自定义键类型MemberLogTime,同时还应用自定义计 ...5,加入Combiner组件来减少Reducer的负担6,任务结束前将结果按月份输出到两个文件,用到了Partitioner7,最后编写驱动类Main方法数据准备基于5.1的输出结果:hadoop jar SelectData.jar /us ...源码实现在MemberCount工程下创建包logcount,以下类都在该包下创建自定义类型MemberLogTimeimport java.io.DataInput;
import java.io ...LogCountMapper实现import java.io.IOException;
import org.a ...LogCountCombiner实现import java.io.IOException;

import org. ...LogCountPartitioner实现import org.apache.hadoop.io.IntWritable; ...LogCountReducer实现import java.io.IOException;
import org.a ...LogCount驱动类实现
import org.apache.hadoop.conf.Configura ...JarUtil类实现import java.io.File;
import java.io.File ...配置文件说明:配置文件放在src目录下log4j.propertieslog4j.rootLogger = INFO,stdout
log4j.app ...调试运行任务5.5拓展任务中文词频统计环境准备jeiba包下载cd /usr/local/hadoop-3.3.1/share/hadoop/ ...wget https://archiva-maven-storage-prod. ...scp到所有从机scp_workers.sh#!/bin/bash
workers=`cat /usr/local/hado ...引用jeiba包其它参考HADOOP-YARN资源分配介绍-以及推荐常用优化参数参考:https://www.freesion.com/article/6381 ...了解一个应用程序的运行过程步骤1:用户将应用程序提交到ResourceManager上;步骤2:ResourceManager为应用程序ApplicationMaste ...步骤3:ApplicationMaster与ResourceManager通信, ...步骤4:所有任务运行完成后,ApplicationMaster向Resource ...上述步骤中,步骤2~3涉及到资源申请与使用,而这正是Container出现的地方认识CONTAINER什么时容器(1) Container是YARN中资源的抽象,它封装了某个节点上一定量的资源 ...(2) Container由ApplicationMaster向Resource ...(3) Container的运行是由ApplicationMaster向资源所在 ...Container分为两大类(1) 运行ApplicationMaster的Container:这是由Res ...(2) 运行各类任务的Container:这是由ApplicationMaste ...YARN参数1.yarn.scheduler.minimum-allocation-mb解释:The minimum allocation for every cont ...最小的container申请2.yarn.nodemanager.resource.memory-mb解释:Amount of physical memory, in MB, tha ...总共可以分配的内存大小给container3.mapreduce.map.memory.mb解释:The amount of memory to request from  ...一个map调用的内存大小4.mapreduce.reduce.memory.mb解释:The amount of memory to request from  ...一个reduce调用的内存的大小配置Hadoop运行在小内存主机上参考:https://blog.csdn.net/skyupward/artic ...任务拓展MapReduce如何对key或value进行降序操作定义降序排列的比较器        public static class IntWritableD ...main函数中设置在sort阶段使用我们编写的比较器                //设置Sort阶段使用比较器
         ...How Many Maps?(官网)The number of maps is usually driven by  ...实训1统计全球每年月的最高气温和最低气温实训目的掌握MapReduce编程中Combiner的使用掌握自定义数据类型掌握自定义计数器掌握MapReduce 参数的传递掌握Toolrunner的使用和 Eclipse 提交MapReduce任务训练要点掌握Combiner的使用掌握自定义数据类型需求说明获取ncdc.noaa.gov上的全球气候数据,进行数据处理后生成data.tx ...实现思路及步骤进入服务器/root/hadoop目录cd /root/hadoop获取实验数据在内网:wget http://10.255.10.50/b37066/file/tem ...在外网:wget http://bigdata.hddly.cn/b37066/file ...wget http://home.hddly.cn:50091/file/tem ...上传数据到hdfstar -xvf ./temp.tarhdfs dfs -mkdir -p /user/myname/temphdfs dfs -put ./temp2021.txt /user/mynam ...验证数据是否已上传hdfs dfs -ls /user/myname/temp/编写代码自定义一个数据类型YearMaxTAndMinT,定义字符串类型year,dou ...创建MaxTAndMinTMapper,实现获取年份和气温,并将年月作为key, ...创建一个MaxTAndMinTCombiner,实现年份最高气温和最低气温的获取 ...创建一个MaxTAndMinTReducer,实现获取年月最高气温和最低气温获取 ...源代码参考http://bigdata.hddly.cn/b37066/file/chap ...调试通过,然后导出jar,命名为tempcount.jar,并上传hadoop集 ...查看输出结果:查看hdfs:/user/myname/output_tempco ...作业要求1,环境说明:本小组主机:,本小组成员机:,本成员机:2,在http://master:9870上拍照截取本小组集群中本成员目录下/u ...3,在eclipse中,分别截图 map类,reduce类等,main方法等的源 ...4,在eclipse中,运行,截取运行console内容图5,查集群linux本成员虚拟下运行tempcount.jar程序 ,截图6,在http://master:9870的文件系统中,打开运行输出结果:/us ...实训2筛选气温在15~25C之间的数据实训目的掌握MapReduce编程中Combiner的使用掌握自定义数据类型掌握自定义计数器掌握MapReduce 参数的传递掌握Toolrunner的使用和 Eclipse 提交MapReduce任务训练要点掌握Combiner的使用掌握自定义数据类型需求说明获取ncdc.noaa.gov上的全球气候数据,进行数据处理后生成data.tx ...实现思路及步骤进入服务器/root/hadoop目录cd /root/hadoop获取实验数据在内网:wget http://10.255.10.50/b37066/file/tem ...在外网:wget http://bigdata.hddly.cn/b37066/file ...上传数据到hdfstar -xvf ./temp.tarhdfs dfs -mkdir -p /user/myname/temphdfs dfs -put ./temp2021.txt /user/mynam ...验证数据是否已上传hdfs dfs -ls /user/myname/temp/编写代码创建TempSelectMapper,实现温度数据筛选, 将记录作为value输 ...创建TempSelectRun继承自 Tool,实现参数的设置和ToolRunn ...源代码参考http://bigdata.hddly.cn/b37066/file/chap ...调试通过,然后导出jar,命名为tempselect.jar,并上传hadoop ...查看输出结果:查看hdfs:/user/myname/output_tempse ...作业要求1,环境说明:本小组主机:,本小组成员机:,本成员机:2,在http://master:9870上拍照截取本小组集群中本成员目录下/u ...3,在eclipse中,分别截图 map类,main方法的源码图4,在eclipse中,运行,截取运行console内容图5,查集群linux本成员虚拟下运行程序tempselect.jar ,截图6,在http://master:9870的文件系统中,打开运行输出结果:/us ...扩展实训3统计Mongodb库中的音乐数据词频统计实训目的1,熟悉MR编程2,了解如何通过MR连接MongoDb训练要点1,参考MongoDB Spark Connector使用:https://www.ji ...https://www.cnblogs.com/goingmyway/p/557 ...需求说明实现思路及步骤综合实训5Linux服务安全监测系统实训目的掌握MapReduce的高级编程掌握MR方法和实现掌握自定义数据类型掌握自定义计数器掌握MapReduce 参数的传递综合应用多学科知识熟练使用Linux的Shell编程熟悉使用Python数据可视化熟练使用 wordpress网站开发熟练使用网络安全技术熟习软件工程项目管理方法需求说明当前各企业面临挖矿病毒的威胁,病毒占用大量的系统资源和带宽资源,严重影响正常的业 ...急需一套系统能够快速巡检所有Linux系统,及时发现挖矿病毒,及时通报并给出处理 ...实现思路及步骤获取Linux日志相关数据上传数据到hdfs编写Java代码实现日分析缩写Python代码实现可视化检测到病毒后处理项目输出项目宣传与推广鼓励方式项目参与者可以将此项目作为本课程综合实验来提交相应报告项目在与者额外获得1到10分的本课程分附件参考挖矿参考挖矿病毒zz.shhttps://blog.csdn.net/m0_37313888/articl ...常见问题SequenceFile.Reader过时		//获取Option实例,新方法
	    SequenceFile.Rea ...		//获取文件系统
//		FileSystem fs=FileSystem. ...参考:https://blog.csdn.net/mrkkmrkkk/artic ...运行代码5-29时报异常
java.lang.ClassNotFoundExce ...Cannot allocate containers as requested  ...在eclipse中运行LogCountRun报错Invalid resource request! Cannot allocat ...http://i.hddly.cn/media/eclipse_s5r6Xoqm ...原因原因是yarn-site.xml中的两处配置值太小了,不满足作业的申请条件
把y ...原因1,在yarn-site.xml中配置如<property>  
        <name>yarn.nodemana ... <property>  
        <name>yarn.schedul ...Could not find or load main class
org.ap ...再次运行,报错“ Could not find or load main cla ...错误:http://i.hddly.cn/media/eclipse_s1m4wReC ...参考:https://blog.csdn.net/qq_41684957/articl ...提示处理Please check whether your <HADOOP_HOME>/ ...处理使用hadoop classpath查找路径[root@master hadoop]# hadoop classpath
/ ...编辑 vi yarn-site.xml<configuration>
    <property>
        < ...编辑 vi mapred-site.xml <property>
        <name>mapreduce.appl ...在所有的Master和Slave节点进行如上设置,设置完毕后重启Hadoop集群 ...org.apache.hadoop.mapreduce.v2.app.MRApp ...错误日志错误日志:2023-05-23 01:18:44,500 ERROR [main ...原因分析:提示class file version 61.0,表示eclipse ...处理:修改eclipse->项目属性->Java编译器,由java17版本改为j ...Not enough documents for more than one s ...连接Mongodb库查数据报错:查看日志:/usr/local/hadoop-3.3.1/logs/userlo ...2022-04-14 21:03:08,216 INFO [main] org. ...问题参考https://blog.csdn.net/u011007180/article ...Exception reading next key/val from mong ...使用yarn方式运行LogCountRun,报slf4j错错误信息[2023-03-30 07:34:40.108]Container exite ...使用yarn方式运行LogCountRun,报prelaunch.err错错误信息[2023-03-30 07:34:40.108]Container exite ...错误分析打开master:8088任务进入任务详细信息页,进入logs链接发现错误信息:2023-03-30 10:41:22,178 ERROR [ma ...原来是eclipse上jdk版本偏高问题处理eclipse->菜单windows->performances->java-> ...重新运行,成功其它Hadoop常见问题https://www.cnblogs.com/yinzhengjie/p/13 ...版本历史Ver1.1-20220121初始版本Ver1.2-20230523增加了常见问题,因为java版本未指定为1.8
hide
第5章MapReduce进阶编程
Ver1.2-20230523
hide
任务5.1筛选日志文件并生成序列化文件
Arrow Link
hide
编写代码
hide
任务5.2Hadoop Java API读取序列化日志文件
hide
FileSystemAPI实例
hide
读取序列化文件
hide
任务5.3优化日志文件统计程序
hide
MR优化关键因素
hide
MR实现日志按月份统计
hide
源码实现
Arrow Link
hide
LogCount驱动类实现
leaf

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.input.SequenceFileAsTextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;

public class LogCount {

public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://home.hddly.cn:9864");
String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
if (otherArgs.length < 2) {
otherArgs= new String[]{"/user/myname/output_SelectData/part-m-00000","/user/myname/output_MonthData"};
//注意myname处改为自已姓名全拼
}
Job job = Job.getInstance(conf, "logcount");
job.setJarByClass(LogCount.class);
job.setMapperClass(LogCountMapper.class);
job.setReducerClass(LogCountReducer.class);
job.setCombinerClass(LogCountCombiner.class);
job.setPartitionerClass(LogCountPartitioner.class);
job.setNumReduceTasks(2);

job.setOutputKeyClass(MemberLogTime.class);
job.setOutputValueClass(IntWritable.class);
job.setInputFormatClass(SequenceFileAsTextInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class);

FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
FileSystem.get(conf).delete(new Path(otherArgs[1]), true);
FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));

System.err.println(job.waitForCompletion(true) ? -1 : 1);
}

}
hide
任务5.4Eclipse提交日志文件统计程序
hide
MR实现日志按月份统计2
hide
源码实现
Arrow Link
hide
LogCount驱动类实现
leaf

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.input.SequenceFileAsTextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;
public class LogCount extends Configured implements Tool{
public static void main(String[] args){
String[] myArgs={
"/uer/myname/output_SelectData/part-m-00000",
"/uer/myname/output_logcount"
};

try {
ToolRunner.run(LogCount.getMyConfiguration(), new LogCount(), myArgs);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public int run(String[] args) throws Exception {
Configuration conf=LogCount.getMyConfiguration();
Job job=Job.getInstance(conf, "logcount");
job.setJarByClass(LogCount.class);
job.setMapperClass(LogCountMapper.class);
job.setReducerClass(LogCountReducer.class);
job.setCombinerClass(LogCountCombiner.class);
job.setPartitionerClass(LogCountPartitioner.class);
job.setNumReduceTasks(2);
job.setOutputKeyClass(MemberLogTime.class);
job.setOutputValueClass(IntWritable.class);
job.setInputFormatClass(SequenceFileAsTextInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class);
FileInputFormat.addInputPath(job, new Path(args[0]));
FileSystem.get(conf).delete(new Path(args[1]), true);
FileOutputFormat.setOutputPath(job, new Path(args[1]));
return job.waitForCompletion(true)?-1:1;
}
public static Configuration getMyConfiguration(){
//声明配置
Configuration conf = new Configuration();
conf.setBoolean("mapreduce.app-submission.cross-platform",true);
conf.set("fs.defaultFS", "hdfs://master:9864");// 指定namenode
conf.set("mapreduce.framework.name","yarn"); // 指定使用yarn框架
String resourcenode="master";
conf.set("yarn.resourcemanager.address", resourcenode+":8032"); // 指定resourcemanager
conf.set("yarn.resourcemanager.scheduler.address",resourcenode+":8030");// 指定资源分配器
conf.set("mapreduce.jobhistory.address",resourcenode+":10020");
conf.set("mapreduce.job.jar",JarUtil.jar(LogCount.class));
return conf;
}
}
hide
其它参考
hide
HADOOP-YARN资源分配介绍-以及推荐常用优化参数
hide
实训1统计全球每年月的最高气温和最低气温
hide
实训2筛选气温在15~25C之间的数据
hide
常见问题
hide
Could not find or load main class
org.apache.hadoop.mapreduce.v2.app.MRAppMaster”