第十二周 作业 2
大数据原理概述
狭义: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
版权声明: 本文为 InfoQ 作者【Yangjing】的原创文章。
原文链接:【http://xie.infoq.cn/article/d1752672b0b219f95a4d4d763】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论