创建MapReduce程序,并在hadoop集群中运行

 
 

关键词: MapReduce, hadoop 2.6.0, intellij IDEA, Maven


1、在intellij IDEA下创建maven项目


2、引入hadoop相关jar包

       

    <properties>

        <hadoop.version>2.6.0</hadoop.version>

    </properties>


    <dependencies>

        <dependency>

            <groupId>org.apache.hadoop</groupId>

            <artifactId>hadoop-common</artifactId>

            <version>${hadoop.version}</version>

        </dependency>

        <dependency>

            <groupId>org.apache.hadoop</groupId>

            <artifactId>hadoop-mapreduce-client-core</artifactId>

            <version>${hadoop.version}</version>

        </dependency>

        <dependency>

            <groupId>org.apache.hadoop</groupId>

            <artifactId>hadoop-mapreduce-client-common</artifactId>

            <version>${hadoop.version}</version>

        </dependency>

        <dependency>

            <groupId>org.apache.hadoop</groupId>

            <artifactId>hadoop-mapreduce-client-jobclient</artifactId>

            <version>${hadoop.version}</version>

        </dependency>

    </dependencies>

3、创建MapReduce程序(程序的思想copy来的)

package cn.edu.kmust.cti;


import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.Path;

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;


import java.io.IOException;


/**

 * @author wei.feng@corp.elong.com

 * @since 15-3-27

 */

public class Dedup {


    public static class Map extends Mapper {


        private static Text line = new Text();

        @Override

        protected void map(Object key, Text value, Context context)

                throws IOException, InterruptedException {

            //super.map(key, value, context);

            line = value;

            context.write(line, new Text(""));

        }

    }


    public static class Reduce extends Reducer {

        @Override

        protected void reduce(Text key, Iterable values, Context context)

                throws IOException, InterruptedException {

            context.write(key, new Text(""));

        }

    }


    public static void main(String[] args) throws Exception {

        Configuration conf = new Configuration();

        conf.set("mapred.job.tracker", "10.211.55.6:9001");

        Job job = Job.getInstance(conf, "Data Deduplication");

        job.setJarByClass(Dedup.class);

        job.setMapperClass(Map.class);

        job.setCombinerClass(Reduce.class);

        job.setReducerClass(Reduce.class);


        job.setOutputKeyClass(Text.class);

        job.setOutputValueClass(Text.class);


        FileInputFormat.addInputPath(job,

                new Path("hdfs://hadoop1:9000/dedup_in"));

        FileOutputFormat.setOutputPath(job,

                new Path("hdfs://hadoop1:9000/dedup_out"));


        System.exit(job.waitForCompletion(true) ? 0 : 1);

    }

}

说明:

10.211.55.6    hadoop集群namenode的ip地址

dedup_in    hadoop文件夹名称,MapReduce的输入路径

dedup_out    hadoop文件夹名称,MapReduce的输出路径


4、打jar包

参考:http://bglmmz.iteye.com/blog/2058785


a、不能通过mvn package打包,原因:打入不了所依赖的第三方jar包等

intellij IDEA -> File -> Project Structure


-> OK

b、intellij IDEA -> Build -> Build Artifacts

-> Build / Rebuild


5、将程序传输到hadoop集群的namenode上

scp ./out/artifacts/HadoopDemo_jar/* root@10.211.55.6:/home/user/hadoop/dedup/

查看linux服务器


说明:

file1和file2为程序用到的数据文件,一会儿将上传到hadoop集群中


6、准备程序使用的数据


在hadoop集群的namenode节点,创建文件夹、上传文件

hadoop fs -mkdir /dedup_in

hadoop fs -mkdir /dedup_out

hadoop fs -put /home/user/hadoop/file1 /dedup_in/

hadoop fs -put /home/user/hadoop/file2 /dedup_in/

查看



7、运行程序

hadoop jar ./dedup/HadoopDemo.jar /dedup_in /dedup_out

执行过程





8、查看计算结果



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抱歉,我是一个AI助手,并不能直接登录到您的主节点上执行命令。但是我可以为您提供一般的步骤来编写、编译和部署MapReduce程序Hadoop集群,并验证数据预处理的结果。 以下是大致的步骤: 1. 在IDEA开发工具创建一个新的Java项目,并设置Hadoop相关的依赖。 2. 编写MapReduce程序来处理名人名言数据的标签。这个程序通常包括Mapper和Reducer类,用于从输入数据提取标签,并进行相关的处理逻辑。 3. 在IDEA进行代码调试和测试,确保程序能够正确地处理数据。 4. 使用IDEA的打包工具将MapReduce程序打包成JAR文件。确保JAR文件包含所有的依赖库。 5. 将生成的JAR文件上传到Hadoop集群的任意一个节点上,例如将其复制到HDFS或直接上传到某个节点的本地文件系统。 6. 在Hadoop集群上使用`hadoop jar`命令来执行MapReduce程序。指定输入路径和输出路径,并通过命令行参数传递其他必要的参数。 7. 等待MapReduce程序完成执行。可以使用命令行工具或Hadoop集群的Web界面来监视任务的进度和日志。 8. 验证数据预处理的结果。检查输出路径生成的结果文件,确保数据经过MapReduce程序的处理得到正确的结果。 请注意,具体的步骤可能因为您的环境和需求而有所不同。您可能需要根据您的实际情况进行适当的调整和配置。 另外,确保在执行任何操作之前,您已经正确安装和配置了Hadoop集群,并且具有适当的权限来访问HDFS和执行MapReduce任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值