跨象乘云工程系统实践平台 – 在线演示
1. 登录步骤
–> 选择入口:右上角选择【演示】
–> 选择页面下方:教师登录
–> 输入账号/密码:teacher/teacher
–> 点击:登录
–> 选择:我的课程 | 大数据基础 | 实验alpha | 实验概览
–> 选择:MapReduce编程及运行监听(图片)
–> 测试环境启动:实验操作栏在右侧窗口,左侧栏为实验指导。
2. 使用 MapReduce 执行 WordCount 统计运算体验
Hadoop MapReduce 是一个软件框架,用于轻松编写应用程序,以高可用、容错的方式在大型群集(数千个节点)的大型商业硬件上并行处理大量数据(多 TB 数据集);而 WordCount 则是用于演示 MapReduce 工作原理的经典实验,通过一个简单的应用程序:WordCount,使用 MapReduce 统计给定输入的文本集中每个单词的出现次数。在操作 WordCount 实验之前,需要确保程序文件(备用链接)已经被安装到系统环境当中 —— 打开终端窗口,确认主目录(/home/oracle/exercises/)下包含了 WordCount 目录。进入目录,查看 WordCount.java 代码:
注意:WordCount.java 程序中 14 行实现了 Mapper 接口,28 行实现了Reducer 接口;查看完毕后,可关闭 gedit
3. 创建工作目录
在本地文件系统(/home/oracle/exercises/wordCount/)下创建一个新目录:wordcount_classes:
输入下面的命令编译 WordCount.java 程序并且设置正确的 classpath 及输出目录。其中,-d 参数用于指定编译结果的 class 文件的存放目录:
javac -cp /usr/lib/hadoop/*:/usr/lib/hadoop/client-0.20/* -d wordcount_classes WordCount.java
检查执行结果:
ls ./wordcount_classes/ -l
–> -rw-r--r--. 1 oracle oinstall 1595 Feb 13 06:08 WordCount.class
–> -rw-r--r--. 1 oracle oinstall 1722 Feb 13 06:08 WordCount$MyMapper.class
–> -rw-r--r--. 1 oracle oinstall 1633 Feb 13 06:08 WordCount$MyReducer.class
为编译的 WordCount 目录创建一个 jar 文件,需要将该 jar 文件发送到集群上的其他节点上,并且同时运行。输入并执行下面的命令:
jar -cvf WordCount.jar -C wordcount_classes/ .
–> adding: WordCount$MyMapper.class(in = 1722) (out= 753)(deflated 56%)
–> adding: WordCount.class(in = 1595) (out= 849)(deflated 46%)
–> adding: WordCount$MyReducer.class(in = 1633) (out= 687)(deflated 57%)
查看 WordCount.java 程序处理的两个文件的内容:
–> very disappointed and very expensive
–> expensive and unreliable insurance
–> worthless insurance and expensive
–> worst customer service
在 HDFS 上创建 /user/oracle/wordcount 和 /user/oracle/wordcount/input 目录:
hadoop fs -mkdir /user/oracle/wordcount
hadoop fs -mkdir /user/oracle/wordcount/input
检查执行结果:
hadoop fs -ls /user/oracle/wordcount/
–> drwxr-xr-x - oracle oracle 0 2018-02-13 06:23 /user/oracle/wordcount/input
使用 Hadoop 的 copyFromLocal 命令,把 file01 和 file02 文件从本地文件系统复制到 HDFS 的 /user/oracle/wordcount/input 目录中:
hadoop fs -copyFromLocal file01 /user/oracle/wordcount/input/file01
hadoop fs -copyFromLocal file02 /user/oracle/wordcount/input/file02
记住,文件在 HDFS 中被切分为多个数据块存储在 Hadoop 集群的不同的节点进行并行处理,确认上面的两个文件成功的复制到对应目录:
hadoop fs -ls /user/oracle/wordcount/input
–> -rw-r--r-- 1 oracle oracle 518 2018-02-13 06:39 /user/oracle/wordcount/input/file01
–> -rw-r--r-- 1 oracle oracle 154 2018-02-13 06:39 /user/oracle/wordcount/input/file02
4. 执行 WordCount
运行 MapReduce 任务,执行 WordCount:
hadoop jar WordCount.jar WordCount /user/oracle/wordcount/input /user/oracle/wordcount/output
上面的命令,要求 Hadoop 将统计结果存放在 /user/oracle/wordcount/output 目录下。同时,Hadoop 集群提供的运行信息显示在屏幕上,帮助你跟踪任务的执行状态。另外,你也可以使用提供的 URL 跟踪任务
–> 18/02/13 06:54:53 INFO mapreduce.Job: The url to track the job: http://bigdatalite.localdomain:8088/proxy/application_1516873213790_0001/
–> 18/02/13 06:54:53 INFO mapreduce.Job: Running job: job_1516873213790_0001
–> 18/02/13 06:55:32 INFO mapreduce.Job: Job job_1516873213790_0001 running in uber mode : false
–> 18/02/13 06:55:32 INFO mapreduce.Job: map 0% reduce 0%
–> 18/02/13 06:55:46 INFO mapreduce.Job: map 100% reduce 0%
–> 18/02/13 06:55:55 INFO mapreduce.Job: map 100% reduce 100%
–> 18/02/13 06:55:56 INFO mapreduce.Job: Job job_1516873213790_0001 completed successfully
5. 检查 WordCount 结果
显示 /user/oracle/wordcount/output 目录的内容:
hadoop fs -ls /user/oracle/wordcount/output
–> -rw-r--r-- 1 oracle oracle 0 2018-02-13 06:55 /user/oracle/wordcount/output/_SUCCESS
–> -rw-r--r-- 1 oracle oracle 282 2018-02-13 06:55 /user/oracle/wordcount/output/part-r-00000
使用 Hadoop 的 cat 命令显示 part-r-00000 结果文件的内容,获得 MapReduce 的 WordCount 统计结果:
hadoop fs -cat /user/oracle/wordcount/output/part-r-00000
本实验结束。