大数据hadoop生态体系之MapReduce词频统计案例(12)

MapReduce实现词频统计案例:

1> 定义WordMapper类继承Mapper类,重新map方法,用于读取每行数据

Mapper父类参数说明:

args1 LoginWritable: 表示每次读取文件块的一行所指的长度偏移量

args2 Text : 每次读取文件块的一行文本内容

args3 Text : 上下文存储的key的数据类型

args4 IntWritable: 每次统计的单词的数量的类型

2> 定义WordReducer类继承Reducer类,用于对每一个shuffle之后的单词的出现次数的计算:

参数说明:

args1 Text : map的输出参数key,作为reducer输入参数类型

args2 Intwriable : map的输出参数value的值,作为reducer的输入参数value的类型

args3 Text:统计reducer计算处理之后输出结果的key值得数据类型

args4 Text: 通过reducer计算处理之后输入侧结果的value值的数据类型

3> 通过一个用于驱动的带有主函数的类实现mapreducer作业任务的提交处理操作:

该驱动类实现用于本地hadoop的mapreduce程序实现打的单词词频统计。

通过本地mapreduce程序实现词频统计可能会出现异常,这时候需要我们去github等网站下载 hadoop.dll程序,并且把hadoop.dll程序放到本地windows系统的c:/widonw/system32目录下。

提交到hdfs服务器进行词频统计:

这里需要设置fs.defaultFS的参数:hdfs://hadoop00:8020 , 其中hadoop00 代表的是centos服务器的主机名,也可以也可以直接使用IP地址:hdfs://192.168.38.100:8080

如果要直接使用centos服务器主机名的话,需要在本地的windows系统的hosts中进行映射配置:

路径:C:\Windows\System32\drivers\etc\hosts 

配置完成之后,通过运行主函数可以直接实现对hdfs服务器上的word.txt文件的统计

执行时需要配置路径参数:/input/word.txt   /output

4> 以jar包的形式上传到centos服务器上面运行:

   1. 使用maven打包工具:

    在pom.xml文件中添加打包编译配置,配置使用jdk的指定版本进行编译:

    

        

            org.apache.maven.plugins

            maven-compiler-plugin

            3.3

            

                    1.8

                    1.8

            

        

    

 

2.配置好maven的环境变量:

path: D:\maven.3.3.0\bin

3.打开cmd命令窗口,进入到java项目的跟目录执行编译创建jar包的命令:

mvn clean package -Dmaven.test.skip=true

在java项目的target目录下会生成一个com.hadooptest-0.0.1-SNAPSHOT.jar的jar包,jar包的名称跟项目名相同。

4.上传jar包到centos服务器的制定的目录:/opt/mysoft/task

5.编写执行脚本: vim /opt/mysoft/task/shell/ wordcount_20200402.sh

hadoop jar /opt/mysoft/com.hadooptest-0.0.1-SNAPSHOT.jar com/mr/wordcount/WordCountDriver hdfs://hadoop00:8020/input hdfs://hadoop00:8020/output

脚本说明: 

hadoop jar : 执行jar包的命令

 /opt/mysoft/com.hadooptest-0.0.1-SNAPSHOT.jar :jar包的绝对路径

com/mr/wordcount/WordCountDriver : jar包执行的主函数的类名

hdfs://hadoop00:8020/input  : 输入参数1

hdfs://hadoop00:8020/output :输出参数2

6.通过脚本执行

./opt/mysoft/task/shell/wordcount.sh

7.执行完成查看结果

hdfs dfs -ls /output

你可能感兴趣的:(大数据hadoop生态体系之MapReduce词频统计案例(12))