查看“Hadoop:运行首个MapReduce任务”的源代码
←
Hadoop:运行首个MapReduce任务
跳转至:
导航
,
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
==实训目标== (1) 掌握以 hadoop jar 方式提交 MapReduce 任务。 ==实训环境== (1) 使用 CentOS 6.10 的 Linux 操作系统搭建的 3 个节点的 Hadoop 集群。 (2) 使用 1.8 的 JDK 。 (3) 使用 2.6.4 版本的 Hadoop 。 ==实训内容== (1) 在 HDFS 上有日志文件 /user/root/email_log.txt ,如 图 3 ‑1 所示,其中每行记录是一个用户名,每一行记录表示用户登录了网站一次,要求统计每个用户登录的次数。 [[文件:bd20-7-10.png]] 图 3 ‑ 1 email_log.txt (2) 提交 MapReduce 任务给集群运行。 ==实训步骤== ===前置步骤=== *[[上传文件到HDFS目录]] ===提交 MapReduce 任务给集群运行=== 提交 MapReduce 任务,通常使用 hadoop jar 命令。它的基本用法格式如 表 4 ‑1 所示。 表 4 ‑ 1 hadoop jar 语法格式 hadoop jar <jar> [mainClass] args 因为 hadoop jar 命令 的附带参数较多,下面结合实际任务,对它的各项参数进行说明。示例如 代码 4‑2 所示,其中,每个参数需要空格分开,反斜杠 \ 为换行作用。 代码 4 ‑ 2 使用 hadoop jar 命令提交 MapReduce 任务 命令 <nowiki>hadoop jar \ $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.4.jar \ wordcount \ /user/root/email_log.txt \ /user/root/output</nowiki> 参考 代码 4‑2 中的内容,针对 hadoop jar 命令的常用参数做以下解释说明。 ( 1 ) $HADOOP_HOME :指主机中设置的环境变量(参考 /etc/profile 内容)。此处的 $HADOOP_HOME 就是本地目录 /usr/local/hadoop-2.6.4 。 ( 2 ) hadoop-mapreduce-examples-2.6.5.jar : Hadoop 官方提供的示例程序包,其中包括词频统计模块( wordcount )。 ( 3 ) wordcount :程序包中的主类名称。 ( 4 ) /user/root/email_log.txt : HDFS 上的输入文件名称。 ( 5 ) /user/root/output : HDFS 上的输出文件目录。 在理解了 hadoop jar 命令的各项参数后,执行统计用户登录次数的任务,这里是通过统计数据中用户名出现的次数来统计用户的登录次数,如 代码 4‑3 所示。 代码 4 ‑ 3 执行统计登录次数程序的命令 [root@master data]# hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount /user/root/email_log.txt /user/root/output <nowiki>20/06/27 08:41:15 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 20/06/27 08:41:16 INFO client.RMProxy: Connecting to ResourceManager at master/192.168.128.130:8032 20/06/27 08:41:17 INFO input.FileInputFormat: Total input paths to process : 1 20/06/27 08:41:17 INFO mapreduce.JobSubmitter: number of splits:2 20/06/27 08:41:18 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1593205940394_0001 20/06/27 08:41:18 INFO impl.YarnClientImpl: Submitted application application_1593205940394_0001 20/06/27 08:41:19 INFO mapreduce.Job: The url to track the job: http://master:8088/proxy/application_1593205940394_0001/ 20/06/27 08:41:19 INFO mapreduce.Job: Running job: job_1593205940394_0001 20/06/27 08:41:29 INFO mapreduce.Job: Job job_1593205940394_0001 running in uber mode : false 20/06/27 08:41:29 INFO mapreduce.Job: map 0% reduce 0% 20/06/27 08:41:45 INFO mapreduce.Job: map 38% reduce 0% 20/06/27 08:41:48 INFO mapreduce.Job: map 46% reduce 0% 20/06/27 08:41:51 INFO mapreduce.Job: map 61% reduce 0% 20/06/27 08:41:54 INFO mapreduce.Job: map 70% reduce 0% 20/06/27 08:41:55 INFO mapreduce.Job: map 78% reduce 0% 20/06/27 08:41:57 INFO mapreduce.Job: map 83% reduce 0% 20/06/27 08:41:59 INFO mapreduce.Job: map 100% reduce 0% 20/06/27 08:42:06 INFO mapreduce.Job: map 100% reduce 84% 20/06/27 08:42:09 INFO mapreduce.Job: map 100% reduce 100% 20/06/27 08:42:09 INFO mapreduce.Job: Job job_1593205940394_0001 completed successfully 20/06/27 08:42:09 INFO mapreduce.Job: Counters: 49 File System Counters FILE: Number of bytes read=416431063 FILE: Number of bytes written=584943367 FILE: Number of read operations=0 FILE: Number of large read operations=0 FILE: Number of write operations=0 HDFS: Number of bytes read=226383985 HDFS: Number of bytes written=114167885 HDFS: Number of read operations=9 HDFS: Number of large read operations=0 HDFS: Number of write operations=2 Job Counters Launched map tasks=2 Launched reduce tasks=1 Data-local map tasks=2 Total time spent by all maps in occupied slots (ms)=203092 Total time spent by all reduces in occupied slots (ms)=47524 Total time spent by all map tasks (ms)=50773 Total time spent by all reduce tasks (ms)=11881 Total vcore-milliseconds taken by all map tasks=50773 Total vcore-milliseconds taken by all reduce tasks=11881 Total megabyte-milliseconds taken by all map tasks=103983104 Total megabyte-milliseconds taken by all reduce tasks=24332288 Map-Reduce Framework Map input records=8000000 Map output records=8000000 Map output bytes=250379675 Map output materialized bytes=168189616 Input split bytes=214 Combine input records=12301355 Combine output records=9352725 Reduce input groups=3896706 Reduce shuffle bytes=168189616 Reduce input records=5051370 Reduce output records=3896706 Spilled Records=17558337 Shuffled Maps =2 Failed Shuffles=0 Merged Map outputs=2 GC time elapsed (ms)=1394 CPU time spent (ms)=41520 Physical memory (bytes) snapshot=515846144 Virtual memory (bytes) snapshot=6172655616 Total committed heap usage (bytes)=272535552 Shuffle Errors BAD_ID=0 CONNECTION=0 IO_ERROR=0 WRONG_LENGTH=0 WRONG_MAP=0 WRONG_REDUCE=0 File Input Format Counters Bytes Read=226383771 File Output Format Counters Bytes Written=114167885]]</nowiki> 代码 4‑3 显示了 hadoop jar 执行 MapReduce 任务时的日志输出,其中的一些关键信息有助于检查执行的过程与状态。 任务执行完成后,在输出目录 /user/root/output/ 中有两个新文件生成:一个是 _SUCCESS ,这是一个标识文件,表示这个任务执行完成:另一个是 part-r-00000 ,即任务执行完成后产生的结果文件。显示出 part-r-00000 的内容,如 图 4‑1 所示。 [[文件:bd20-7-11.png|600px]] 图 4 ‑ 1 统计用户登录次数的结果 [[文件:bd20-7-12.png|600px]] 图 4‑1 中有两列数据,第 1 列是用户名 ,第 2 列就是该用户的登录次数。
返回至
Hadoop:运行首个MapReduce任务
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息