本文主要内容
- Hadoop环境介绍;
- 分布式文件系统[HDFS]的基本组件与四大机制;
- 分布式计算[MapReduce]的策略、理念、体系架构与工作流程;
- 数据仓库工具[Hive]的起源、特点、四种数据模型以及HQL转换MapReduce的原理;
- 数仓分层的好处、通用的数据分层设计以及分层设计示例。
本文目录
第一节 Hadoop 环境
1.1 分布式文件系统[HDFS]
现在企业环境中,单机容量无法存储大量数据,需要跨机器[集群]存储,而统一管理分布在集群上的文件系统称之为分布式文件系统。
HDFS(Hadoop Distributed Fill System) 是Hadoop的子项目,使用多台计算机存储文件,并且提供统一的访问接口(NameNode),像是访问一个普通文件系统一样使用分布式文件系统。
默认切割固定大小128M,储存3份
HDFS基本组件
-
HDFS Client : 提供命令管理HDFS,工作职责:读/删除/覆盖 哪个文件
-
NameNode:管理整个文件系统的元数据 , 工作职责:管理元数据、维护目录结构、响应客户端请求
-
DataNode:复制管理用户的文件数据块, 工作职责:管理用户提交的数据、心跳机制、块报告
-
SecondaryNameNode:NameNode的助理(备份),帮助加载元数据,紧急情况下(例如NameNode宕机),可以帮助恢复数据
HDFS四大机制
-
心跳机制(Master/Slave结构, Master是NameNode, Slave是DataNode)。
默认DataNode向NameNode发送请求的时间间隔为3s;
默认NameNode向DataNode发送请求的时间间隔为5min;
NameNoder如果长时间没有接收到DataNode的心跳,也会每隔一段时间(5min)向DataNode发送请求,一共会发两次。
-
安全模式 HDFS集群正常冷启动时,NameNode也会在safemode状态下维持相当长一段时间(没有加载完,不能有操作命令),等待它自动退出安全模式即可。
-
副本存放策略 将每个文件的数据进行分块存储(备份),每一个数据块有保存有多个副本,这些数据块副本分布在不同的机器节点上。
-
负载均衡 机器容量最高的那个值和最低的那个值差距不能超过10%,会自动调节。
1.2 分布式计算(MapReduce)
MapReduce 是一种分布式并行编程框架。
MapReduce 策略: 分而治之
MapReduce 理念: 计算向数据靠拢而不是数据向计算靠拢
- MapReduce 体系架构 【主从(Master/Slave)架构】
-
client(客户端):
通过Client可以提交用户编写的应用程序,用户通过它将应用程序提交到 JobTracker端;
用户也可以通过Client提供的一些接口去查看看前提交作业的运行状态。
-
JobTracker:
资源的监控和作业的调度
监控底层的其他的TaskTracker以及当前运行的Job的健康状况
一旦探测到失败的情况就把这个任务转移到其它节点继续执行跟踪任务执行和资源使用量
-
TaskTracker:
执行具体的相关任务一般接受Job Tracker 发送过来的命令(如启动新任务,杀死任务等)
把一些自己的资源使用情况,