没什么好解释的,纯粹的干货分享。。。
Hadoop:
1.Hadoop的四大模块:
1.common:基础模块,用于支撑其他模块
2.mapruedce:分布式计算框架
3.YARN:分布式资源调度框架
4.HDFS:分布式文件系统
2.端口:
1.HDFS:8082 webUI端口:8088
2.YARN:8032 webUI端口:50070
3.zookeeper:2181
4.JobHistoryServer:19888
3.Hadoop2.x分布式搭建的详细过程:
一:linux相关:
1.ip,网关,DNS
2.hostname,本地域名解析映射(hosts)
3.关闭防火墙,selinux
4.ssh免密钥登陆
5.ntp时间同步
6.jdk配置
二:Hadoop相关:
1.上传,解压
2.修改配置
-》修改-evn.sh
hadoop、yarn、mapred
-》core-site.xml
hdfs入口,临时文件目录
-》hdfs-site.xml
副本数、访问权限、secondary节点
-》mapred-site.xml
运行的框架、JobHistoryServer节点
-》yarn-site.xml
resourceManager的地址、mapreduce运行方式、日志聚集
-》slaves
所有从节点地址
三:分发文件
四:格式化文件系统
五:启动:
先启动hdfs后启动yarn
4.Hadoop2.x中HDFS与YARN的四个进程的功能及启动方式
4个进程的功能:
NameNode的功能:
-》处理客户端发过来的请求
-》管理从节点
-》管理元数据
DataNode的功能:
负责数据运输、负责读写数据的功能
ResourceManager的功能:
负责集群资源的管理和任务调度、处理用户的请求、管理从节点
NodeManager的功能:
负责处理所有任务
4个进程的启动:
sbin/hadoop-daemon.sh start namenode
sbin/hadoop-daemon.sh start datenode
sbin/yarn-daemon.sh start resourcemanager
sbin/yarn-daemon.sh start nodemanager
5.jar包提交运行在yarn上的执行流程
1.用户提交jar包,向resourcemanager请求提交任务
2.resourcemanager接受任务,并随机选择一台nodemanager启动appmaster
3.appmaster向resourcemanager请求资源
4.resourcemanager分配资源,并将资源分配信息返回给appmaster
5.appmaster联系nodemanager启动相关Task
ps:Task:maptask的个数由数据块的个数决定;
ruducetask的个数可以自己设置
每个task都会调用各自的方法:map方法的调用次数由数据的行数决定;
reduce方法的调用次数由key的类型个数决定。
6.运行的task时刻向appmaster汇报进度
7.reduce task将执行结果返回给appmaster
8.appmaster将结果返回给resourcemanager,并注销自己
6.请描述MapReduce运行的五大过程,包含详细的shuffle过程
input
1.读取HDFS上文件数据
2.将数据转成keyvalue形式,key是行偏移量,value是行内容
map
接收input的输出
根据分片的个数,启动相应task
每个map task对每条keyvalue调用map方法进行处理
shuffle
->Map shuffle
将map输出的数据输入环形缓冲区内
在缓冲区进行分区,对每个分区进行排序
达到阈值80%开始溢写到磁盘,变成小文件
溢写结束,将所有小文件进行合并,并且对每个分区进行排序
map task结束,通知appMaster
->reduce shuffle
app master通知reduce,reduce去每个map task拉取属于自己分区的数据。
对属于自己分区的数据进行合并,并排序
对相同key进行分组
reduce
读取shuffle的输出,对每一种key,调用reduce方法进行处理
output
将reduce的输出写入到hdfs中
7.请写出自定义数据类型时,需要继承哪些类,以及实现的方法及其功能
ps:编写MapReduce模板
Driver:
-》不继承也不实现
-》继承和实现 -官方推荐
extends Configured implements Tool
-》不继承只实现 - 企业用的最多
implements Tool
实现Writable/WritableComparable接口
定义属性,并生产对应get、set方法。获取值和赋值
write:序列化
readFiled:反序列化
compareTo:比较
toString:转换为String类型对象
无参和有参构造方法:初始化构建
hashCode和equals:比较验证
8.元数据:(描述数据的数据)
元数据在哪里?????:
存储在内存中,也存储在磁盘(存放的文件:fsimage)
由谁来同步元数据:
secondaryNameNode功能:
辅助Namnode同步本地元数据
fsimage(old) + edits = fsimage(new)