hadoop(4)

1. HDFS分布式文件系统

2. HDFS集群的搭建

(1) Hdfs-site.xml

① Hdfs公开的访问地址

② Namenode的元数据目录

③ Datanode的元数据目录

④ SecondaryNamenode

(2) Hadoop-env.sh

① 添加你的javahome路径

3. HDFS的常用客户端命令

(1) Putgetmvdeletels.....

4. 常用的hdfs客户端API的操作

5. 模拟真实业务场景中的日志的处理流程

(1) Lgfj  +  客户端的操作上传日志数据

6. HDFS详细的上传和读取流程

7. NameNOdecheckpoint机制

8. MapReduce的框架思想

(1) Map阶段

(2) Reduce阶段

9. 手动实现了wordcount的模型

(1) 核心:实现key.hashcode() % 2

10. MapReduce框架的具体认识

(1) Mapper.map()

(2) Reducer.reduce()

11. 运行mr程序,需要一个分布式管理调度平台---yarn

MR程序的两种运行模式

分布式运行模式:必须在yarn平台上

核心特点:

整个运行流程由MRAppMaster控制;

每一个taskmaptaskreducetask)以及MRAppMaster,都是以独立的进程在nodemanager所提供的容器中执行;

本地运行模式:在本地以单进程多线程方式运行;

核心特点:整个运行流程由LocalJobRunner控制,每一个taskmaptaskreducetask)都以线程方式执行

决定mr程序是以分布式还是以本地模型运行的关键点:

jobclient端的参数:  mapreduce.framework.name= local ? yarn ?

参数可以在jobclient的代码中设置;

也可以在jobclient所运行的机器的hadoop配置文件(mapred-site.xml)中配置;

注意:如果以分布式模式运行mr,则你所访问的文件系统一定要是HDFS!!!(参数: fs.defaultFS = hdfs://....

如果以本地模式运行mr,则你所访问的文件系统可以是HDFS,也可以是本地文件系统;

 

本地模式运行可以在windows系统上(需要将windows本地库的bin目录配置到环境变量PATH中),也可以在linux系统上;

 

 

如果要在windows上运行jobclient,把mr job提交到YARN上分布式运行,则需要一下客户端参数:

Configuration conf = new Configuration(); // 加载classpath中的hadoop配置文件

// job api对象,在提交mrjob去运行时,有两种提交目的地选择:1.本地模拟器  2.yarn

conf.set("mapreduce.framework.name", "yarn");  //  mapred-site.xml

conf.set("fs.defaultFS", "hdfs://cts01:9000");  // core-site.xml

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

conf.set("mapreduce.app-submission.cross-platform", "true");  //跨平台提交;

 

 

 

mr参数补充:

以下参数应该在jobclient的代码中设置(也可以在mapred-site.xml中配置)

maptaskreducetask所申请的资源配额:

mapreduce.map.memory.mb

1024

一个maptask所需要的分配内存

mapreduce.map.cpu.vcores

1

一个maptask所需要的vcore

mapreduce.reduce.memory.mb

1024

一个reducetask所需要的内存

mapreduce.reduce.cpu.vcores

1

一个reducetask所需要的vcore

 

MRAppMaster所申请的资源配额:

yarn.app.mapreduce.am.resource.mb

1536

默认1.5G

yarn.app.mapreduce.am.resource.cpu-vcores

1

默认1核

如何实现MR框架中的Writable接口

接口中有两个核心方法:

write(DataOutput out)  :  序列化时将对象的属性数据变成二进制

readFields(DataInput in) : 反序列化时,将二进制变成数据属性并设置到对象中

 

 

 

MR编程框架中的高级API

如果要用自定义类型Bean作为map输出的KEY,则需要以下编程接口:

Bean 必须实现  WritableComparable 接口:   write()  readFields()   compareTo()

分区器:必须自定义一个分区器:

XPartitioner extends Partitioner<KEY,VALUE>,核心方法:getPartition(KEY k,VALUE v,int numReduceTasks)

 

分组比较器:必须自定义一个分组比较器

XGroupingComparator  extends WritableComparator

public XGroupingComparator(){

super(key.class,true);
}

       compare(WritableComparable a,WritableComparable b){

 

};

 

 

 

 

map方法中如何获取maptask所处理的任务切片信息

FileSplit fileSplit = (FileSpliut) context.getInputSplit();

 

 

 

猜你喜欢

转载自blog.csdn.net/a331685690/article/details/80552781