3.23阅读+Hadoop复习+MySQL(事务、索引、优化)

Hadoop与MySQL技术概览:分布式存储与数据库事务
本文介绍了Hadoop的分布式系统架构,包括HDFS、MapReduce和YARN的核心功能与工作原理。同时,讨论了Hadoop的特点和生态系统中的其他组件如Zookeeper、Hbase、Hive和Sqoop。此外,文章还涉及了MySQL的事务处理、事务的ACID特性、存储引擎InnoDB以及索引结构,特别是B+Tree。最后,提到了MySQL的优化方法,包括插入数据、主键和ORDERBY的优化。

1.《大数据之路》36/339

2.Google-MapReduce 3.6

3.个人简历技能熟悉:

3.1 Hadoop基础

概述

Hadoop是一个分布式系统基础架构,主要是为了解决海量数据的存储海量数据的分析计算问题

Hadoop核心组件

自诞生以来,Hadoop主要有1.x,2.x,3.x三个系列多个版本;

Hadoop1.x组成有:HDFS(具有高可靠性、高吞吐量的分布式文件系统,用于数据存储),

MapReduce(同时处理业务逻辑运算和资源的调度),Common(辅助工具,为其它Hadoop模块提供基础设施)

Hadoop2.x和Hadoop3.x组成上无变化,和Hadoop1.x相比,增加YARN,分担了MapReduce的工作,组件包括:HDFS,MapReduce(处理业务逻辑运算),YARN(负责作业调度与集群资源管理),Common(辅助工具,为其它Hadoop模块提供基础设施)。

  • HDFS是一个文件系统,用于存储文件,通过目录树来定位文件,其次是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。HDFS适合一次写入,多次读出的场景。一个文件经过创建、写入和关闭之后久不需要改变。

  • MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。

核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一 个Hadoop集群上。

MapReduce将计算过程分为两个阶段:Map和Reduce

Map阶段并行处理输入数据

Reduce阶段对Map结果进行汇总

  • YARN是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序。

  • Common是Hadoop体系最底层的一个模块,为Hadoop各子项目提供各种工具,如:配置文件和日志操作等。

Hadoop特点:

1)高可靠性

Hadoop底层维护多个数据副本,即使Hadoop某个计算元素或存储出现故障时,也不会导致数据的丢失。

2)高扩展性

在集群间分配任务数据,可方便的扩展数以千计的节点

3)高效性

在MapReduce的思想下,Hadoop是并行工作,加快任务处理速度

4)高容错性

能够自动将失败的任务重新分配

Hadoop生态圈组件及其作用

1)Zookeeper:是一个开源的分布式应用程序协调服务,基于Zookeeper可以实现同步服务,配置维护,命名服务。

2)Flume:是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统

3)Hbase:是一个分布式的、面向列的开源数据库,利用Hadoop HDFS作为其存储系统

4)Hive:基于Hadoop的一个数据仓库工具,可以将结构化的数据映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。

5)Sqoop:将一个关系型数据库中的数据导入到Hadoop的HDFS中,也可以将HDFS的数据导入到关系型数据库。

Hadoop集群工作时启动哪些进程?有什么作用?

1)NameNode

就是Master,Hadoop的主管、管理者

a.管理HDFS的名称空间

b.配置副本策略

c.管理数据块(Block)映射信息

d.处理客户端读写请求

2)DataNode

就是Slave。NameNode下达命令,DataNode执行实际的操作。

a.存储实际的数据块

b.执行数据块的读/写操作

3)Secondary NameNode

当NameNode挂掉的时候,提供周期检查点和清理任务,帮助NN合并editslog,减少NN启动时间。

a.辅助NameNode,分担其工作量,如定期合并Fsimage和Edits,并推送给NN

b.在紧急情况下,辅助回复NameNode

4)ResourceManager(JobTracker)

整个集群资源的老大,负责集群中所有资源的统一管理和分配,接受来自各个节点(NodeManager)的资源汇报信息,并把这些信息按照一定的策略分配给各个应用程序(即ApplicationMaster)

a.与客户端交互,处理来自客户端的请求

b.启动和管理ApplicationMaster,并在它运行失败时重新启动它

c.管理NodeManager,接受来自NodeManager的资源管理汇报信息,并向NodeManager下达管理命令

d.资源管理与调度,接受来自ApplicationMaster的资源申请请求,并为之分配资源(核心)

5)NodeManager(TaskTracker)

NM是YARN中单个节点的代理(单个节点服务器资源老大),它需要与应用程序的ApplicationMaster和集群管理者ResourceManager交互;

从ApplicationMaster上接收有关Container的命令并执行(比如启动、停止);

向ResourceManager汇报各个Container运行状态和节点健康状况,并领取有关Container的命令

NM管理的是Container而不是任务,一个Container可能运行着各种任务,但是对NM而言是透明的,它只负责Container相关操作,比如管理Container的生命周期,即启动Container、监控Container和清理Container等。

总结:

a.管理单个节点上的资源

b.处理来自ResoureManager的命令

c.处理来自ApplicationMaster的命令

6)JournalNode

高可用情况下存放NameNode的editlog文件

集群的主要瓶颈

磁盘IO、CPU、内存、网络带宽

搭建Hadoop集群的xml文件有哪些

core-site.xml

yarn-site.xml

hdfs-site.xml

mapred-site.xml

Hadoop的checkpoint流程

Fsimage:元数据序列化后在磁盘存储的地方。包括HDFS文件系统的所有目录跟文件inode序列化信息

Memory:元数据在内存中存储的地方

Edit文件:

1)Edit记录客户端更新元数据信息的每一步操作(可通过Edits运算出元数据)

2)一旦元数据有更新和添加,元数据修改追加到Edits中然后修改内存中的元数据,这样一旦NameNode节点断电,通过Fsimage和Edits的合并生成元数据

3)Edits文件不要过大,系统会定期的由Secondary NameNode完成Fsimage和Edits的合并

Hadoop的默认块大小是多少?为什么要设置这么大?

(从寻址和磁盘两个方面回答)

默认块大小:

Hadoop2.7.2版本及之前默认64MB,Hadoop2.7.3及之后默认128M

设置太小,会增加寻址时间,程序一直在找块的开始位置,而且NN需要大量内存来存储元数据,不可取

设置太大,从磁盘传输数据的时间会明显大于定于这个块开始位置所需时间,导致程序在处理这块数据时,会非常慢。

如果寻址时间为10ms,而传输速率为100MB/s,为了使寻址时间仅占传输时间的1%,我们要将块大小设置约为100MB.

HDFS块的大小设置主要取决于磁盘传输速率

3.2MySQL事务

事务操作

set @@autocommit = 0;手动提交事务

四大特性ACID
并发事务问题
事务隔离级别

事务隔离级别越高,数据越安全,但性能越低

3.3MySQL体系结构

存储引擎:Innodb

3.4MySQL索引

索引结构

1)是一种有序的数据结构,帮助高效查询

2)优缺点

3)索引结构

B+Tree

可以在网站:https://www,cs.usfca.edu/~galles/visualiation/BTree.html

动态观看B tree和B+tree的变化过程

设置好阶数,一个节点,到达指定阶数,再添加时便会裂变,将中间元素上移。

B+树与B树的不同就是,B+树裂变后,元素依然会保留住在叶子节点里,然后所有的叶子节点形成链表。

在MySQL里,有进行优化

增加一个指向相邻叶子节点的链表指针,形成带有顺序指针的B+Tree,提高区间访问性能

Hash

出现hash碰撞的解决过程就是类似Java里HashMap

Innodb存储引擎选择使用B+Tree索引结构
索引分类

聚集索引,叶子节点存放行数据

二级索引是返回对应的主键,再由主键去进行查询过程(聚集索引就是直接这个过程了)——回表查询

索引语法
性能分析——查看执行频次(SQL优化确定)

进行SQL优化前,需要通过了解,性能影响集中体现在哪个环节,以便更好地进行SQL优化

1)SQL执行频率

可以看出,该表在select的访问频次最多,那么SQL优化便可在这入手

2)慢查询日志

查一下哪些查询语句运行比较慢

3)profile详情
4)explain执行计划

一般用主键索引和唯一索引,会出现const

用非唯一索引,会出现ref,

尽量避开all,全表扫描!

重点关注type,possible_keys,key,key_len

3.5MySQL优化

1)插入数据insert优化

主键顺序插入性能高于乱序插入

2)主键优化
a.页分裂

a.a主键顺序插入

a.b.主键乱序插入(会发生页分裂)

e.g想要插入50,但第一页位置不够

因为第一页位置不够大,放不下,因此将第一页面中间切开,与新加的50插入到新的一页,再把第三页排到第二页,保持有序

b.页合并:
3)order by优化

今天先到这里...见下章3.24记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值