- 信息科技需要解决:信息存储、信息传输、信息处理
- 大数据4个”V”:数据量大(Volume),数据种类繁多(Variety),处理速度快(Velocity),价值密度低(Value)
- “大数据摩尔定律”:数据以每年50%的速度增加
- 数据类型分为:结构化书数据(10%)、非结构化数据(90%) 其表现形式是二维表
- 大数据对思维方式的影响: 1.全样而非抽样
2.效率而非精确
3.相关而非因果
6.大数据对科学研究的影响: (1)实验科学
(2)理论科学
(3)计算科学
(4)数据密集型科学
7.大数据计算模式:批处理计算、流计算、图计算、查询分析计算
Hadoop
- Hadoop基于Java语言开发,具有很好的跨平台特性,支持多种编程语言。
- Hadoop核心:分布式文件系统(HDFS)、MapReduce
- 创始人:Doug.Cutting
- Hadoop的特性:高可靠性、高效性、高可扩展性、高容错性、成本低 ,运行Linux上。
- 让名称节点生成自己的SSH密钥:ssh -keygen -t rsa -p ‘ ‘
用ssh localhost 检查一下是否输入密码
- 举例Hadoop伪分布安装:hdfs-site.xml 、core-site.xml、hadoop-env.sh
- 格式化:hadoop namenode -format
- 上传到HDFS中:hdfs dfs -mkdir / -put / -ls / -cat
HDFS
- 分布式文件系统就是把文件分布存储到多个节点上,成千上万的计算机节点构成集群
- 主节点/从节点: 主节点负责文件和目录的创建、删除和重命名,同时管理数据节 (名称节点/数据节点) 点和文件块的映射关系。
从节点负责数据的存储和读取,由名称节点分配存储位置,客户端直 接写入相应数据节点,从节点也要根据名称节点的命令创建删除数据
块和冗余定制。
数据节点都被保存在各自节点的本地Linux文件系统中。
- HDFS的局限性:1.不适合低延迟数据访问
- 无法高效存储大量小文件
- 不支持多用户写入及任意修改文件
- HDFS默认一个块是64MB:支持大规模文件存储,简化系统设计,适合数据备份
分布式文件系统通常采用:多副本存储
- HDFS:名称节点负责管理分布式文件系统的命名空间,保存了两个核心的数据结构
FsImage、Editlog
FsImage:维护文件系统树以及文件树中所有的文件和文件夹的元数据
- 名称节点启动过程中处于“安全模式”只提供读. hadoop dfsadmin -safemode leave 退出 安全模式
- SecondaryNameNode的工作情况**
1.SecondaryNameNode定期与NameNode通信,请求停止Editlog文件,暂时将新的写操 作写到一个新的文件edit.new上来
2.通过HTTP、GET方式从Namenode获得FsImage和Editlog ,并下载
3.将下载下的FsImage载入到内存,然后一条执行Editlog文件中的各项更新操作后,使
得FsImage最新——Editlog和FsImage合并
- 通过post方式将新得FsImage发送到Namenode上
- 以新换旧,新得FsImage换到旧的FsImage文件,同时替换Editlog文件
第二名称节点的作用:1.可以完成EditLog与FsImage的合并操作
2.可以作为名称节点的“检查点”
3.减小EditLog文件大小
4.缩短名称节点重启时间
5.保存名称节点中的元数据信息
HDFS体系结构
- HDFS采用主从结构模型
- HDFS的命名空间包含目录,文件和块
- HDFS通信协议是构建在TCD/IP协议基础上的
客户端与数据节点的交互通过RPC,名称节点不会主动发起RPC
- HDFS体系结构的局限性:1.命名空间的限制
- 性能的瓶颈
- 隔离的问题
- 集群的可用性
HDFS存储原理
- HDFS采用多副本方式进行冗余存储,保证了容错性和可用性
优点:1.加快数据传输速度
2.容易检查数据错误
3.保证数据的可靠性
P53 HDFS数据读取
- 启动Hadoop start-dfs.sh
- 关闭Hadoop stop-dfs.sh
HDFS HA
- Hadoop的局限不足:
- 抽象层次低
- 表达能力有限
- 开发者自己管理作业之间的依赖关系
- 难以看到程序整体逻辑
- 执行迭代操作能力低
- 资源浪费
- 实时性差
- 单点故障问题 HDFS1.0
SecondaryNameNode无法解决单点故障问题
第二名称节点不是热备份,主要是防止日志文件EditLog过大,导致名称节点失败恢复 时消耗的时间附带起冷备份
解决方法:HA构架 HA设置两个名称节点,”活跃(active)”和“待命(standby)”
两种名称节点的状态同步,可以借助于一个共享存储系统来实现
一旦活跃名称节点出现故障,就可以立即切换到待命名称节点
Zookeeper确保一个名称节点在对外服务(防止两个管家出现)
名称节点维护映射信息,数据节点同时向两个名称节点汇报信息。
单选
检查HDFS文件系统健康状态:fsck
Hadoop HA 通过同时配置两个处于Active/Passive 模式的Namenode
来解决上述问题,分别叫 ActiveNamenode ; StandbyNamenode
数据保持同步,两个Namenode都与一组Journal Node
启动ZKFC用于完成以下任务:Namenode 健康
zk session 管理
基于zk的Namenode选举
新一代资源管理调度框架YARN(Yet Another Resource Negotiator)
- MapReduce 1.0的缺陷
- 存在单点故障
- JobTracker”大包大揽”导致任务过重
- 容易出现内存溢出
- 资源划分不合理
原JobTracker:资源管理是ResourceManger
任务调度和任务监控是ApplicationMaster
- MapReduce 2.0 它是运行在YARN之上的一个纯粹的计算框架。
YARN是提供资源管理调度服务
- ResourceManger :处理客户端请求
启动/监控ApplicationMaster
监控NodeManger
资源分配与调度
ApplicationMaster :为应用程序申请资源,并分配给内部任务
任务调度,监控与容错
NodeManager: 单个节点上的资源管理
处理来自ResourceManger的命令
- ApplicationMaster的主要功能P162 5点
- Nodemanger功能 P162
- “容器”作为动态资源分配单位,封装了一定数量CPU、内存、磁盘资源
“容器”进行就近原则,从而实现“计算向数据靠拢”
用户的应用程序是以(作业)的形式提交的。
- YARN的目标是实现“一个集群多个框架”
Flume
- 由Cloudera公司开源
分布式、可靠、高可用的海量日志采集系统
- 事务:Flume使用两个独立的事务负责从Source到channel,从Channel到sink的事件上 (无法记录时,事务回滚,保留在Channel上)
- Channel中的File Channel具有持久性,事件写入File Channel后,即使Agent重启
不会丢失
Flume还提供Memmory Channel的方式,但它不具有持久性,不保证数据完整性,具有较高的吞吐量
- Flume三层架构:Agent,collector和storage
Agent是Flume的代理,Agent和colletcor由master管理,很多个zookeeper(管理)避 免单点故障问题
- Event 将数据进行封装,是Flume传输数据基本单位,如果是文本文件,通常是一行记 录是事务的基本单位
HDFS Sink写入HDFS,对于正在进行操作处理的文件,后缀为“.tmp”
在启动时运行Unix命令,则a1.sources.r1.type = exec
分布式运行框架MapReduce
- 由谷歌公司提出
- MapReduce 将复杂,运行于大规模集群上的并行计算过程高度抽象两个函数 Map函数, Reduce函数
- MapReduce采用“分而治之”,一个存储在分布式文件系统中的大数据集,会被切成许多独立的分片(split),。。。。包含原数据
- 设计理念:“计算向数据靠拢”
- Master | Slave 架构
- MapReduce 2.0 体系结构由
- 不同的Map任务之间不会进行通信
不同的Reduce任务之间也不会发生任何信息交换
- Reduce任务个数取决于集群中可用的reduce任务槽(slot)数目
- Map端的shuffle过程
- 输入数据和执行Map任务
- 写入缓存:在缓存中积累一定数量的Map输出结果后,再一次性批量写入磁盘, 降低开销
- 溢写(分区,排序,合并):当缓存满时,发生溢写,将缓存中的数据进行分区, 进行排序合并,再写入磁盘,磁盘会产生多个溢写文件。
- 文件归并:在Map任务全部结束之前,这些溢写文件归并成一个大的磁盘文件
- Reduce端的shuffle过程
只需要从 Map端读取Map结果,然后执行归并操作,最后输送给Reduce任务进行处 理
数据仓库Hive
- 数据仓库与结构化数据
- 结构化数据库中的数据经常变化,数据仓库中的数据信息极少变化
- 结构化数据库中的数据保留某一时刻的信息;数据仓库保留历史数据
- Hive是一个构建于Hadoop顶层的数据仓库工具,支持大规模数据存储分析,具有良好 的扩展性
- Hive具有的特点,非常适用于数据仓库
采用批处理方式处理海量数据,提供适合数据仓库操作的工具
数据仓库存储的是静态数据
- Hive是Facebook公司中的应用
- **Hive的基本数据类型:TINYINT,smallInt、Int、Bigint、FloatDouble 、boolean
String,Timestamp.BINARY(字节数组)
Hive的集合数据类型 ARRAY(有序字段) Array(1,2)
Map(一组无序的键/值对) Map(‘a’,’1’,’b’,’2’)
Struct(一组命名字段) struct(‘a’,1,1,0)
- Hive有三种模式:单机模式、伪分布模式、分布式模式
- load:向表中装载数据
把目录‘usr/local/data’下的数据文件中的数据装载进usr表并覆盖原有数据
hive>local data local in path ‘usrllocaldata’ overwrite into table usr
有一个dos文件,用HiveQL语句实现Wordcount算法
Create table word.count as
Select word.count(1) as count from
(select explode (split(line,’’) | as word from docs)
Group by word,
Order by word,
Hive系统架构:
用户接口包括CLI,HWI,JDBC,ODBC,ThriftServer
Oriver(驱动模块)负责把HiveSQL转化成一系列MapReduce工作
元数据存储模块是一个独立的关系型数据库
分布式数据库HBase
- HBase是谷歌公司BigTable的开源实现
- HBase是一个高可靠,高性能,面向列,可伸缩的分布式数据库,是谷歌BigTable的开 源实现,主要用来存储非结构和半结构化的松散数据
Bigtable HBase
文件存储系统 GFS HDFS
海量数据处理 MapReduce Hadoop MapReduce
协同服务管理 Chubby zookeeper
- HBase与传统的关系数据库区别在这几个方面
- 数据类型:关......库采用关系模型,具有丰富的数据类型和存储方式
HBase则采用了更加简单的数据模型,把数据存储在未经解释的字符串
- 数据操作:...会涉及复杂的多表连接。HBase操作则不存在复杂的表与表关系,只有简 单的插入,查询,删除,清空
- 存储模式:关系型数据库是基于行模式,HBase是基于列存储的
- 数据索引:关系型数据库有多个索引,提高性能,HBase只有一个索引一行键
- 数据维护: ......新的值去替换旧值,旧值不存在,而HBase不会删除旧版本,而是生 成一个新的版本,旧有的版本任然保留
- 可伸缩性:.....很难实现横向扩展,纵向也有限,HBase很灵活
- 数据模型概述:HBase是一个稀疏多维度排序的映射表,这张表索引是行键,列族,列 限定符和时间戳
访问表中的行只有3种(1)通过单个行键访问
- 通过一个行键的区间来访问
- 全表扫描
列族(CF):是基本的访问控制单元
- HBase可以视为“四维坐标”[行键,列族,列限定符,时间戳]