Hadoop知识点归纳

版本
hadoop1:是由hdfs 和MapReduce
hadoop2:是由hdfs,MapReduce,yarn三部分构成

hadoop四大组件
hadoop common
功能:用于支持其他模块和其他工具的接口

HDFS
功能:
1.管理存储文件
2.文件数据的读写

架构:主从
主:NameNode
功能:
1.接受客户端的请求
2.负责管理所有的从节点
3.负责管理所有的元数据
从:DataNode
功能:负责实际的数据读写
secondary NameNode :辅助进程
功能:辅助NameNode备份元数据

HDFS上读写过程

写的过程

1.用户操作客户端提交写的请求
2.客户端将用户提供的文件进行分割,默认128M为一块
3.客户端将第一个块写的请求给NameNode
4.NameNodeameNode
4.NameNode接受客户端请求,NameNode 会返回该数据块存储的dataNode的地址
5.客户端会将离自己最近那台机器上的数据块交给那台DataNode,第一台存储DataNode 会将数据块进行复制给其他两台DataNode
6.DataNode 将存储结果返回给NameNode ,NameNode 记录元数据
7重复上诉操作,知道每个块都存储完成

读取流程

1 客户通过客户端发送读请求
2 客户端请求NameNode,NameNode返回每个块的存储地址
3 客户端从离自己最近的机器上读取每个块,将每个块进行合并成一个文件,返回给客户

启动HDFS命令

sbin/hadoop-daemon.sh start namenode
sbin/hadoop-daemon.sh start datanode

关闭命令

sbin/hadoop-daemon.sh stop namenode
sbin/hadoop-daemon.sh stop datanode

HDFS常用命令

创建文件夹
bin/hdfs dfs -mkdir -p /wordcount/input

上传文件:从Linux到hdfs
bin/hdfs dfs -put /opt/datas/wc.txt /wordcount/input/

下载文件:从hdfs到Linux
bin/hdfs dfs -get /wordcount/input/wc.txt ~/

删除文件
bin/hdfs dfs -rm -r /test

查看文件
bin/hdfs dfs -cat /wordcount/input/wc.txt

分布式资源管理和任务调度yarn

架构主从

主节点:resourcemanager
主要功能:
1.负责接收所有用户的请求
2.负责管理所有的从节点
3.负责资源管理和任务调度

从节点:NodeManager
功能:负责真正的任务执行

MapReduce在Yarn上面执行过程
1.客户通过客户端提交数据处理请求程序
2.客户端将请求提交给

MapReduce五大过程

1.input

首先从hdfs上面读取文件,并将每行数据转为KeyValue键值对的形式,并将所有的KeyValue输出

2.map 任务拆分阶段

将大的任务拆分成多个小的任务,由多个线程并行处理:Map task
Map task对input的输出中的每一个keyvalue进行处理
每一个keyvalue对会调用一次map方法
构建新的KeyValue输出

3.shuffer

排序:对每个keyvalue按照key进行排序
hadoop 1
hadoop 1
hadoop 1
java 1
java 1
hive 1
hive 1

分组:将key相同的value进行合并放入同一个迭代器中,每一个key只出现一次
<hadoop 3>
<java 2>
<hive 2>

4.reduce 任务合并阶段

reduce负责将多个小任务的结果进行合并
每一个shuffle过来的输入,每一种KeyValue调用一次reduce方法
reduce方法中生成新的KeyValue,然后输出

5.output 输出阶段

将reduce的出处写入hdfs变成文件

shuffle过程

hadoop ha各组件 hadoop各组件作用_mapreduce

map端的shuffle

map阶段处理后的数据进入端的shuffle
每个maptask的数据首先进入环形缓冲区:默认100M
然后更具key的hash值对reduce的个数取余,根据取余的结果标记每一条KeyValue最终会被哪个reduce进行处理
reduce的个数默认为1,可以自定义设置
job.setNumReduceTasks(2)

假如有2个reduce
hadoop 1 0 reduce1
hive 1 1 reduce2
hbase 1 0 reduce1
spark 1 1 reduce2
hadoop 1 0 reduce1
hbase 1 0 reduce1
spark 1 1 reduce2
hbase 1 0 reduce1
hadoop 1 0 reduce1
排序:将相同分区的数据放在一起并按照key进行排序
hadoop 1 0 reduce1
hadoop 1 0 reduce1
hadoop 1 0 reduce1
hbase 1 0 reduce1
hbase 1 0 reduce1
hbase 1 0 reduce1
hive 1 1 reduce2
spark 1 1 reduce2
spark 1 1 reduce2
溢写小文件:当换乘区的存储数据达到80%,内存中的数据就会溢出,写到磁盘变成多个小文件

file1:
hadoop 1 0 reduce1
hadoop 1 0 reduce1
hadoop 1 0 reduce1
hbase 1 0 reduce1
hbase 1 0 reduce1
hbase 1 0 reduce1
hive 1 1 reduce2
spark 1 1 reduce2
spark 1 1 reduce2
file2
hadoop 1 0 reduce1
hbase 1 0 reduce1
hive 1 1 reduce2
hive 1 1 reduce2
spark 1 1 reduce2
合并merge,将多个小文件合并成一个大文件
排序,并将相同区分的数据方法哦一起按照Key进行排序
hadoop 1 0 reduce1
hadoop 1 0 reduce1
hadoop 1 0 reduce1
hadoop 1 0 reduce1
hbase 1 0 reduce1
hbase 1 0 reduce1
hbase 1 0 reduce1
hbase 1 0 reduce1
hive 1 1 reduce2
hive 1 1 reduce2
hive 1 1 reduce2
spark 1 1 reduce2
spark 1 1 reduce2
spark 1 1 reduce2
map端的shuffle结束,或通知APP master,APP master通知reduce

reduce端的shuffle
每个reduce到map task最后的打文件中拉去属于自己那分区数据

map task1:
hadoop 1 0 reduce1
hadoop 1 0 reduce1
hadoop 1 0 reduce1
hadoop 1 0 reduce1
hbase 1 0 reduce1
hbase 1 0 reduce1
hbase 1 0 reduce1
hbase 1 0 reduce1
hive 1 1 reduce2
hive 1 1 reduce2
hive 1 1 reduce2
spark 1 1 reduce2
spark 1 1 reduce2
spark 1 1 reduce2
map task2
hadoop 1 0 reduce1
spark 1 1 reduce2

reduce1:
				hadoop		1			0			reduce1
				hadoop		1			0			reduce1
				hadoop		1			0			reduce1
				hadoop		1			0			reduce1
				hbase		1			0			reduce1
				hbase		1			0			reduce1
				hbase		1			0			reduce1
				hbase		1			0			reduce1
				hadoop		1			0			reduce1
				
			reduce2:
				hive		1			1			reduce2
				hive		1			1			reduce2	
				hive		1			1			reduce2
				spark		1			1			reduce2		
				spark		1			1			reduce2
				spark		1			1			reduce2	
				spark		1			1			reduce2

合并merge:将所有从maptask中拿到的数据进行合并
按照key进行排序
hadoop 1 0 reduce1
hadoop 1 0 reduce1
hadoop 1 0 reduce1
hadoop 1 0 reduce1
hadoop 1 0 reduce1
hbase 1 0 reduce1
hbase 1 0 reduce1
hbase 1 0 reduce1
hbase 1 0 reduce1

分组:将相同key的value进行合并
reduce1:
hadoop <1,1,1,1>
hbase <1,1,1,1>
reduce2:
hive <1,1,1>
spark <1,1,1,1>