Hadoop-写文件顺序,mapreduce基础,运行常见错误

    1.加载配置文件
    2.获取文件系统
    3.创建写入路径(Path)
    4.创建输出流
    5.写入输出流
    6.关闭输出流

mapreduce:填空式编程
    MapReduce是一个分布式计算框架
    分而治之-数据在哪计算在哪
两个阶段
    map(映射)阶段
    
    reduce(规约或合并)阶段
    
MapReduce作业的输入和输出类型:

    (输入)<k1​​,v1> - > map - > <k2,v2> - > combine - > <k2,v2> - > reduce - > <k3,v3>(输出)
输入和输出的KV对必须由框架序列化
    将结构化对象转换为字节流-----方便在网络传输和写入磁盘
mr应用程序编写思路
    编写map方法
        根据需求不同代码不同
    编写reduce方法
        根据需求不同代码不同
    编写驱动程序:基本不变
        //加载配置文件
        Configuration conf = new Configuration();
        //创建mr任务
        Job job = Job.getInstance(conf, "word count");
        //设置主类
        job.setJarByClass(WordCount.class);
        //设置map
        job.setMapperClass(MyMapper.class);
        //设置reduce
        job.setReducerClass(MyReduce.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);
        
如果要提交到集群上运行jar:
    
    把程序导出    -》jar
    上传到linux系统
    hadoop jar wc.jar (如果没指定主类需要写出包名和类名) 输入路径 输出路径
    错误1:类型转换异常map的输入类型是LongWritable
    
    错误2:0.0.0.0:10020连接不上
        修改mapred-site.xml配置文件
            mapreduce.jobhistory.address修改成当前主节点主机名
        启动历史服务
            mr-jobhistory-daemon.sh start historyserver

window下运行本地mr
    不需要配置文件
    把输入和输出路径改成本地的
错误:null chmod 0700
    hadoop.dll考到c:/windows/system32/
    把hadoop.dll和winutile.exe放到hadoop的bin文件夹里
注意部分机器可能只能输入路径为文件,如果想要输入文件夹请使用通配符(*)
    d:/wc/{input/*}

window下eclipse运行集运mr
    把集群中的配置文件考到工程下的src
    修改配置文件把主机名改成对应的端口号(在window下设置hosts配置主机名和ip的映射)
    工程打包(jar)上传到工程名下(classpath),右键-》build path-》add。。。。
        把jar加载到工程
    
    错误1:运行没有显示日志信息
        在hadoop的安装目录下的share目录下搜索log4j.properties,把它放入工程的src下
    错误2:
        1、把用户名改成和集群中用户名一致
        2、在环境变量里面加上HADOOP_USER_NAME     值是集群中用户名(需要重启)
        3、右键-》run as -》run Configurations -》选中要运行的工程 -》 第二个选项卡Arguments -》 VM arguments下加上-DHADOOP_USER_NAME=你的集群上的用户名
        4、去掉权限验证
            hdfs-site.xml下加入下面配置
                <property>
                  <name>dfs.permissions.enabled</name>
                  <value>false</value>
                  <description>
                    If "true", enable permission checking in HDFS.
                    If "false", permission checking is turned off,
                    but all other behavior is unchanged.
                    Switching from one parameter value to the other does not change the mode,
                    owner or group of files or directories.
                  </description>
                </property>
        5、null\bin\winitil.exe
            设置环境变量 
                HADOOP_HOME  值你的hadoop的安装路径
                在path里面加上%HADOOP_HOME%\bin和%HADOOP_HOME%\sbin

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值