hadoop编译WORDCOUNT

本文介绍如何配置Hadoop伪分布式环境并运行WordCount示例程序,包括JDK配置、SSH免密码登录设置、Hadoop安装及伪分布式配置等步骤。
 hadoop fs -ls output

hadoop fs -ls


1,首先先配置好JDK

2,并配置SSH免密码登陆

3,安装HADOOP,这里用的是版本hadoop-0.20.2.tar.gz,可上优快云下载那里找到这个版本。

4,安装伪分布式。

可以把伪分布式的hadoop看做只有一个节点的集群,在这个集群中,这个节点即是master,也是slave;既是NameNode,也是DATANODE;既是jobtracker,也是tasktracker。

解压之后,需修改几个文件。

5,在hadoop的安装目录下,先讲Wordcount.java这个例子打包生成JAR文件。

[root@localhost hadoop-0.20.2]# mkdir FirstJar

[root@localhost hadoop-0.20.2]# cp src/examples/org/apache/hadoop/examples/WordCount.java FirstJar

 javac -classpath hadoop-0.20.2-core.jar WordCount.java Wordcount

假如是以上这个版本的话会报错,以为还缺少一个JAR

编译时需加入commons-cli-1.2.jar

命令如下由于编译时需注意包的问题,将WordCount.java放到一个文件下,编译时需注意包的问题

 javac -classpath hadoop-0.20.2-core.jar:/root/hadoop-0.20.2/lib/commons-cli-1.2.jar -d  FirstJar FirstJar/WordCount.java 

特别注意引入commons-cli-1.2.jar请使用绝对路径!!!!

会生成已文件org/apache/hadoop/examples/WordCount      的三个CLASS文件

 

打包JAR文件

[root@localhost hadoop-0.20.2]# jar -cvf Wordcount.jar -C FirstJar/ .


记住后面有个  . !!!!!!!!!!

成功后的页面

added manifest
adding: WordCount.java(in = 2395) (out= 813)(deflated 66%)
adding: org/(in = 0) (out= 0)(stored 0%)
adding: org/apache/(in = 0) (out= 0)(stored 0%)
adding: org/apache/hadoop/(in = 0) (out= 0)(stored 0%)
adding: org/apache/hadoop/examples/(in = 0) (out= 0)(stored 0%)
adding: org/apache/hadoop/examples/WordCount$TokenizerMapper.class(in = 1790) (out= 765)(deflated 57%)
adding: org/apache/hadoop/examples/WordCount.class(in = 1911) (out= 996)(deflated 47%)
adding: org/apache/hadoop/examples/WordCount$IntSumReducer.class(in = 1789) (out= 746)(deflated 58%)


之后查看hadoop的目录,会发现生成了Wordcount.jar这个JAR

接着上传输入文件(输入文件是file01,file02,存放在input)

[root@localhost hadoop-0.20.2]# bin/hadoop dfs -mkdir input


可能会报这个错误: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create directory /user/hadoop/input. Name node is in safe mode.

hadoop dfsadmin -safemode leave


即可解除安全模式,

在分别创建两个file01,file02,内容自定

hadoop jar wordCount.jar org.apache.hadoop.examples.WordCount input output


注意类要加上包的路径。

hadoop fs -ls
 hadoop fs -ls output


 

hadoop fs -cat output/part-r-00000


嘿嘿,终于成功了!

 


 

### Hadoop HDFS上的WordCount程序运行指南 #### 创建必要的HDFS目录结构 为了准备执行WordCount作业,在HDFS中需设定两个路径作为输入和输出位置,分别为`/user/root/wordcount/input`以及`/user/root/wordcount/output`。这一步骤确保数据能够被正确读取并处理后的结果有地方存储[^2]。 ```bash hadoop fs -mkdir -p /user/root/wordcount/input hadoop fs -mkdir -p /user/root/wordcount/output ``` #### 准备本地文件用于上传至HDFS 在代码工作区建立名为`file01`与`file02`的文本文件,并向其中写入特定字符串内容以便后续统计词频之用。这些文件将充当MapReduce任务的数据源。 - `file01`: 包含"Hello World Bye World" - `file02`: 包含"Hello Hadoop Goodbye Hadoop" #### 将本地文件传输到HDFS 利用命令行工具把之前创建好的文件放置于指定的HDFS输入路径之下: ```bash hdfs dfs -put file01 file02 /user/root/wordcount/input/ ``` 验证文件已成功上传可以通过查看其具体内容来确认: ```bash hadoop fs -cat /user/root/wordcount/input/* ``` 上述操作应返回预期的文字串,证明文件确实存在于目标位置。 #### 执行WordCount MapReduce Job 启动WordCount应用程序对刚刚上传的数据集进行分析。此过程涉及编译Java类、打包成JAR包(假设名称为wc.jar),最后通过调用`hadoop jar`指令提交给集群执行: ```bash hadoop jar wc.jar WordCount /user/root/wordcount/input /user/root/wordcount/output ``` 该命令会触发Mapper阶段分割单词并将它们映射为键值对形式;接着Reducer负责汇总相同关键词的数量得到最终的结果集合[^4]。 #### 查看计算成果 一旦Job完成,可以访问输出目录获取由Reduces产生的part-r-*文件,里面记录着每一对<单词,次数>的信息条目。注意每次重新运行前最好先清理旧有的output文件夹以免造成混淆。 ```bash hadoop fs -rm -r /user/root/wordcount/output hadoop jar wc.jar WordCount /user/root/wordcount/input /user/root/wordcount/output hadoop fs -cat /user/root/wordcount/output/part-r-* ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值