第4章MapReduce编程入门

Imagemap
第4章MapReduce编程入门任务前言学习目标(1)掌握如何搭建MapReduce开发环境。(2)掌握以Eclipse创建MapReduce工程。(3)理解MapReduce的基本原理及执行流程。(4)读懂Hadoop官方示例WordCount的源码。(5)掌握MapReduce编程的基本思路。(6)理解map函数与reduce函数的处理逻辑。(7)能够编写MapReduce程序处理简单任务。任务背景针对某社交网站对网站访问进行统计:1)根据日期统计用户总访问次数;2)对统计需求 ...任务指导http://bigdata.hddly.cn/b37066/B37066L04 ...学习视频使用Eclipse创建MapReduce工程http://i.hddly.cn/media/2GHkhpHGgf.mp4结合PPT讲解MapReduce编程http://i.hddly.cn/media/4cMgK18MLg.mp4ppt文件:https://bigdata.hddly.cn/b37066/fi ...通过源码初识MapReduce编程http://i.hddly.cn/media/xFVUzVg32A.mp4补充问题http://i.hddly.cn/media/fpadS1JCP6.mp4编程实现按日期统计访问次数http://i.hddly.cn/media/FlgwJ78mUu.mp4编程实现按访问次数排序http://i.hddly.cn/media/zkZQjni0mo.mp4任务4.1使用Eclipse创建MapReduce工程软件准备Eclipse安装包https://mirrors.neusoft.edu.cn/eclipse/t ...hadoop3.3.1安装包https://mirrors.aliyun.com/apache/hadoop ...hadoop插件包https://gitee.com/mi_chuan/eclipse-hadoo ...mrlibs依赖包http://i.hddly.cn/b37066/file/mrlibs.rarwinutils工具包http://bigdata.hddly.cn/b37066/file/hado ...wordcount源码安装Eclipse解压eclipse-java-2021-12-R-win32-x86_64.zi ...将解压后的:eclipse-java-2021-12-R-win32-x86_6 ...将d:\soft\eclipse目录下的eclipse.exe发送到桌面快捷方式通过右击eclipse.exe在菜单中找到发送到...解压hadoop解压hadoop-3.3.1.tar.gz 到当前目录下将解压后的hadoop-3.3.1 目录移动到D:\soft\hadoop目录下解压: D:\soft\hadoop\hadoop-3.3.1\share\ha ...找到解压目录下:\org\apache\hadoop\examples\Word ...插件使用将下载的:hadoop-eclipse-plugin-2.6.0.jar (注意 ...将下载的:hadoop-winutils-master-3.3.1.rar解压出 ...配置系统环境变量控制面板->所有控制面板->系统 ->高级系统设置->环境变量->系统变量新建 HADOOP_HOME,值:D:\soft\hadoop\hadoop-3 ...修改Path,在后面添加;%HADOOP_HOME%\bin;%HADOOP_HOME%\sbin操作终端机hosts修改说明:
在windows文件中找到System32-->drivers-->et ...192.168.137.100 master
192.168.137.101 s ...配置服务端环境/usr/local/hadoop-3.3.1/etc/hadoopvi ./yarn-site.xml     <!-- 固定写法,不写yarn会报错 -->
    <propert ...<property>
<name>yarn.application.classp ...vi ./mapred-site.xml <property>
<name>mapreduce.application.c ...配置MapReduce环境桌面双击eclipse快捷方式打开eclipse在eclipse中指定 hadoop目录eclipse->windows->preferences->Hadoop Ma ...选择 D:\soft\hadoop\hadoop-3.3.1增加Map/Reduce功能区eclipse->windows->Perspective->Open Pers ...配置Hadoop集群在Eclipse主界面下方的控制台中,选中选项卡:Map/Reduce Loca ...配置:
主机Host:master
端口Port:9864 
它是我们在集群环境 ...在Eclipse主界面左侧树图中浏览HDFS上的目录和文件新建MapReduce工程File->New->Project->Map/Reduce Project选项 ...任务4.2通过源码初识MapReduce编程解压: D:\soft\hadoop\hadoop-3.3.1\share\ha ...将:\org\apache\hadoop\examples\WordCount. ...添加环境变量右击我的电脑->属性->高级系统设置->环境变量->添加系统环境变量变量名:HADOOP_HOME变量值:D:\soft\hadoop\hadoop-3.3.1\编辑Path添加: $HADOOP_HOME\bin配置项目解压 mrlibs.rar 到: d:\soft\hadoop\mrlibs目录 ...右击 MemberCount项目->Build Path->Config Bui ...修改源码WordCount在Main方法的Configuration conf = new Configu ...    conf.set("fs.defaultFS", "hdfs://mas ...运行WordCount类方法右击类代码->Run As->Java Application观察运行结果导出jar包右击MemberCount项目->Export->Runnable JAR fi ...Launch configuration:选择刚刚运行WordCountExport destinations:d:\soft\hadoop\wordc ...Library handing: 选择Extract required libr ...导出过程有任何提示,直接点确认上传jar包到master通过crt在master上打开 sftplcd d:\soft\hadoop\cd /root/hadoopput wordcount.jar运行jar包cd /root/hadoophadoop jar ./wordcount.jar /user/myname/ ...观察运行情况任务4.3编程实现日期统计访问次数获取测试数据使用crt进入集群的master或slave节点cd /root/hadoop
wget https://hddly.oss-c ...编写代码创建类: dailyAccessCount添加Mapper类  public static class MyMapper 
       e ...添加Reducer类  public static class MyReducer 
        ...添加Driver代码	public static void main(String[] args)  ...运行dailyAccessCount类方法右击类代码->Run As->Java Application观察运行结果导出jar包右击MemberCount项目->Export->Runnable JAR fi ...Launch configuration:选择刚刚运行的dailyAccessC ...Export destinations:d:\soft\hadoop\daily ...Library handing: 选择Extract required libr ...导出过程有任何提示,直接点确认上传jar包到master通过crt在master上打开 sftplcd d:\soft\hadoop\cd /root/hadoopput dailyAccessCount.jar运行jarhadoop  jar dailyAccessCount.jar /user/m ...任务4.4编程实现按访问次数排序实验数据说明:使用crt进入集群的master或slave节点,以下myname替换为自 ...cd /root/hadoop
wget https://hddly.oss-c ...编写代码创建类:accessTimesSort添加Mapper类public static class MyMapper 
extends Ma ...添加Reducer类public static class MyReducer 
extends R ...添加Driver代码	public static void main(String[] args)  ...运行accessTimesSort类方法右击类代码->Run As->Java Application观察运行结果导出jar包右击MemberCount项目->Export->Runnable JAR fi ...Launch configuration:选择刚刚运行的dialAccessCo ...Export destinations:d:\soft\hadoop\acces ...Library handing: 选择Extract required libr ...导出过程有任何提示,直接点确认上传jar包到master通过crt在master上打开 sftplcd d:\soft\hadoop\cd /root/hadoopput accessTimesSort.jar运行jarhadoop jar accessTimesSort.jar /user/myn ...其它参考Eclipse更新版本https://mirrors.neusoft.edu.cn/eclipse/t ...hadoop插件更新包https://gitee.com/liu_xu111/Hadoop-eclip ...实验室x86_32位机上调试软件源码准备下载源码https://bigdata.hddly.cn/b37066/file/Mem ...解压到d:/myname目录下软件准备eclipse,将版本copy到d:/d_soft/eclipise目录https://mirrors.aliyun.com/apache/hadoop ...Hadoop3.3.1版本,解压到d:/d_soft/hadoop-3.3.1目 ...https://gitee.com/mi_chuan/eclipse-hadoo ...Hadoop-eclipse-plugin-2.6.0.jar,copy到d:/ ...winutils工具包http://bigdata.hddly.cn/b37066/file/hado ...系统环境配置操作终端机hosts修改说明:
在windows文件中找到System32-->drivers-->et ...10.255.10.222 c222
10.255.10.214 c214
10 ...配置系统环境变量控制面板->所有控制面板->系统 ->高级系统设置->环境变量->系统变量新建 HADOOP_HOME,值:D:\soft\hadoop\hadoop-3 ...修改Path,在后面添加;%HADOOP_HOME%\bin;%HADOOP_HOME%\sbin源码调试修改源码src\wordcount.javaresourcenode="改为本组集群的master名称"mapreduce.framework.name:yarnwordcount v2源代码https://bigdata.hddly.cn/b37066/code/Wor ...执行Sample text-files as input:$ bin/hadoop fs -ls /user/myname/wordcou ...$ bin/hadoop jar wc.jar WordCount2 /user ...bin/hadoop fs -cat /user/myname/wordcoun ...bin/hadoop fs -cat /user/myname/wordcoun ...bin/hadoop jar wc.jar WordCount2 -Dwordc ...bin/hadoop jar wc.jar WordCount2 -Dwordc ...Mapper类官方文档https://hadoop.apache.org/docs/stable/ap ...Modifier and Type	Method and Description ...多应用共用相同的jar包在eclipse上,将MR项目导出成jar包LogCount.jar使用 sftp将LogCount.jar上传到 Hadoop集群/root目录下进入集群的虚拟机 cd /root运行 LogCount.jar并指定类的完整路径: train1_hadoopl ...例如执行 hadoop日志的几个步骤hadoop jar ./LogCount.jar train1_hadoopl ...hadoop jar ./LogCount.jar train1_hadoopl ...hadoop jar ./LogCount.jar train1_hadoopl ...操作练习实验数据说明:以下myname要替换为本人姓名全拼cd /root/hadoop内网: 
wget http://10.255.10.50/file/music ...tar -xvf ./music_data.bson.tar.gzhdfs dfs -put ./music_data.bson /user/my ...运行jarcd /usr/local/hadoop-3.3.1/share/hadoop/ ...hadoop jar ./hadoop-mapreduce-examples-3 ...实训1获取成绩表的最高分记录训练要点掌握MapReduce的编程的基本操作掌握MapReduce编程的一些常用的数据处理方法,如最大值,去重等掌握对MapReduce的执行流程掌握MapReduce程序的输入输出格式需求说明样例文件Subject_score成绩表,每行包含两个字段 科目和分数,要求获取 ...实现思路及步骤进入服务器/root/hadoop目录:cd /root/hadoop获取实验数据在内网:wget http://10.255.10.50/b37066/file/sub ...在外网:wget http://bigdata.hddly.cn/b37066/file ...上传数据到hdfshdfs dfs -put ./subject_score.txt /user/ ...验证数据是否已上传hdfs dfs -ls /user/myname/sub*编写代码在Mapper类中, map函数读取成绩表中的数据,直接将读取的数据以空格分隔, ...在Reducer中,由于map函数输出键值对类型是<Text,IntWritab ...在main中设置相应的输入输出等内容源码参考:http://bigdata.hddly.cn/b37066/file/chap ...调试通过,然后导出jar,命名为maxscore.jar,并上传hadoop集群 ...查看输出结果:查看hdfs:/user/myname/output_maxsco ...作业要求1,环境说明:本小组主机:,本小组成员机:,本成员机:2,在http://master:9870上拍照截取本小组集群中本成员目录下/u ...3,在eclipse中,分别截图 map类,reduce类,main方法的源码图4,在eclipse中,运行,截取运行console内容图5,查集群linux本成员虚拟下运行maxscore.jar程序 ,截图6,在http://master:9870的文件系统中,打开运行输出结果:/us ...实训2对两个文件中的数据进行合并与去重训练要点掌握MapReduce的编程的基本操作掌握MapReduce编程的一些常用的数据处理方法,如最大值,去重等掌握对MapReduce的执行流程掌握MapReduce程序的输入输出格式需求说明有两个样例文件:XX和YY,要求合并两个文件的数据,并对合并后的数据进行去重,将 ...实现思路及步骤进入服务器/root/hadoop目录:cd /root/hadoop获取实验数据在内网:wget http://10.255.10.50/b37066/file/XX. ...wget http://10.255.10.50/b37066/file/YY. ...在外网:wget http://bigdata.hddly.cn/b37066/file ...wget http://bigdata.hddly.cn/b37066/file ...上传数据到hdfshdfs dfs -mkdir -p /user/myname/repeathdfs dfs -put ./XX.txt /user/myname/repe ...hdfs dfs -put ./YY.txt /user/myname/repe ...验证数据是否已上传hdfs dfs -ls /user/myname/repeat/编写代码应用MapReduce中Reducer类会合并健相同的键值 对的特性,对目标数据 ...在Hdfs创建目录/user/myname/repeat,将样例文件XX.txt ...在Mapper类中,map函数读取两个文件中的数据,直接将读取的数据作为键,将键 ...在Reducer类中,键保持不变,而其对应的值取空,即 null,设置输出数据类 ...源代码参考http://bigdata.hddly.cn/b37066/file/chap ...调试通过,然后导出jar,命名为rmrepeat.jar,并上传hadoop集群 ...查看输出结果:查看hdfs:/user/myname/output_rmrepe ...作业要求1,环境说明:本小组主机:,本小组成员机:,本成员机:2,在http://master:9870上拍照截取本小组集群中本成员目录下/u ...3,在eclipse中,分别截图 map类,reduce类,main方法的源码图4,在eclipse中,运行,截取运行console内容图5,查集群linux本成员虚拟下运行rmrepeat.jar程序 ,截图6,在http://master:9870的文件系统中,打开运行输出结果:/us ...常见问题提示HADOOP_HOME and hadoop.home.dir不可用在eclipse上运行wordcount.jar时报错错误提示:http://i.hddly.cn/media/QQ_5eLgxRWo ...在系统环境变量中添加HADOOP_HOME,以及在PATH中添加%HADOOP_ ...Could not locate Hadoop executable:...wi ...在eclipse上运行 wordcount.java时报错错误提示:http://i.hddly.cn/media/QQ_XVMptdJ2 ...下载winutils.ext,hadoop.dllhttp://i.hddly.cn/b37066/file/hadoop-win ...或:https://github.com/4ttty/winutils复制到hadoop/hadoop-3.3.1/bin目录下导出的jar在集群上运行报jdk版本不符在linux上运行导出的 ja包时报错错误提示:http://i.hddly.cn/media/QQ_dP87URBn ...错误提示:http://i.hddly.cn/media/QQ_wfEvFSX8 ...处理:在eclipse上右击项目名称->属性->Java Compiler->
 ...http://i.hddly.cn/media/QQ_CzZJvxErdZ.pn ...或处理:在eclipse->windows->preferences->Java ...http://i.hddly.cn/media/eclipse_OQRWmVlK ...It is indirectly referenced from require ...原因:你正要使用的类调用了另一个类,而这个类又调用了其他类,这种关系可能会有好多 ...https://www.cnblogs.com/justinzhang/p/43 ...从字面上可以看出,工程缺少org.apache.commons.cli.Opti ...hadoop-3.3.1\share\hadoop\common\lib\com ...NoClassDefFoundError: org/apache/hadoop/ ...hadoop-shaded-protobuf_3_7-1.1.1.jarhadoop-shaded-guava-1.1.1.jarNoClassDefFoundError: org/apache/commons ...commons-collections-3.2.2.jarNoClassDefFoundError: org/apache/commons ...commons-configuration2-2.1.1.jarClassNotFoundException: Class WordCount$ ...eclipse导出时选择:Extract required libraries  ...org.apache.hadoop.security.AccessControl ...到hdfs机器下修改hdfs-site.xml即可<property>
         <name>dfs.permission ...添加环境变量HADOOP_USER_NAME=roothttps://blog.csdn.net/worldchinalee/arti ...在eclipse执行 wordcount提示权限问题提示权限问题,无法运行出结果在eclipse的页Map/Reduce Locations中,检查集群连接配置 ...提示用户权限不足:Permission denied提示如:Permission denied: user=.... access= ...错误信息如:http://i.hddly.cn/media/QQ_O2dfO7HPYP.pn ...处理:增加目录权限hdfs dfs -chmod -R 777 /user运行mr应用过程出现地址变化问题mr应用远程调用集群运行过程报地址变化,如图:http://i.hddly.cn/media/QQ_sBqVQKOLwk.jp ...添加整个目录下的libE:\soft\hadoop\hadoop-3.3.1\hadoop-3.3.1 ...远程调试hdfsConfiguration conf = new Configuration() ...conf.set("fs.defaultFS", "hdfs://master: ...运行参数:/user/root/user_login.txt /user/roo ...hadoop执行jar方式如果打包成普通jar包,那么需要在运行时指定main方法入口% hadoop jar EXEMPLE.jar MainClassName < ...好处是可以随意指定jar包中需要运行的main方法如果打包成runnable jar包,在打包时就指定了main方法入口% hadoop jar EXEMPLE_RUNNABLE.jar <args> ...Excluding datanode DatanodeInfoWithStora ...关闭防火墙以永久关闭selinux:使用  vim /etc/selinux/config ...节点跨路由也可能存在此问题,部分在有线部分在无线网络也不行Couldn't preview the file. NetworkError: ...报错原因hdfs-site.xml 文件中的 dfs.webhdfs.enabled 没 ...解决方案编辑文件 hdfs-site.xml
<property>
    <name> ...还有,如果是通过外网访问,比如: http://home.hddly.cn:98 ...yarn站点观察不到任务观察master的 resoucesmanager日志发现Invalid resource request! Cannot allocat ...需要1536内存,实际配置了最大内存1024增加虚拟机内存:1G->2G,yarn-site.xml中配置最大内存由1024 ...运行wordcount时提示slf4j-log4j12-1.7.30重复提示错误信息http://i.hddly.cn/media/QQ_hKhLfJEjDl.pn ...处理,在eclipse->项目->Build Path->Conifig Bui ...http://i.hddly.cn/media/eclipse_pHDVJKso ...Note: System times on machines may be ou ...ntpdate time.nist.gov优化mr任务性能input.FileInputFormat: Total input files ...mapreduce.JobSubmitter: number of splits ...eclipse上跨网络调用 hadoop集群参考:https://blog.csdn.net/qq_31454379/art ...处理hdfs-site.xml添加<property>
  <name>dfs.client.use.datano ...源码添加conf.set("dfs.client.use.datanode.hostna ...SLF4J: Failed to load class "org.slf4j.i ...在eclipse上运行如Wordcount程序时报slf4j错,如图i.hddly.cn > Media > Eclipse KNR80RaZpK解决:eclipse->项目右击->Build Path->Configure  ...i.hddly.cn > Media > Eclipse yZAzVvdu4tsince CPU usage is not yet available在eclipse上运行 wordcount时,发现日志停留在 :Job: Run ...i.hddly.cn > Media > Eclipse J2Hn7uiUi2查看yarn site:http://master:8088发现该任务在serv ...i.hddly.cn > Media > Chrome 0tAYCGsDWA 查看 server1上的日志,发现有提示cpu不可用tail -f hadoop-root-nodemanager-server1. ...i.hddly.cn > Media > SecureCRT BbPtemu0H ...提示: Skipping monitoring container contai ...permission denied:/tmp/hadoop-yarn在实验室运行wordcount.java报错处理:hdfs dfs -chmod -R 777 /tmpmapreduce中文乱码问题用Hadoop处理数据的时候,发现输出的时候,总是会出现乱码,这是因为Hadoo ...解决问题,就是转码,确定数据都是以UTF-8的编码格式在运行。
在map端从文件 ...例如:实验:获取每科最高分的MAP	protected void map(LongWritable key, Te ...
hide
第4章MapReduce编程入门
hide
任务4.1使用Eclipse创建MapReduce工程
hide
任务4.2通过源码初识MapReduce编程
hide
任务4.3编程实现日期统计访问次数
hide
编写代码
hide
任务4.4编程实现按访问次数排序
hide
编写代码
hide
其它参考
hide
实训1获取成绩表的最高分记录
hide
实训2对两个文件中的数据进行合并与去重
hide
常见问题