写点什么

第十二周 作业 2

用户头像
Yangjing
关注
发布于: 2020 年 12 月 13 日

大数据原理概述

狭义:Hadoop 相关平台技术

广义:大数据相关的一切,包括机器学习、大数据应用


起源于 Google 分布式文件系统 GFS、大数据分布式计算框架 MapReduce 和 NoSQL 数据库系统 BigTable。

当时主要作用是:网页抓取; 索引构建和排序。大量数据需要存储和计算。

Lucene 开源创始人 Doug Cutting 根据论文实现了 GFS 和 MapReduce 的功能。

Hadoop 分布式文件系统 HDFS 和 大数据计算引擎 MapReduce。


Pig 脚本

Hive 脚本支持使用 SQL 语法进行大数据计算。


MapReduce 即是执行引擎、又是资源调度框架。独立出 Yarn 资源调度系统。


Spark。MapReduce 进行机器学习计算的时候性能差,因为机器学习算法通常需要进行多次的迭代作业,而 MapReduce 每执行一次 Map 和 Reduce 计算都需要重启一次作业,带来大量的消耗。还有一点是 MapReduce 使用磁盘作为存储介质。而 2012 内存已经突破容量和成本限制,成为数据运行过程中主要的存储介质。


MapReduce、Spark 业务场景被称为 批处理计算,大数据离线计算。

还有一种需要进行实时计算的场景,有 Storm、Flink、Spark Streaming 流计算框架。大数据实时计算。


NoSQL 系统,包括 HBase、Cassandra 产品。

数据分析:Hive, Spark SQL 等 SQL 引擎

数据挖掘与机器学习:TensorFlow, Mahout, MLib 等

应用历史

搜索引擎

其他互联网公司,日志、埋点数据

数据挖掘。数据、商品推荐

机器学习、人工智能

应用领域

医学影像智能识别

病历大数据智能诊疗

AI 外语老师

智能解题

舆情监控与分析

大数据风控

新零售

无人驾驶


分布式文件系统 HDFS

最基础、最重要的内容。解决数据的存储问题。

高效的数据存取操作、保证数据的高可用。RAID 思想:分片、复制。


HDFS 系统架构

NameNode: 文件分配表、文件控制块相关的操作,管理整个分布式存储系统的资源。元数据信息

DataNodes: 文件数据

Rack 跨机架


一个名字节点和多个数据节点

数据节点

  • 心跳包(默认 3 秒,检测是否宕机,超过 10 分钟没收到,则认为该节点不可用)

名称节点

  • 日志文件、镜像文件,保障数据不丢失


数据存储细节

Block 默认是 64M


设计目标

HDFS 以流式数据访问模式存储超大文件(批量顺序写入),运行于商用硬件集群上。


不适合 HDFS 的场景

  • 低延迟的数据访问

  • 大量小文件。可能超过 NameNode 的处理能力

  • 多用户随机写入修改文件


文件

以块为单位

大数据计算框架 MapReduce - 编程模型

解决大规模的数据、文件的读取、计算问题。


MapReduce: 大规模数据处理

  • 处理海量数据(>1 TB)

  • 上百上千 CPU 实现并行处理


简单地实现以上目的

  • 移动计算比移动数据更划算(把计算分发到数据存储的服务器上)

分而治之(Divide and Conquer)


WordCount 举例

单词出现的次数的统计。


如何设计 MapReduce 的输入和输出。


MapReduce 框架处理

数据如何处理、如何调度


shuffle

相同的 key 需要 shuffle 同一个 reduce 处理


大数据计算框架 MapReduce - 架构

如何完成计算过程,本身的架构


JobTracker 服务器

JobScheduler 创建 JobInProcess(根节点) 创建 TaskInProcess(任务尝试)


TaskTracker 服务器 & DataNode 服务器


适合 MapReduce 的计算类型

  • TopK

  • K-means

  • Bayes

  • SQL


不适合 MapReduce 的计算类型(数据不适合分片、数据有前后关联)

  • Fibonacci


InputFormat

将输入文件切分成逻辑的 InputSplits,一个 InputSplit 将被分配给一个单独的 Mapper task

提供 RecordReader 的实现,这个 RecordReader 会从 InputSplit 中正确读出一条条的 K-V 对供 Mapper 使用。


FileInputFormat


OutputFormat


Partitioner

MapReduce 通过 Partitioner 对 Key 进行分区,进而把数据按我们自己的需求来分发。

什么情况下使用 Partitioner

  • 如果你需要 key 按照自己意愿分发,那么你需要这样的组件

  • 框架默认使用 HashPartitioner


主要调度算法

单队列调度

  • 特点:FIFO

  • 优点:简单

  • 缺点:资源利用率低

容量调度

  • 特点:

多队列,每个队列分配


JobTracker 内部实现

作业控制

  • 作业抽象成 3 层:作业控制层、任务控制层、任务执行层

  • 任务可能尝试多次执行,每个任务实例被称作 Task Attempt

  • TA 成功,TIP 会标注该任务成功,所有 TIP 成功,JIP 成功


资源管理


JobTracker 容错


TaskTracker 容错

超时

灰名单,黑明单


Task 容错

允许部分 Task 失败

Task 由 TIP 监控,失败任务多次尝试,慢任务启动备份任务


Record 容错

跳过导致 Task 失败的坏记录

  • K,V 超大,导致 OOM,


大数据集群资源管理系统 Yarn

MapReduce 1, 编程模型、执行框架

MapReduce 2,

职责分离,把资源管理与执行引擎分离开。

YARN:Yet Another Resource Negotiator

下一代 MapReduce 框架名称。

不再是一个传统的 MapReduce 框架,甚至与 MapReduce 无关。

一个通用的运行时框架,用户可以编写自己的计算框架,在该运行环境中运行。

资源管理器

节点管理器

一主多从的管理结构


大数据仓库 Hive

Hive 怎么把一个 SQL 转换成一个 MapReduce 计算过程。

group by 后面的字段作 key。


Metastore

Compiler: 关键。把 SQL 转换为抽象语法树,把语法树

Hadoop

Driver

Client


Hive QL - Join in Map Reduce

Hive QL - Map Join


发布于: 2020 年 12 月 13 日阅读数: 23
用户头像

Yangjing

关注

还未添加个人签名 2017.11.09 加入

还未添加个人简介

评论

发布
暂无评论
第十二周 作业2