Hadoop 伪分布式并做计数测试

本文档介绍了如何配置YARN(mapred-site.xml和yarn-site.xml),启动YARN服务,并通过Hadoop自带的Wordcount示例运行MapReduce任务。首先,修改配置文件设置mapreduce.framework.name为yarn和shuffle服务。接着,启动YARN并验证通过jps和浏览器查看8088端口的ResourceManager。然后,将测试文件上传到HDFS并运行Wordcount示例。最后,检查输出结果,确认MapReduce任务成功执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

配置 YARN(mapred-site.xml)

修改 /opt/hadoop-2.9.2/etc/hadoop  目录下的 YARN 配置文件

#   cd /opt/hadoop-2.9.2/etc/hadoop
#   mv mapred-site.xml.template mapred-site.xml     //首先复制 YARN 配置文件
#   vim mapred-site.xml

在最后修改:

<configuration>

    <property>

        <name>mapreduce.framework.name</name>
        <value>yarn</value>

    </property>

</configuration>

 #   vim yarn-site.xml

 在最后修改:

<configuration>

    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

    <property>
        <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>

</configuration>

 运行 YARN ,验证是否成功

#   cd /opt/hadoop-2.7.1/sbin      //进入 hadoop sbin 文件夹
#   ./start-yarn.sh                            //开启 YARN
#   jps                                              //查看开启的进程

在浏览器中输入 http://localhost:8088 查看 YARN 管理的集群状态

 

运行 MapReduce 示例(Wordcount)

Wordcount  MapReduce 的入门示例程序,   Wordcount 程序的 jar 包已

经放置在 hadoop 安装目录下的/share/hadoop/mapreduce 文件夹中。

#   cd /opt/hadoop-2.9.2
#   ls –all

 

其中有三个 txt 文件 ,我们使用这几个文件中的某个文件作为 Wordcount 的测试文件

上传文件到 HDFS

#   hadoop fs -mkdir /input                    //在 HDFS 的根目录下新建 input  目录
#   hadoop fs -put NOTICE.txt /input     //将本地的 NOTICE.txt 文件上传到 HDFS 的 input目录下
#   hadoop fs -ls -R /                                 //查看文件是否成功上传到 HDFS 上面

 

运行 Wordcount 示例程序

使用 hadoop jar 命令, 后面先指定程序虽用 jar 包的路径,后面是要运行的程序的名称,

最后是输入文件和输出路径,这个命令要根据自己本机 Hadoop 的配置做相应的修改。

# hadoop jar /opt/hadoop-2.9.2/share/hadoop/mapreduce/hadoop-
mapreduce-examples-2.9.2.jar wordcount /input /output

# hadoop fs -ls -R /
# hadoop fs -cat /output/part-r-00000

 

Hadoop是一个分布式系统基础架构,用户可以在不了解分布式底层细节的情况下,开发分布式程序。下面是一个简单的Hadoop分布式计算实例——单词计数(WordCount)。 首先确保你已经安装配置好了Hadoop环境。 以下是一个使用Java编写的简单WordCount程序: ```java import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.Reducer; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; public class WordCount { public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable>{ private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(Object key, Text value, Context context) throws IOException, InterruptedException { StringTokenizer itr = new StringTokenizer(value.toString()); while (itr.hasMoreTokens()) { word.set(itr.nextToken()); context.write(word, one); } } } public static class IntSumReducer extends Reducer<Text,IntWritable,Text,IntWritable> { private IntWritable result = new IntWritable(); public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException { int sum = 0; for (IntWritable val : values) { sum += val.get(); } result.set(sum); context.write(key, result); } } public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); Job job = Job.getInstance(conf, "word count"); job.setJarByClass(WordCount.class); job.setMapperClass(TokenizerMapper.class); job.setCombinerClass(IntSumReducer.class); job.setReducerClass(IntSumReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); FileInputFormat.addInputPath(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); System.exit(job.waitForCompletion(true) ? 0 : 1); } } ``` 上述代码中`TokenizerMapper`类实现了将输入文本分割成单词,为每个单词输出一个键值对(单词,1)。`IntSumReducer`类实现了将相同单词的计数值进行累加。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

殊迟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值