作者:tannn2502886701 | 来源:互联网 | 2023-08-11 17:22
zookeeper:主从架构 leader:集群当中的主节点,主要用于处理事务性的操作请求(增删改) follower:从节点,非事务操作,查询,
zookeeper:主从架构
leader:集群当中的主节点,主要用于处理事务性的操作请求(增删改)
follower: 从节点,非事务操作,查询,投票选举
节点模型: 永久节点 临时节点 序列化节点 可以组合成四类节点 永久节点 临时节点 永久序列化节点 永久临时节点
临时节点:一旦客户端断开连接,临时节点消失
znode:zookeeper当中每一个节点称之为一个znode,znode兼具有文件夹和文件的特性
watch机制:监听器机制,一次性,只能 监听一次节点的变化,如果需要持续的监听,需要监听到之后重新注册监听器
HDFS:
NameNode : 主要用于存储元数据信息 fsImage edits
DataNode : 主要用于出磁盘,存储数据
secondaryNameNode:辅助namenode管理元数据,合并fsImage和edits文件 。什么时候合并:1.时间长短 2。edits文件的大小
journalNode:同步多个NameNode之间的元数据信息,保证每个NameNode看到的元数据都是一致的
zkFailoverController:nameNode高可用的时候的守护进程,监控namenode的进程是否存在
maptask的机制:溢写的过程,mapTask处理完成之后的数据,经过一些列的步骤,分区,排序,规约,然后将数据写入到环形缓冲区,
环型缓冲区就是一个数组,里面用了三个指针来执行我们的数据的写入,环形缓冲区的默认大小100M,默认环形缓冲区的
阈值默认是0.8,写到80M的时候,重新启动一个线程,将数组当中的数据,写入到磁盘,磁盘当中会落下大量的小文件,
这些小文件还需要进行合并,去往相同reduce的数据,合并到一起,等着reduce阶段来拉取数据
reduceTask的机制:通过网络拷贝,将所有mapTask属于自己的数据,拷贝到自己的机器上面来(涉及到网络传输),数据拷贝过来之后,
加载到内存当中来做全局的排序,排序完成之后,调用reduce逻辑,reduce处理完成之后,继续写出去到磁盘上面去
数据的shuffle阶段: shuffle阶段的步骤:分区,排序,规约,分组都是属于shuffle阶段
map阶段的shuffle:分区,排序,规约 ,溢写,小文件合并
reduce阶段的shuffle:分组,网络拷贝,内存当中每一个reduce的内部排序
hive:sql语句的简化mapreduce 四种存储格式 大致分为行式存储(常用) 列式存储 查询快 相同的数据存储在一块磁盘
常用snappy压缩方式 原始数据text 输出
元数据信息在mysql上 数据存在hdfs上 是MySQL与hdfs的映射关系
调优 fetch的抓取 避免mr的执行
本地执行小任务本地执行
表的优化 开启mp的聚合 join
group by 尽量在数据端进行聚合 代替 count distinct 子查询
任何时候避免笛卡尔积
分区裁剪 列裁剪
动态的分区调整 将我们一个分区表的数据查询出来放到另一个分区里去
尽量避免数据的倾斜 多产生一个mp任务
ma’ptask和reduce的个数设置
并行执行
严格模式 order by 必须带limit
JVM:的重用 map结束不要释放资源留给reduce
关闭推测的执行
储存于压缩的结合
azakaban 定时任务的执行 同类 ooize
sqoop 数据的导入和到出 由hive 到 sql或者oracle 反之也可以 关系型或者非关系型数据库 将表可以导入中间表 在导入mysql可以防止数据的破环
flume : web nginx tomcat 的日志收集 即收集采集数据
如何检测flume的正常执行
shell脚本的监控数据源和目的地的检测 高可用
flume 和canal 如何采集mysql的数据库当中的数据
sshXcute.jar goole的jar包 在ideal执行控制
spring的配置:
包扫描 数据库链接池 事务管理 spring于mybaties
springMVC:
包扫描 处理器映射器 《mvc:annotation—》 处理器适配器 资源试图解析器 (前后缀)
web.xml:
监听器tomcat启动 加载 前端视图控制器
mybatis: 只是一个表头
测试写入速度
向HDFS文件系统中写入数据,10个文件,每个文件10MB,文件存放到/benchmarks/TestDFSIO中
hadoop jar /export/servers/hadoop-2.6.0-cdh5.14.0/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.6.0-cdh5.14.0.jar TestDFSIO -write -nrFiles 10 -fileSize 10MB
完成之后查看写入速度结果 一般在20M左右
清除测试数据
hadoop jar /export/servers/hadoop-2.6.0-cdh5.14.0/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.6.0-cdh5.14.0.jar TestDFSIO -clean
1 客户端往liunx系统存文件 硬盘不够用 加服务器
2 文件存放在哪里 记录元数据,确定我们的数据存放在那台的服务器
3 文件太大读取,复制,上传下载很慢 分块存储 将一个大的文件划分block块
4 如何保证所有的块都是好用的 备份存储 实现数据的高可用 进行一个或者多个备份
hadoop 元数据的存储 内存:操作快 容易丢失 和硬盘:数据库 操作速度慢 采用磁盘阵列 保证数据的不会丢失
元数据信息的磁盘保护 1 定期备份 2 磁盘阵列
mapReduce 的编程八部
map阶段:
1 读取文件 解析成key value对 k1 v1
2 自定义的map类 接受读取的k1 v1对,通过自定义的逻辑进行转换 新的k2 v2
shuffle:调优
3 分区
4 排序
5 规约
6 分组
reduce:
7 自定义reduce逻辑,接受k2 v2 (集合)定义的业务逻辑转换成k3 v3 主备输出
8 输出文件,将我们reduce处理完成之后的数据输出
matask 的机制: 溢写 经过三到六步写到缓冲区 即 :数组 三个指针组成 默认100M
阈值0.8 数据带到 硬盘
reduceTask 的机制:网络拷贝,将所有的lmapTask的数据拷到reduce 网络拷 带到内存
impala :号称大数据领域最快的sql工具)(短路读取) 是查询工具 基于内存 最少128G (不在硬盘读写)
实时计算及批量计算 支持hive的语法 (大多数)
与hive是紧耦合 依赖hive的metastore(hive的数据库和表)服务向impala发送信息 共享
两部分实现 :c++核心 java 底层
impala核心的进程 impala-server:从节点执行所有的查询 建议于所有的datanode安装在一起(方便读取)
impala-state-store:负责存储
impala-catalog:主节点保存元数据信息
hue: 大数据生态圈一个用户的接口框架,集成各式各样的框架 并且可以操作框架
hue==hadoop 使用hadoop的webhdfs
ooize: 类似azkaban 功能更强大 azkaban、中一个串联的出错,剩下的不能运行。ooize可以继续执行
所由的任务执行 都是通过 maptask来启动
workflow: 工作流 里面分多个action(开发语言xml) 一个acttion是一个工作任务调度
运行在tomcat里通过sqlDB 储存调度任务所有的任务调度 都是通过mapreduce执行
Coordinator:协作器 即 定时器
Bundle 多个Coorinators
kafka: 具有高的吞吐量,内部采用消息的批量处理,
zero-copy机制,数据的存储和获取是本地磁盘顺序批量操作,
具有O(1)的复杂度,消息处理的效率很高。
Hive中的 metastore 用来做什么的? 在impala中启动时执行
答:metastore是一套映射工具,将sql语句转换成对应的job任务去进行执行。
HadoopHA 集群中各个服务的启动和关闭的顺序?
答:zookerper , dfs , yarn , hbase .