程序功能
重写mapper和reducer方法,实现城市薪资排序并取前n名,如读取hdfs里/123/city.txt路径下的文件得到 城市名,平均薪资,在hdfs新文件/123/456里输出“经过排序”的 城市名与平均薪资
举例如下:
运行前hdfs的一个文件里放置了城市名称与薪资
[root@hadoop ttt]# hdfs dfs -cat /123/city.txt
2022-11-10 10:49:30,423 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
全国 97379
北京 178178
天津 114682
河北 77323
山西 74739
内蒙古 85310
辽宁 79472
吉林 77995
黑龙江 74554
上海 171884
江苏 103621
浙江 108645
安徽 85854
福建 88149
江西 78182
山东 87749
河南 70239
湖北 85052
湖南 79122
广东 108045
广西 82751
海南 86609
重庆 93816
四川 88559
贵州 89228
云南 93133
西藏 121005
陕西 83520
甘肃 79730
青海 101401
宁夏 97438
新疆 86343
运行后,在另一个hdfs的文件里的内容显示了平均薪资前十的城市名称与对应平均薪资
[root@hadoop ttt]# hdfs dfs -cat /123/123/part-r-00000
2022-11-10 10:50:47,946 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
北京 178178
上海 171884
西藏 121005
天津 114682
浙江 108645
广东 108045
江苏 103621
青海 101401
宁夏 97438
全国 97379
具体实现
-
因为要操作hdfs,需要先打开虚拟机,为方便查看结果,需要打开相关的node(前提是做好启动node的相关配置)以及关闭防火墙
[root@hadoop ttt]# start-dfs.sh Starting namenodes on [hadoop] Last login: Thu Nov 10 10:53:07 GMT 2022 on pts/0 Starting datanodes Last login: Thu Nov 10 10:53:18 GMT 2022 on pts/0 Starting secondary namenodes [hadoop] Last login: Thu Nov 10 10:53:21 GMT 2022 on pts/0 [root@hadoop ttt]# start-yarn.sh Starting resourcemanager Last login: Thu Nov 10 10:53:28 GMT 2022 on pts/0 Starting nodemanagers Last login: Thu Nov 10 10:53:40 GMT 2022 on pts/0 [root@hadoop ttt]# jps 7569 Jps 7236 NodeManager 7097 ResourceManager 6491 NameNode 6844 SecondaryNameNode 6622 DataNode [root@hadoop ttt]# systemctl stop firewalld
//关闭防火墙 systemctl stop firewalld //查看防火墙是否关闭 firewall-cmd --state
运行开启之后输入http://ip:9870(ip在VmVare虚拟机>编辑>虚拟网络编辑器>NAT设置>子网IP查看,最后一位是自己之前在配置文件里设置的)
-
创建maven项目(方便导入jar包)
-
配置pom.xml文件
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>MapReduce2022_11_08</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>3.2.1