第十二周学习心得
1.HDFS
三个问题:
(1)怎么存储大文件
(2)怎么快速读
(3)怎么防止文件损坏导致整个文件不可用
常用 RADI 技术
RAID0 : 文件写到多个磁盘;
RAID1:文件写到两个复制盘
RAID 10:2 组盘,每组有组内复制;
RAID 5:
RAID 6
HDFS 系统架构
spark 计算的数据在 HDFS ,所以 spark 要支持 HDFS
HDFS 在大数据的领域是增强的,需要支持 HDFS 才有生命力;
HDFS 支持单文件的万亿级存储。
几千台 DATA NODE 服务器;
几台 NAME NODE 服务器;
DATA NODE 分成很多个块,默认是 64M ,这些块需要在 NAME NODE 注册;
EX : 服务器 IP,端口多少,有多少个数据块;
mapreduce 就是很多个 CLIENT 程序,去并发的读写文件;
HDFS 设计目标
HDFS 以流式数据访问模式存储超大文件,运行于商用硬件集群上
超大文件
流式数据访问
不适合 HDFS 的场景
(1)低延迟的数据访问
(2)大量小文件
超过 NAMENODE 的处理能力
(3)多用户随机写入修改文件
设计目标:
假设:节点失效是常态
理想:
(1)任何节点失效不影响服务
(2)自动完成集群内副本复制
分而治之
NameNode:
DataNode:
datanode 要向 namenode 注册;
HDFS 如何写文件
HDFS CLIENT ->NAMENODE
HDFS CLIENT ->DATANODE
DATANODE-> DATANODE2(副本)->DATANODE3(副本)
DATANODE 磁盘挂了怎么办
DATANODE 正常服务
坏掉的磁盘上数据尽快通知 NAMENODE
NameNode 挂了怎么办
持久化元数据
操作日志(EDIT LOG)
记录文件创建,删除,修改文件属性等操作
重做日志,如果挂了重做,耗时会比较长
Fsimage
包含完整的命名空间
FILE->BLOCK 的映射关系
文件的属性(ACL,quota,修改时间等)
定时对文件系统镜像备份
基于 ZOOKEEPER 管理 的 NAMENODE 主从架构
主 NAMENODE -写->SHARED EDITS -读->从 NAMENODE
2.MAPREDUCE
HDFS 的设计目标就是为了 MAPREDUCE
真正并发的是 MAPREDUCE 计算程序;
处理海量数据 >1TB
上百上千 CPU 实现并行处理
简单地实现以上目的
移动计算比移动数据更划算
MAPREDUCE 特性
自动实现分布式并行计算
容错
提供状态监控攻击
模型抽象简洁,程序员易用
WORD COUNT 举例
MAPREDUCE 内需要两个类
一个是 MAP 类,重写 MAP 函数
一个是 REDUCE 类,重写 REDUCE 函数
MAP 读文件的每一行, 输出 WORD 和 ONE
REDUCE 的 KEY 是 WORD ,ITERABLE 是 ONE 的集合
MAP 的输出是 REDUCE 的输入;
大数据技术是从 GOOGLE 上产生的;
目前的大数据:就是 HADOOP SPARK 以及相关的技术。
HDFS 将超大规模的文件进行存储和管理。
MAPREDUCE 就是写一个 MAP 函数和一个 REDUCE 函数。
MAP:
KEY 就是 偏移量,VALUE 就是一行;
输出,KEY VALUE
REDUCE:
输入是 KEY 就是单词,VALUE 就是 MAP 输出单词出现的次数的
MAPREDUCE 的处理,就是分布式的计算,从 X 万个文件中同时统计数据
一个例子:
hello world 0 hello world hello 1 world
bye world 12 bye world
MAP 是自己写的,想怎么算就怎么算;
YARN
大数据 1.0: MAPREDUCE
大数据 2.0: 通用的运行时框架,用户自己编写框架,在环境中运行;
架构方案的主要缺点是,服务器集群资源调度管理和 MAPREDUCE 执行耦合,
无法运行其它计算任何,比如:SPARTK STORM 无法统一集中资源。
YARN 架构
hadoop1 没用 yam,hadoop1 使用的是 job tracker
YARM 两个部分:
资源管理器
节点管理
3.HIVE
SQL 计算非常多,绝大多数的公司的分析计算都是 SQL 计算。
PAGEID+AGE 称为 KEY VALUE 就是 1 ,SHUFFLE SORT
# 关联这个表到这个文件
LOAD DATA LOCAL INPATH 'XXXXXXX' OVERWRITE INTO TABLE
针对这个表的 HIVE 语句就会被转换成 MAPREDUCE 的计算程序。
HIVE 的整体架构
CLIENT -> driver ->hadoop
metastore
compiler
SQL 转成语法树
将抽象语法树转成查询块 QB
把 QB 转成逻辑执行计划
评论