写点什么

WEEK-12 学习心得

用户头像
蒜泥精英
关注
发布于: 2020 年 09 月 02 日
WEEK-12 学习心得

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


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 两个部分:

资源管理器

节点管理


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 转成逻辑执行计划


HIVE 也可以 EXPLAIN 输出 XML

HIVE 的开发技术难度比 MAPREDUCE 要难很多。

MAPREDUCE 如果只是基础功能(非工业级)1-2 周就可以写出来了,其实主要是底层技术。

但是 HIVE 的难度就比较高(目前已有 40 年)


大数据读数据的工作比较重,一般是读一次数据,进行多次的计算


HIVE CLI 和 MYSQL 可以关联

将创建的表写入 MYSQL 中;当然 HIVE 有自带的


HIVE QL - JOIN

HIVE 怎么 执行 JOIN 操作。


PAGEID 和 USERID 关联

USERID 和 AGE 关联

输出 PAGEID 和 AGE 的统计


MAP 的输入,只能是一张表的一行输入


MAP 的 KEY 就是关联的字段,VALUE 就是 <表编号,业务字段>


SHUFFLE


HIVE 中 大表和小表进行 JION 的操作经常有

HIVE 给出了一个方法,可以在 HIVE 中指定。


了解了 MAPREDUCE 的思想,其它的都一样。


【总结】

大数据学习,一定要弄懂 MAPREDUCE,其它的框架原理都一样,达到举一反三的效果。学习框架要深入理解架构解决问题的思维,这个才是架构的精髓。


用户头像

蒜泥精英

关注

还未添加个人签名 2018.09.19 加入

还未添加个人简介

评论

发布
暂无评论
WEEK-12 学习心得