首页 > 其他分享 >Hadoop第一天学习记录

Hadoop第一天学习记录

时间:2023-11-24 12:00:42浏览次数:36  
标签:第一天 记录 hadoop Hadoop job org apache import

今天,我开始接触并学习Hadoop,一个分布式存储和计算框架,广泛应用于大数据处理和分析领域。为了方便记录和回顾,我将在这里详细记录下我第一天的学习内容和心得。

首先,我了解了Hadoop的背景和基本概念。Hadoop起源于Apache Nutch项目,旨在构建一个分布式搜索引擎。然而,随着项目的演进,Hadoop逐渐发展成为一个能够处理大规模数据的分布式计算框架。它使用了一种称为MapReduce的编程模型,可以将任务分解成许多小任务,并在集群中并行执行。

接着,我学习了Hadoop的核心组件和架构。Hadoop主要由HDFS(分布式文件系统)和MapReduce引擎组成。HDFS为数据提供了一个分布式、可扩展的存储系统,可以存储和处理大规模的数据。MapReduce则提供了一种编程模型,允许用户编写Map和Reduce函数来处理数据。

在理解了Hadoop的基本概念和架构后,我开始了实战演练。首先,我配置了一个本地的Hadoop环境,并上传了一个样本数据集到HDFS。然后,我编写了一个简单的MapReduce程序来对数据进行处理。

下面是一个简单的MapReduce程序的示例代码:

java复制代码
 import java.io.IOException;  
 
 import org.apache.hadoop.io.IntWritable;  
 
 import org.apache.hadoop.io.LongWritable;  
 
 import org.apache.hadoop.io.Text;  
 
 import org.apache.hadoop.mapreduce.Mapper;  
 
 import org.apache.hadoop.mapreduce.Reducer;  
 
 import org.apache.hadoop.mapreduce.Job;  
 
 import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;  
 
 import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;  
 
 import org.apache.hadoop.fs.Path;  
 
   
 
 public class WordCount {  
 
     public static class Map extends Mapper<LongWritable, Text, Text, IntWritable> {  
 
         private final static IntWritable one = new IntWritable(1);  
 
         private Text word = new Text();  
 
         public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {  
 
             String[] words = value.toString().split("\\s+");  
 
             for (String str : words) {  
 
                 word.set(str);  
 
                 context.write(word, one);  
 
             }  
 
         }  
 
     }  
 
     public static class Reduce extends Reducer<Text, IntWritable, Text, IntWritable> {  
 
         public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {  
 
             int sum = 0;  
 
             for (IntWritable val : values) {  
 
                 sum += val.get();  
 
             }  
 
             context.write(key, new IntWritable(sum));  
 
         }  
 
     }  
 
     public static void main(String[] args) throws Exception {  
 
         Job job = Job.getInstance(new Configuration(), "word count");  
 
         job.setJarByClass(WordCount.class);  
 
         job.setMapperClass(Map.class);  
 
         job.setCombinerClass(Reduce.class);  
 
         job.setReducerClass(Reduce.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);  
 
     }  
 
 }

这个程序实现了单词计数功能。在Map阶段,程序将输入文本拆分成单词,并为每个单词生成一个键值对(单词,1)。在Reduce阶段,程序将相同单词的计数相加,得到每个单词的总数。

标签:第一天,记录,hadoop,Hadoop,job,org,apache,import
From: https://blog.51cto.com/u_12830878/8547720

相关文章

  • JVM学习记录五(JVM调优)
    参数设置1.在tomcat中的设置,修改tomcat下/bin/catalina.sh中设置2.在jar启动时命令设置nohupjava-Xms512m-Xmx1024m-jar-demo.jar&参数调优设置堆空间大小:一般默认大小设置为物理内存的1/64,最大大小设置为  1/4,具体情况还是要根据当前主机的的实际使用情况,是不是还有其......
  • C# 中增加一个使用StopWatch记录方法执行时间的通用方法
    目录一背景二源码2.1注意事项三使用方法一背景在很多时候我们在进行代码排查的时候需要在日志中记录代码的执行时间从而方便我们进行代码运行效率的执行,我们在日志中准确记录方法的执行时间,这样方便我们进行代码的排查,下面分享一个我们常用的记录方式,方便使用,而且最重要的......
  • Python使用sys.excepthook统一处理异常,并将异常信息记录到日志中
    importsysimporttimeimporttracebackfromdatetimeimportdatetimefromseleniumimportwebdriverfromselenium.webdriver.common.byimportByfromselenium.webdriver.supportimportexpected_conditionsasECfromselenium.webdriver.support.uiimportWeb......
  • 记录今天最后一个bug
    重大发现:使用axios时,当路径下面出现下划线时,一般路径就没问题如果没出现下划线,记得去看看路径出错了没背景:前端vue中使用axios时路径写错,少加了“//”,导致找bug找了半小时,nnd 错误案例 正确例子重大发现:使用axios时,当路径下面出现下划线时,一般路径就没问题如果没出现......
  • 【RPA学习天地】RPA爬取网页数据典型案例解析——芯片价格查询记录自动化
    关于RPA学习天地www.rpa-learning.comRPA学习天地致力于各大主流RPA厂商的产品使用培训,自2021年起,我们推出了各类RPA开发者培训课程,两年的时间已经为超过千位的RPA学员的成长保驾护航,学员成员涵盖金融、制造业、电商与零售业、物流业以及高科技行业等领域。RPA学习天地始终紧跟行业......
  • 【问题记录】【IDEA工具】升级了个版本- -启动报错 com.intellij.ide.util.Properties
    1 启动报错Causedby:java.lang.ClassNotFoundException:com.intellij.ide.util.PropertiesComponentImplPluginClassLoader(plugin=PluginDescriptor(name=BetterIntelliJ,id=org.example.BetterIntelliJ,descriptorPath=plugin.xml,path=~/Library/ApplicationSuppor......
  • 记录--为什么没有人能讲清楚 BFC?
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助一、你看得懂权威的解释吗?1.CSS规范中对BFC的描述CSS规范(英文)|中文翻译浮动,绝对定位的元素,非块盒的块容器(例如inline-blocks,table-cells和table-captions),以及’overflow’不为’visible’的块盒(当该......
  • mixpanel 无法正确记录 可以试试是不是代理问题
      加入用户规则过滤不走代理的url 修改pac文件的方式设置不走代理的地址 ......
  • 搭建 MongoDB (v6.0) 副本集记录
    副本集概述副本集(ReplicaSet)是一组带有故障转移的MongoDB实例组成的集群,由一个主(Primary)服务器和多个从(Secondary)服务器构成。通过Replication,将数据的更新由Primary推送到其他实例上,在一定的延迟之后,每个MongoDB实例维护相同的数据集副本。通过维护冗余的数据库副本,能够实......
  • 电脑网站支付报错“验签出错,建议检查签名字符串或私钥与应用公钥是否匹配”问题解决记
    在对接支付宝电脑网站支付的时候,遇到如下报错:“错误代码invalid-signature错误原因:验签出错,建议检查签名字符串或签名私钥与应用公钥是否匹配”。但展示的报错内容跟实际原因有所出入(在下文中有解答),这里记录下问题的解决排查过程。问题复现在对接电脑网站支付时,生成form表单......