Hadoop学习之路(一、入门demo)

参考https://www.jianshu.com/p/35ef70dfb651?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

一、用idea建一个普通maven项目

二、添加pom依赖

<dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>2.8.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs</artifactId>
            <version>2.8.3</version>
        </dependency>
        <dependency>
            <groupId>commons-cli</groupId>
            <artifactId>commons-cli</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-mapreduce-client-core</artifactId>
            <version>2.8.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-mapreduce-client-jobclient</artifactId>
            <version>2.8.3</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-mapreduce-examples</artifactId>
            <version>2.8.3</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.6</version>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.8</version>
        </dependency>
    </dependencies>

三、新建一个WordCount类

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);
    }
}

四、新建input文件夹

在文件夹里面建一个txt文件,并随便输入内容

五、配置运行参数

在Intellij菜单栏中选择Run->Edit Configurations,在弹出来的对话框中点击+,新建一个Application配置。配置Main class为WordCount(可以点击右边的...选择),Program arguments为input/ output/,即输入路径为刚才创建的input文件夹,输出为output。

六、运行

运行后input下会出现一个output文件夹,里面存放结果

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hadoop是一个开源的大数据处理框架,致力于解决大规模数据存储和处理问题。它采用了分布式计算的思想,能够在集群中高效地存储和处理大量的数据。 Hadoop的核心模块包括Hadoop Common、Hadoop Distributed File System(HDFS)和Hadoop MapReduce。Hadoop Common提供了Hadoop的基本功能和工具,比如文件系统和网络通信等;HDFS是Hadoop的分布式文件系统,能够将大量数据分布式地存储在集群中的多个节点上;MapReduce是Hadoop的计算框架,通过将计算任务分解成多个小任务,并在集群中并行执行,加快了数据处理的速度。 Hadoop的使用有一定的技术门槛。首先,需要配置一个Hadoop集群,包括多台服务器,每台服务器都安装Hadoop软件;然后,需要了解Hadoop的基本概念和组件,比如NameNode、DataNode和JobTracker等;最后,需要掌握Hadoop的编程接口,比如Hadoop Streaming和Hadoop API等,以便进行数据处理和分析。 Hadoop具有许多优点。首先,它具备高容错性,即使集群中的某些节点出现故障,仍然能够保证数据的安全性和完整性;其次,Hadoop具有高可用性,能够自动将计算任务重新分配到其他健康的节点上,从而保证系统的连续运行;此外,Hadoop的可扩展性也非常好,可以根据数据规模的增长动态地扩展集群的规模。 总之,Hadoop是当前大数据处理的重要技术之一,通过分布式计算的思想和优秀的数据处理能力,能够帮助企业更有效地处理和分析大量的数据,并从中获取有价值的信息和洞察。对于初学者而言,掌握Hadoop的基本概念和使用方法,对于后续学习和应用大数据技术是非常有帮助的。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值