马士兵hadoop2.7.3_mapreduce笔记

  • java开发map_reduce程序
  • 配置系统环境变量HADOOP_HOME,指向hadoop安装目录(如果你不想招惹不必要的麻烦,不要在目录中包含空格或者中文字符)

    把HADOOP_HOME/bin加到PATH环境变量(非必要,只是为了方便)

  • 如果是在windows下开发,需要添加windows的库文件
    1. 把盘中共享的bin目录覆盖HADOOP_HOME/bin
    2. 如果还是不行,把其中的hadoop.dll复制到c:\windows\system32目录下,可能需要重启机器
  • 建立新项目,引入hadoop需要的jar文件
  • 代码WordMapper:

      • 1

        2

        3

        4

        5

        6

        7

        8

        9

        10

        11

        12

        13

        14

        15

        16

        17

        18

        19

        20

        21

        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;

        public class WordMapper extends Mapper<LongWritable,Text, Text, IntWritable> {

            @Override

            protected void map(LongWritable key, Text value, Mapper<LongWritable, Text, Text, IntWritable>.Context context)

                    throws IOException, InterruptedException {

                String line = value.toString();

                String[] words = line.split(" ");

                for(String word : words) {

                    context.write(new Text(word), new IntWritable(1));

                }

            }

            

        }

      • 代码WordReducer:

        1

        2

        3

        4

        5

        6

        7

        8

        9

        10

        11

        12

        13

        14

        15

        16

        17

        18

        19

        20

        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.Reducer;

        public class WordReducer extends Reducer<Text, IntWritable, Text, LongWritable> {

            @Override

            protected void reduce(Text key, Iterable<IntWritable> values,

                    Reducer<Text, IntWritable, Text, LongWritable>.Context context) throws IOException, InterruptedException {

                long count = 0;

                for(IntWritable v : values) {

                    count += v.get();

                }

                context.write(key, new LongWritable(count));

            }

            

        }

      • 代码Test:

        1

        2

        3

        4

        5

        6

        7

        8

        9

        10

        11

        12

        13

        14

        15

        16

        17

        18

        19

        20

        21

        22

        23

        24

        25

        26

        27

        28

        29

        30

        import org.apache.hadoop.conf.Configuration;

        import org.apache.hadoop.fs.Path;

        import org.apache.hadoop.io.IntWritable;

        import org.apache.hadoop.io.LongWritable;

        import org.apache.hadoop.io.Text;

        import org.apache.hadoop.mapreduce.Job;

        import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;

        import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

        public class Test {

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

                Configuration conf = new Configuration();

                                

                Job job = Job.getInstance(conf);

                

                job.setMapperClass(WordMapper.class);

                job.setReducerClass(WordReducer.class);

                job.setMapOutputKeyClass(Text.class);

                job.setMapOutputValueClass(IntWritable.class);

                job.setOutputKeyClass(Text.class);

                job.setOutputValueClass(LongWritable.class);

                

                FileInputFormat.setInputPaths(job, "c:/bigdata/hadoop/test/test.txt");

                FileOutputFormat.setOutputPath(job, new Path("c:/bigdata/hadoop/test/out/"));

                

                job.waitForCompletion(true);

            }

        }

      • 把hdfs中的文件拉到本地来运行

        1

        2

        3

        FileInputFormat.setInputPaths(job, "hdfs://master:9000/wcinput/");

        FileOutputFormat.setOutputPath(job, new Path("hdfs://master:9000/wcoutput2/"));

        注意这里是把hdfs文件拉到本地来运行,如果观察输出的话会观察到jobID带有local字样

        同时这样的运行方式是不需要yarn的(自己停掉yarn服务做实验)

      • 在远程服务器执行

        1

        2

        3

        4

        5

        6

        7

        conf.set("fs.defaultFS", "hdfs://master:9000/");

        conf.set("mapreduce.job.jar", "target/wc.jar");

        conf.set("mapreduce.framework.name", "yarn");

        conf.set("yarn.resourcemanager.hostname", "master");

        conf.set("mapreduce.app-submission.cross-platform", "true");


        1

        2

        3

        FileInputFormat.setInputPaths(job, "/wcinput/");

        FileOutputFormat.setOutputPath(job, new Path("/wcoutput3/"));

        如果遇到权限问题,配置执行时的虚拟机参数-DHADOOP_USER_NAME=root

      • 也可以将hadoop的四个配置文件拿下来放到src根目录下,就不需要进行手工配置了,默认到classpath目录寻找
      • 或者将配置文件放到别的地方,使用conf.addResource(.class.getClassLoader.getResourceAsStream)方式添加,不推荐使用绝对路径的方式
      • 建立maven-hadoop项目:

        1

        2

        3

        4

        5

        6

        7

        8

        9

        10

        11

        12

        13

        14

        15

        16

        17

        18

        19

        20

        21

        22

        23

        24

        25

        26

        27

        28

        29

        30

        31

        32

        33

        34

        35

        36

        37

        38

        39

        <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>mashibing.com</groupid>

          <artifactid>maven</artifactid>

          <version>0.0.1-SNAPSHOT</version>

          <name>wc</name>

          <description>hello mp</description>

          

          

          <properties>

                <project.build.sourceencoding>UTF-8</project.build.sourceencoding>

                <hadoop.version>2.7.3</hadoop.version>

            </properties>

            <dependencies>

                <dependency>

                    <groupId>junit</groupId>

                    <artifactId>junit</artifactId>

                    <version>4.12</version>

                </dependency>

                <dependency>

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

                    <artifactId>hadoop-client</artifactId>

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

                </dependency>

                <dependency>

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

                    <artifactId>hadoop-common</artifactId>

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

                </dependency>

                <dependency>

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

                    <artifactId>hadoop-hdfs</artifactId>

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

                </dependency>

            </dependencies>

          

          

        </project>

      • 配置log4j.properties,放到src/main/resources目录下

        1

        2

        3

        4

        5

        6

        log4j.rootCategory=INFO, stdout

        log4j.appender.stdout=org.apache.log4j.ConsoleAppender  

        log4j.appender.stdout.layout=org.apache.log4j.PatternLayout  

        log4j.appender.stdout.layout.ConversionPattern=[QC] %p [%t] %C.%M(%L) | %m%n

时间: 2025-01-13 20:36:43

马士兵hadoop2.7.3_mapreduce笔记的相关文章

马士兵hibernate(原始笔记)

马士兵hibernate(原始笔记) 课程内容 1        HelloWorld a)   Xml b)   annotation 2        Hibernate原理模拟 - 什么是O/R Mapping以及为什么要有O/R Mapping 3        常见的0/R框架(了解) 4        hibernate基础配置(重点) 5        ID生成策略(重点 AUTO) 6        Hibernate核心开发接口介绍(重点) 7        对象的三种状态(了

马士兵hadoop2.7.3_使用java访问hdfs

通过java程序访问hdfs: hdfs系统会把用到的数据存储在core-site.xml中由hadoop.tmp.dir指定,而这个值默认位于/tmp/hadoop-${user.name}下面, 由于/tmp目录在系统重启时候会被删除,所以应该修改目录位置. 修改core-site.xml(在所有站点上都修改) 1 2 3 4 5 <property>     <name>hadoop.tmp.dir</name>     <value>/var/had

尚学堂马士兵Oracle教程笔记

检查Oracle安装 首先,以超级管理员的身份登录oracle sqlplus sys/bjsxt as sysdba 然后,解除对scott用户的锁 alter user scott account unlock; 那么这个用户名就能使用了. (默认全局数据库名orcl) 1.select ename, sal * 12 from emp; //计算年薪 2.select 2*3 from dual;  //计算一个比较纯的数据用dual表 3.select sysdate from dual

[转载]马士兵Java视频教程 —— 学习顺序

书(Java核心编程)+视频..这样学感觉比较好.. 原文地址:-- 学习顺序" href="http://blog.sina.com.cn/s/blog_8a705bf701015lz5.html" target="_blank">马士兵Java视频教程 -- 学习顺序作者:习惯 第一部分:J2se学习视频内容包括: 尚学堂科技_马士兵_JAVA视频教程_JDK5.0_下载-安装-配置 尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第01

马士兵感言 (转)

展望未来,总结过去10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告走过的路,回忆起来是那么曲折,把自己的一些心得体会分享给程序员兄弟姐妹们,虽然时代在变化,但是很可能你也会走我已经做过的10年的路程,有些心得体会你可以借鉴一下,觉得说得有道理的你就接纳,觉得说得没道理的,你就抛弃,以下是我发自内心的,给大家的忠告,特别是针对那些小弟弟妹妹们. 01. 自己的户口档案.养老保险.医疗保险.住房公积金一定要保管好.由于程序员行业每年跳槽一次,我不隐瞒大家,我至少换过5个以上的单位,这期间跳

关于马士兵的java教学视频

多年前同时期的视频看过很多,马士兵,张孝祥,王勇,还有很多. 马士兵是唯一一个在当时看来讲课是让初学者明白的一个人,这里说的其它人不是不让别人明白,主要在这方面的体验比马士兵略差一点.尤其是在ppt上画程序执行时内存变化图,至今依然难以忘怀,时常有重温经典的冲动,所谓经典就是经过岁月的洗礼,他的那份醇香或价值依然吸引着你不断的回温.马士兵讲课的特点是嗓音清爽,抑扬顿挫,段子精美,技巧过硬,下手快,准,狠,思路直,快,精.虽然也有很多的人批评说,讲的有多处的错误,其它等等.关于错误我的看法:授课只

马士兵SVN.

下载 服务端:VisualSVN Server 和客户端:TortoiseSVN cmd,并cd 到 VisualSVN Server安装目录下的bin目录. 新建库: 1 svnadmin create H:\svn_pro 修改conf目录下的passwd,添加 : user=password,如 1 ### This file is an example password file for svnserve. 2 ### Its format is similar to that of s

局域网聊天Chat(马士兵视频改进版)

Github地址: https://github.com/BenDanChen/Chat Chat 小小的聊天系统,主要是跟着网上的马士兵老师的公开视频然后再自己反思有什么地方需要改进的地方,然后大体功能完成后又按照自己的想法进行了重构,程序比较小,只有五百行左右,实现的功能如下: 局域网聊天(需要有一个服务器,是传统的BS架构的) 进行了检测避免2B恶意刷屏(记录上次发消息时间,设定最小发送消息的间隔) 支持悄悄话,即单独的发送消息给某一个用户,使用[:to who message]的命令格式

马士兵老师设计模式课程简介

设计模式学习顺序 目录如下: 第一讲:JavaSE_Path_ClassPath(缺) 第二讲:OO 思维 第三讲:抽丝剥茧策略模式,CC接口详细解析 第四讲:Iterator-遍历容器的精灵 第五讲:工厂系列-对象生产过程自定义 第六讲:动态代理-解析Spring的AOP 更新 第七讲:ChainOfResponsibility-解析Filter和Interceptor02 第二段由于粗心,设置错误,没有开麦克风,故没有声音,很是抱歉 具体学习顺序: 设计模式系列 尚学堂科技_马士兵_设计模式