10.Hadooop;Hive,其优点是学习成本低&
Hadoop
- 单点结构面临的问题
- 集群架构面临的问题
- Hadoop集群架构
- 冗余化数据存储
- 分布式文件系统
单节点结构问题:运算不了海量数据
集群架构问题:1.长时间距群的运算如何应对节点的故障 2.传输消耗大 3.分布式编程非常复杂,需要一个简单的模型能够隐去所有的复杂性(节点各干各的事叫分布式,干同一件事叫集群)
Hadoop分布式集群
- hadoop是依据MapReduce的原理,用java语言实现的分布式处理机制
- hadoop是一个能够对大量数据进行分布式处理的软件框架,实现了Google的MapReduce编程模型和框架,能够把应用程序分割成许多的小的工作单元,并把这些单元放到任何集群节点上执行
- MapReduce是Hadoop中的一个数据运算核心模块
MapReduce集群运算问题的解决方案
- 在多节点上冗余地存储数据,以保证数据的持续性
- 将计算移向数据端,以最大程度减少数据移动
- 简单的程序模型,隐藏所有复杂度
冗余化的数据存储结构
分布式文件存储系统:
- 提供全局的文件命名控件,冗余度和可获取性
典型的应用场景和模式:
- 超大级别的数据量
- 数据很少被全部替换
- 最常见的操作为读取和追加数据
分布式文件系统
- 数据以‘块状’形式在多台机器上存储
- 每个数据块都会重复地在多台机器上存储
- 保证数据的持续性和随时可取性
- 服务器块同时也用作计算服务器
- 把运算挪向数据处
服务器块:
- 文件被分作16-64MB大小的连续块
- 每个文件块都会被重复存储2-3次
- 尽量保证重复的数据块在不同的机架上
主节点:
- hadoop的HDFS里叫Name节点
- 存储元数据记录文件存储结构和地址
- 最常见的操作为读取和追加数据
文件访问的客户端库:
- 询问主节点以获取块服务器地址
- 直接连接相应服务器块获取数据
并不是所有文件都适合分布式文件系统:1.数据格式尽量统一 2.耦合性越小(数据之间关联小)越适合
MapReduce变换数据
hadoop组成
-
Hadoop Common
工具包,为其他的hadoop模块提供基础设施 -
Hadoop HDFS
分布式文件系统,对海量数据存储 -
MapReduce
分布式处理策略,计算模型,对海量数据进行处理 -
Yarn
分布式资源管理,调度
-
Map-Reduce 工作流程
- Map
- 逐个文件逐行扫描
- 扫描同时抽取出我们感兴趣的内容(keys)
- Group by key
- 排序洗牌
- Reduce
- 聚合,总结,过滤,转换
- 写入结果
- Map
- 数据流
- 输入和输出都被存储在分布式文件系统HDFS上
- 实际调度操作时,调度器会尽可能将map任务移至靠近数据物理存储的节点上
- 中奖结果将会被存储在map和reduce操作的本地文件系统上
- 实际运行过程中,一个MapReduce产生的结构,很有可能作为另一个MapReduce任务的输入
- 主节点协调功能
- 主节点主要负责系统协调
- 任务状态:等待初试,进行中,完成
- 一旦有能工作的woker,待初试任务被调度运行
- 一个map任务完成后,它会像主节点发送它的产生的R个中间文件的位置和大小,每个文件对应一个reducer
- 主节点将在这些信息传送至reducer
节点故障
- Map任务节点故障
- 所有运行中和已经完成的map任务,都被重置为待初始
- 所有这些待初始Map任务,将重新被分配到能工作的节点woker
- Reduce任务节点故障
- 只有运行中而未完成的reduce任务被设定陈待初始
- 这些待初始reduce任务被重新分配至其他woker上
- 主节点故障
- 整个MapReduce任务终端,同时通知客户端管理员
启动多少个map和reduce任务?
- M个map任务和R个reduce任务
- 实际操作经验法则:
- 通常情况下我们会让M远大于集群中的节点数
- 通常设置一个分布式文件系统块对应一个map任务
- 提升动态加载平衡,同时加速节点故障时的任务恢复
- 通常R比M小(因为输出要分布在R文件上)
动态添加map和reduce的大小,增加并行度
- map是配置 mapred.max.split.size,来定义map处理文件的大小,默认256M,弱项增加map并行度,即见效map处理文件的大小 set mapred.max.split.size = xxx(更小的字节)
- reduce与map一直,修改 hive.exec.reducers.bytes.per.reduce 来定义一个reduce处理文件的大小
Hive
Hive
- 在Hadoop的MapReduce上提供类SQL数据提取操作功能
SPARK
- 分布式计算框架,是MapReduce的替代方案,兼容HDFS和Hive
- 可兼容hadoop生态,弥补MapReduce的不足
hive是基于hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现MapReduce统计,十分适合数据仓库的统计分析
用户接口三个:CLI,Client,WUI,在启动Client模式时,需要指出Hive Server在哪个节点启动,WUI是通过浏览器访问Hive
Hive将元数据存储在数据库中,如mysql。Hive中的元数据包括表的名字,表的列和分区及属性,表的属性,表的数据所在目录等
SQL生成的查询计划存储在HDFS中,并在随后又MapReduce调用执行
Hive的数据存储在HDFS中,大部分查询,计算有MapReduce完成
关联规则挖掘
关联规则介绍
- 数据挖掘是一项从大连的记录数据中提取有价值的,人们感兴趣的知识,这些知识是隐含的,驶向未知的有用信息,提取的知识一般可表示为概念、规则、规律、模式等形式
- 规则:样本和样本之间的关联性
- 模式:通过特征X,经过函数f得到结构y
- 关联规则是当前数据挖掘研究的主要方法之一,他反映一个事物与其他事物之间的互相一寸心和关联性
- 典型的关联规则发现问题是对超市中的货篮数据进行分析,通过发现顾客放入货篮中的不同商品之间的关系来分析顾客购买习惯
关联规则基本概念
- 每一个样本叫一个项目
- 一个顾客购买商品的购物车,项目的组合叫事务
- 事务中有意义的项目集合叫做项集,如面包牛奶,就是k(二)项集
- 我们要挖掘的就是项集
- 1000个人购物,1000个购物单,牛奶在购物单中出现的次数叫支持度
- 当支持高到一定程度,才会观测出有意义的信息和规则,设定一个阀值
- 项集A在事务数据库D中出现的次数占D中总事务的百分比叫项集的支持度,如果项集的支持度超过用户给定的最小支持阀值,就称该项集是频繁项集
- 支持度:关联规则产出的是规则,找到频繁项集,再找出有意义的规则,支持度确定哪些是经常出现的
- 信任度:信任度产出规则,知道x和y是一个频繁项目及,谁对谁的影响更大
- 强关联规则:支持度和信任度分别满足用户给定阀值的规则
Apriori算法
- Apriori算法命名源于算法使用了频繁项集性质的先验知识
- Apriori算法将发现关联规则的过程分为两个步骤:
- 通过迭代,检索出事务数据库中的所有频繁项集,即支持度不低于用户设置的阀值的项集
- 利用频繁项集构造出满足用户最小信任度的规则
- 挖掘或识别出所有频繁项集是该算法的核心,占整个计算量的大部分
Apriori性质
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。