Hadoop
hadoop
HDFS
- 分布式文件存储系统
- 延迟大,适合一次写入,多次读出的场景,不支持文件的修改
- block大小可以配置(dfs.blocksize),2.x版本默认128M,老版本默认64M
- 路径hdfs://namenode:port/a/b/c.txt
- NameNode是集群主节点,负责存储元数据,维护整个hdfs的目录树,以及block信息
- DataNode用于存储文件,可有多块备份
YARN
- Yet Another Resource Negotiator
- 集群资源的管理和调度
- 多框架资源统一调度
MapReduce
- 分布式计算框架
HDFS
NameNode
- 客户端请求的响应
- 元数据的管理(查询,修改)
DataNode
- 存储用户的文件对应的数据块(Block)
- 要定期向NameNode发送心跳信息,汇报本身及其所有的block信息,健康状况
- 每台DataNode上有一个socketServer
SecondaryNameNode
- 负责checkpoint(合并元数据镜像文件和日志文件)
MapReduce
工作流程
- 在指定DataNode节点上运行mapTask
- 之间的输入数据按条以k-v形式传入mapTask,调用mapper后输出k-v
- 输出的k-v加载到内存的环形缓冲区
- 环形缓冲区满后,溢出写到磁盘中的溢出文件,溢出文件数量不限
- 所有mapTask结束后,将结果全部存储为溢出文件
- 在指定的N个节点上运行reduceTask
- 指定reduce机器以key.hashcode%2为依据,从DataNode上拉取响应key的数据
- 拉取到的数据首先放到本地磁盘,并对数据按照key进行分组排序
- 按组传入reduceTask,调用reducer,输出k-v,写到文本文件,且一对k-v写成一行k-v之间用\t分割。
- 不同机器的reduceTask分别将结果存储为part-00000 part-00001…
shell
命令 | 格式 |
---|---|
ls | hadoop fs -ls 路径 |
mkdir | hadoop fs -mkdir /temp_dir & hadoop fs -mkdir -P /temp_a/temp_b |
put | hadoop fs -put /home/1.txt /temp |
get | hadoop fs -get /temp/1.txt /home |
getmerge | hadoop fs -getmerge /temp/log.* /home/data/log.all< |