文档章节

5.马士兵_云计算

BeGit
 BeGit
发布于 2017/05/17 12:25
字数 964
阅读 19
收藏 0

1.yarn-site.xml需要复制到各个slave中去。需要所有的机器上是同步的,要么即使能启,也链接不上的。

2.正常情况各个阶段都是可以自定义开发的,只不过split和shuffle有默认的实现,我们主要还是先开发map和reduce。

3.map的输入K是序列号,V就是拆分后的一行内容。为了我们传递运算序列化的便利性,hadoop自己实现了对应的包装类,如Long(LongWritable),Sting(Text)。

package com;

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, KEYOUT, VALUEOUT>{
    
}
4.补充一句,mapreduce不用非得放linux上才能执行,mapreduce,yarn,hadoop他们相互独立,谁离了谁都能相互执行。

5.map/reduce程序可以在单机上写,但是运算会分布式运算,因为遇上大文件,一个机器合并不了了。fork join就是拆分运算后合并结果的。

6.运行得到输出结果。.隐藏文件,crc校验文件。这个执行的时候,因为是本地,所以控制台会出现本地工作的INFO:

2017-05-01 22:59:59,387 INFO  [LocalJobRunner Map Task Executor #0] mapred.LocalJobRunner (LocalJobRunner.java:run(224)) - Starting task: attempt_local1711731912_0001_m_000000_0

输入:

java c
c c++
java c#
test hello
java js
javascript c
 

结果:shuffle是拍好序的统计结果。

c    3
c#    1
c++    1
hello    1
java    3
javascript    1
js    1
test    1
7.下面是一个map/reduce的测试程序:

package com;

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);
            
            //mapper
            job.setMapOutputKeyClass(Text.class);
            job.setMapOutputValueClass(IntWritable.class);
            
            //如果mapper 和reducer用的key 和 value类型相同,上面就可以不用写了
            job.setOutputKeyClass(Text.class);
            job.setOutputValueClass(LongWritable.class);
             
            //本地路径的好处是
//            FileInputFormat.setInputPaths(job, "F:/BaiduNetdiskDownload/bigdata_test/test.txt");
//            FileOutputFormat.setOutputPath(job, new Path("F:/BaiduNetdiskDownload/bigdata_test/out"));
            
            FileInputFormat.setInputPaths(job, "hdfs://192.168.56.100:9000/wcinput");//会计算所有目录的文件
            FileOutputFormat.setOutputPath(job, new Path("hdfs://192.168.56.100:9000/wcoutput1"));//当然也可以依然放在本地
             
            job.waitForCompletion(true);//输出控制台
    }

}
但是上面这种方式是吧数据拉到本地来运算,所以就不需要yarn来支持了,那怎么在集群中运行呢?

8.然后配置好下面一堆,理论就可以远程集群运行了。

  conf.set("fs.defaultFS", "hdfs://192.168.56.100:9000/");//配置好了前缀下面就不需要带路径前缀
          
//          conf.set("mapreduce.job.jar", "target/wc.jar");
          conf.set("mapreduce.framework.name", "yarn");
          conf.set("yarn.resourcemanager.hostname", "192.168.56.100");
          conf.set("mapreduce.app-submission.cross-platform", "true");//跨平台操作

9.但实际运行时,有权限异常的问题。那怎么处理呢?办法1:run java时配置参数默认访问的用户名为root骗过去。-DHADOOP_USER_NAME=root。办法2:设置hdfs的权限为777(不推荐)。

Exception in thread "main" org.apache.hadoop.security.AccessControlException: Permission denied: user=set_free, access=EXECUTE, inode="/tmp/hadoop-yarn/staging/set_free/.staging/job_1493733905343_0001":root:supergroup:drwx------

10.可以问题依然来了,我们顺利进入远程调用了,但出了下面的错。

Caused by: java.net.ConnectException: Call From DESKTOP-FHNQ7MS/192.168.56.1 to 0.0.0.0:10020 failed on connection exception: java.net.ConnectException: Connection refused: no further information; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused

;这个错误说的是我们是在远程集群中运算了,可以你指定的WordMapper.class,WordReducer.class我们集群中却没找到。因为只有我们windows知道。怎么弄呢?原来我们正常运行时是通过把java打包成jar文件,然后把jar文件传给ResourceManger,由RM分发给NM才可以。

11.简单的做法,conf.set("mapreduce.job.jar", "wc.jar");//相对路径,绝对路径都可,用这个配置来指定我们要计算的jar文件。然后我们就可以上传jar执行了。

12.总结:1.本地计算,可以调试。2.小规模数据拉到本地执行。3.大规模数据用jar发送给RM,RM给不同的NM上面,在集群中运行了。

13.如果有第三方的依赖jar包,那么把jar包也一并上传上去。

14.如何用maven建立项目呢?

 

© 著作权归作者所有

共有 人打赏支持
BeGit
粉丝 19
博文 92
码字总数 70143
作品 0
顺义
后端工程师
能把马士兵 html css javascript的视频发给我么?拜托了

@空云万里晴 你好,想跟你请教个问题: 能把马士兵 html css javascript的视频发给我么?拜托了

A.L.
2012/10/23
128
0
马士兵JAVA基础实录教程

本教程自从发布以来,已经被下载了2000多万次,创造了国内视频教程的记录。该教程是尚学堂老师上课时真实录制而成, 充分展现了讲师的风采,高超的技术、幽默的授课风格、深入浅出的分析。 ...

2846613430
2016/04/20
74
0
测测你的Java基础

Let's get started <<< 1)关键字volatile、transient各有什么作用? 2)下面两种使用synchronized关键字的方式有什么区别? // 第一种 synchronized(this) { ... } // 第二种 synchronized......

欧阳锋
2017/03/19
0
0
谁有马士兵视频 HTML CSS javascript 啊

谁有马士兵视频 HTML CSS javascript 啊 加我QQ1069624112 发我下啊 不胜感激啊

久违的味道
2012/02/24
3.7K
5
500 G JAVA视频网盘分享(Jeecg社区)

500 G JAVA视频网盘分享(Jeecg社区) [涵盖从java入门到深入架构,Linux、云计算、分布式、大数据Hadoop、ios、Android、互联网技术应有尽有] Jeecg社区秉承开源宗旨,分享社区Java架构学习视...

Jeecg
2015/11/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

配置Spring的注解支持

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 配置Spring的注解支持 以上也提到了使用注解来配...

凯哥学堂
29分钟前
0
0
关于Spring Aop存在的一点问题的思考

在本人前面的文章Spring Aop原理之切点表达式解析中讲解了Spring是如何解析切点表达式的,在分析源码的时候,出现了如下将要讲述的问题,我认为是不合理的,后来本人单纯使用aspectj进行试验...

爱宝贝丶
31分钟前
0
0
JavaScript 概述

JavaScript是面向Web的编程语言。绝大多数现代网站都使用了JavaScript,并且所有的现代Web浏览器——基于桌面系统、游戏机、平板电脑和智能手机的浏览器——均包含了JavaScript解释器。这使得...

Mr_ET
今天
0
0
Java Run-Time Data Areas(Java运行时数据区/内存分配)

Java运行时数据区(内存分配) 本文转载官网 更多相关内容可查看官网 中文翻译可参考 2.5. Run-Time Data Areas The Java Virtual Machine defines various run-time data areas that are use...

lichuangnk
今天
0
0
docker learn :services docker-compose.yml

docker-compose.yml定义了服务的运行参数 version: "3" services: web: # replace username/repo:tag with your name and image details image: hub.c.163.com/dog948453219/friendlyhello d......

writeademo
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部