大数据概述
技术支撑:存储、计算、网络
大数据:大量化、快速化、多样化、价值密度低
科学范式:实验-理论-计算-数据
影响:全样而非抽样、效率而非精确、相关而非因果
应用:
核心技术:分布式存储、分布式处理
计算模式:批处理(MapReduce、spark)、流计算、(流数据的处理)、图计算、查询分析计算(Hive)
云计算:虚拟化、多用户,解决分布式存储、计算
物联网:
关键技术:识别、感知技术
,继承云计算
大数据处理架构Hadoop
两大核心:HDFS + MapReduce
可靠性、高效性、高可扩展性、高容错性、成本低、可支持多种编程语言
Pig:也能提供SQL语言查询(轻量级)
Oozie:工作流管理系统
Sqoop:连接关系型数据库与Hadoop
分布式文件系统HDFS
实现目标:
兼容廉价的硬件设备
支持大数据集
强大的跨平台兼容性
实现流数据读写
支持简单的文件模型
局限性:
不适合低延迟数据访问
无法高效储存大量小文件
不支持多用户写入数据访问及任意修改文件
最核心概念:块
:默认64MB
好处:支持大规模文件存储 、简化系统设计、比较适合数据备份
名称节点——HDFS集群的管家(数据目录)
数据节点——存储实际数据
元数据:文件是什么、分成多少块、怎么隐射、那个服务器上
FsImage:
文件的复制等级
块大小以及组成文件的块
修改和访问时间
访问权限
注:文件具体在哪分布是实时在内存中维护的
更新的放在EditLog
第二名称节点
:名称节点的冷备份,对EditLog不断增大的处理
体系结构:
目录-文件-块
局限性:
命名空间限制:名称节点保存在内存
性能瓶颈
隔离问题
可用性
存储原理:
每个数据块默认冗余保存3份
注:第二个副本放在不同机架,第3个跟第1个是相同机架、4.5.6块是随机放
提供API:知道数据节点的机架ID,判断哪个数据离自己最近
数据节点定时向名称节点发送心跳信息,HDPS可以跳转冗余数据副本的位置
数据读取时也会有校验码(判断是否出错)
读写过程:
读数据:
先创建输入流,
写数据:
命令
Hadoop fs:
Is:显示指定文件的详细信息
Mkdir:创建相关文件夹
Cat:指定文件内容输出到标准输出
-cp 将本地文件复制到HDFS文件中
也有web查看文件
Ubuntu一般用ecplise实现
分布式数据库HBase
高可靠、高性能、面向列、可伸缩
可以用来存储非结构化和半结构化的松散数据
旧数据还在,通过时间戳区分新数据
四维元组确定
HBase功能组件:库函数(一般用于链接每个客户端)、Master服务器(管家作用:分区信息进行维护和管理、维护Region服务器列表、整个集群有哪些Region服务器在工作、对Region进行分配)、Region服务器(存储不同的Region)
不同的Region分配到不同的Region服务器上
META.表元数据的表
加速寻址、缓存位置信息——惰性机制解决缓存失效
分布式并行编程模型MapReduce
相关并行编程框架:MPI、OpenCL、CUDA
MapReduce:非共享式架构,拓展性好,适用于非实时性的批处理和数据密集型的应用
分而治之
理念:计算向数据靠拢
Map函数:
Reduce函数:
JobTracker:作业跟踪器,负责资源的监控和作业的调度
TaskTracker:任务调度器。执行具体的相关任务
以slot为单位调度资源(map slot、reduce slot)
Split分片-map任务
Shuffle:分区、排序、合并
合并:减少数量,将两个(a,1)合并成(a,2)
归并:是生成value-list
数据仓库Hive
数据仓库:是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策
保留历史数据状态
Hive:构建在Hadoop上,HiveQL语言
采用批处理方式处理海量数据、提供一系列对数据进行提取、转换、加载(ETL)的工具
HiveHA:高可用性解决方案,解决不稳定
本身不做具体的数据处理与存储,是把SQL语句转换成相关的MapReduce作业
工作原理:
依赖底层,延迟较高
Impala:实时交互的新型查询系统