大数据HCIA笔记1

ops/2024/11/30 5:32:14/

概述

当下主流的流计算使用Flink

Hadoop

Hadoop的核心组件:HDFS(分布式文件系统)、Yarn(资源调度)、MapReduce(批量计算引擎)

HDFS

HDFS -- Hadoop Distributed File System

HDFS核心进程(组件):NameNode,DataNode

NameNode:名称节点 主要存放元数据 eg文件的名称 路径 大小 副本数量 权限 所属用户等

DataNode:数据节点 存放数据本身 打开文件看到的内容

随着操作次数的增加,Editlog占用的存储空间会越来越大,为了保证元数据不丢失,Editlog和FsImage会定期合并

元数据既保存在内存中也在磁盘中 HDFS服务启动后会把磁盘中的元数据加载到内存中

200MB的文件,在HDFS中通过两个block块[抽象的块]保存。每个block都是128MB

第一个块:128MB

第二个块:也是128MB 虽然block显示128MB,其实只会占用真实大小,也就是72MB

硬盘容量1T,但是实际能用的没有这么多,block id、datanode都会占用存储空间

单节点容易出现单点故障,企业一般用HA(会用到zookeeper)

元数据持久化:为了保证内存的元数据不丢失,会定时将内存的元数据保存到磁盘对应路径

HDFS联邦(Federation):为了解决nn横向扩展能力 因为nn保存了很多元数据,但是nn的内存是有限的,为了能够存放更多的元数据,因此使用联邦机制

服务器数量更多,应用于超大规模的数据场景 各nn负责自己所属目录(与Linux挂载磁盘到目录类似),各nn间元数据不共享,每个nn都有对应的standby

对客户端来说无感知

HA和联邦的关系

数据副本机制:为了保证数据不丢失

数据很重要就多备份,但都备份到一个地方和没做一样(上图3个机架15台服务器)

上图反映的HDFS副本基本策略是:

第一个副本存放在与客户端最近的节点(服务器)

第二个副本存放在与客户端相邻机架的任意一个节点

第三个副本存放在与客户端相同机架的任意一个节点

其他的副本根据节点的容量任意存放

数据存储分为:集中式存储,分布式存储

集中式存储主要通过raid技术,保证数据安全性

分布式存储主要通过block块存储的方式保证数据安全性

一个文件200MB,由两个块组成,一个block128MB,另一个72MB(逻辑大小128),那么每一个块都会有4个副本

当设定文件的副本数量是4个时,假如有一个或多个副本出现损坏,HDFS能够定时监控到,并将缺失的副本数根据副本存放策略进行补充

HDFS通过distance来判断副本距离客户端的远近,为了能更快的访问到需要的数据,所以会判断距离,优先将距离近的数据提供给客户端

安全模式:两种情况会出现安全模式

第一种在HDFS启动时,元数据还没有加载到内存中,直到元数据大约有99.98%都成功加载到内存时,才会退出安全模式

第二种当datanode节点损坏数量变多

在linux操作系统上对HDFS的操作

HDFS dfs ..

Zookeeper

分布式协调服务

HA中组件多了两个进程:

JN:实时同步两个namenode元数据信息,保证元数据的一致性

ZKFC:实时监控active namenode状态,当发现active nn出现异常情况,就会将standby nn马上切换为active状态,对外提供服务

启动时选举出leader

容灾哪里:不挂一半就没什么问题(建议奇数台 奇偶数容灾能力一样)

HBase

列式数据库 实时响应速度毫秒级

HBase的元数据存储在HBase表中的元数据表(metadata meta表)

实时检索项目一般使用hbase 通过hbase和elasticsearch结合起来实现

行列 列族 行键

key是字典序 查找看key 可以存稀疏数据

插入的数据需要指定rowkey info(列族) name(列限定符)

HReginServer中的核心组件: HLog:预写日志WAL,所有写入hbase的数据都会写入hlog中

memStore:写入内存,hbase在写入数据时,会直接写入到内存,当数据写入到内存成功就会给客户端返回写入成功的信息

HRegin:用来保存hbase的数据

store:和列族有对应关系

storeFile(HFile):写入磁盘,将hbase数据写入磁盘,是为了数据持久化,当内存数据占比80%时,会自动启动flush操作,将内存的数据刷入磁盘,刷入成功后,会将hlog这部分的数据删除

zookeeper帮助选举出一个hmaster(管理用户对表的操作、实现不同hregionserver间的负载均衡、在region分裂或合并后负责重新调整region分布、对发生故障失效的hrs上的r进行迁移)作为集群的总管,并保证在任何时刻总有唯一一个hmaster在运行,这就避免了hmaster的‘单点失效’问题

hregionserver是hbase最核心的模块,负责存储、维护hregion,处理来自client的读写请求

按行键索引,搜索很快

拆分策略默认c.. 单region上限10G

热点region(行键的设置策略):

Hive

数据分析(数仓)

HDFS分布式文件系统 用于海量数据的存放

HBase列式数据库(no sql)解决了HDFS读写数据较慢的缺点,支持毫秒级别的读写

而Hive作为数据仓库,仍然依赖于Hadoop组件,主要作用是数据分析

HDFS中的数据,程序员通过Java编程,编写MapReduce程序进行数据分析,但会编程的工程师占比不高,会sql的相对较高

hive与hadoop之间的关系

hive的元数据与数据是解耦合的,元数据和数据不在一个地方存放

hive的元数据默认保存在derby数据库,derby是一个轻量型的数据库,小到同时只允许一个客服端登录,不适合生产环境,所以使用其他关系型数据库代替derby保存元数据

通常使用MySQL作为hive存放元数据的数据库,hive的元数据有表名,表中数据存放的路径等

Hive内部表与外部表的区别:

内部表:在创建时 是create table

在删除表时,表结构和表中数据都会被清除

外部表:在创建时 时create external table

在删除表时,只会删除表结构,表中数据仍然存在

在加载原始数据时,都会使用外部表 在加载原始数据时使用外部表可以保护数据的完整性和安全性,并提高数据处理的效率

在进行数据分析时,一般使用内部表 在进行数据分析时使用内部表则可以提供更便捷的数据操作、更强的事务支持和更高的数据完整性保障

数仓分层:ODS(original)原始数据层(读取ODS层数据用的都是外部表),DWD(wish)数据清洗层,DWS(server)轻度汇总层,ADS(analysis server)高度汇总层(需求分析 年度 季度汇总 用内部表)

SQL语句分类:

DDL语句 对表,数据库本身的CRUD

DML语句 数据导入导出,将数据导入表中,或将表中的数据导出到HDFS或local

DQL语句 数据查询,select、where、join、group by having、order by、row number()、union等

DCL语句 与授权、安全相关语句,grant、revoke等

Spark

(在华为上只支持spark on Yarn)

现在的项目比较少用MapReduce了,多用Spark处理离线,用Flink处理实时(Flink流批一体)

spark(原生语言scale 执行效率最快)是一种基于内存的快速、通用、可扩展的大数据计算引擎(MapReduce基于磁盘)

目前用的比较多的是批处理(RDD弹性分布式数据集 并行只读),交互式查询(SQL、DataFrames、Datasets)

spark打造了一站式解决平台,包含了 批处理、实时处理、图处理、机器学习

批处理 spark core,它的核心概念就是RDD,RDD是不可变的,能够平行计算,因此比常量的效率高。要进行数据分析时,都需要先将数据转换成RDD,spark实现了一些方式 将数据转换为rdd,eg通过txtfile可以将hadoop读取的数据转换为rdd,可以将数组array、列表list、元组tuple、集合collection转换为rdd进行计算

实时处理,以前是spark streaming,现在是被structured streaming替代,因为spark streaming的实时设计理念是批处理,效率不高,已经停止运维

图计算,spark用于图和图并行计算的一个新组件 在高层次上,GraphX通过引入一个新的图抽象扩展spark rdd(一个有向多图 有向多图是指一个图中可以包含多个方向相同的边,即从同一个起点到同一个终点可以有多条边。这种图在描述某些复杂关系时非常有用,比如社交网络中的朋友关系、交通网络中的路线等),其属性附加到每个顶点和边上

交互式查询spark sql,通过sql形式进行计算和分析,类似于Hive;能够连接Hive或者HBase,直接读取它们的数据,进行计算 核心是DataFrames

MLlib是spark的机器学习库,目标是使机器学习具有可扩展性和简单性,在高层次上提供了算法库、特征化、pipeline、持久性和实用程序等工具

daytona gray 软件排序基准规则

spark比mr快的原因:

spark基于内存存放数据,比磁盘快

spark的数据都在rdd,rdd是只读、并行的 数据不可变 效率会提升

血统机制 rdd之间有依赖机制 当某个rd出现故障,并不需要从头对这个rdd进行计算,只需要从上一个rdd开始计算即可

spark任务在执行前,会划分stage,相当于提前做规划,知道哪些部分可以同时执行,哪些部分需要串行执行 并行的部分会提高效率(涉及宽窄依赖)

stage的划分:

窄依赖:一对一

宽依赖:一对多

ClickHouse


http://www.ppmy.cn/ops/137842.html

相关文章

【MYSQL数据库相关知识介绍】

MySQL 在我们日常技术中是一个广泛使用的开源关系型数据库管理系统,所以作为测试同学,掌握mysql的相关知识是必不可少的技能之一,所以小编从软件测试的角色出发,来整理一些跟测试相关的知识,希望能够帮助到大家。 一、…

深入解析 DTO 模式及在 C# 中的应用

在现代软件开发领域,尤其是构建企业级应用、分布式系统以及遵循分层架构设计理念的项目里,数据传输对象(Data Transfer Object,简称 DTO)模式发挥着不可或缺的作用。它犹如一座桥梁,巧妙地跨越系统各层级、…

拥抱 OpenTelemetry:阿里云 Java Agent 演进实践

作者:陈承 背景 在 2018 年的 2 月,ARMS Java Agent 的第一个版本正式发布,为用户提供无侵入的的可观测数据采集服务。6 年后的今天,随着软件技术的迅猛发展、业务场景的逐渐丰富、用户规模的快速增长,我们逐渐发现过…

力扣题库Day4(持续更新中...)

2024/11/29 回文数: 给你一个整数x,如果x是一个回文整数,返回true;否则,返回false。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 class Solution {public boolean isPalindrome(int x) {if(x &l…

cocos creator 3.8 俄罗斯方块Demo 10

这里的表格是横行数列,也就是x是行,y是列,不要当x/y轴看。 1-1012-1012-1-1[-1,0]0[0,-1][0,0][0,1][0,2]0[0,0]11[1,0]22[2,0] -1012-1012-1-1[-1,0]0[0,-1][0,0][0,1][0,2]0[0,0]11[1,0]22[2,0] 2-1012-1012-1[-1,-1][-1,0]-1[-1,-1][-1…

银联大数据面试题及参考答案

说说 Hadoop 的基本组件 Hadoop 主要由以下几个基本组件构成: HDFS(Hadoop Distributed File System):它是一个分布式文件系统,能将文件切分成多个数据块,并存储在不同的节点上。具有高容错性,可在低成本的硬件上搭建,适合存储海量数据 。例如,互联网公司存储用户的行…

Linux环境变量(添加环境变量、修改系统环境变量、内建命令和非内建命令)

Linux环境变量(添加环境变量、修改系统环境变量、内建命令和非内建命令) 1. 环境变量的介绍 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数。环境变量是在操作系统中一个具有特定名字…

28.UE5实现对话系统

目录 1.对话结构的设计(重点) 2.NPC对话接口的实现 2.1创建类型为pawn的蓝图 2.2创建对话接口 3.对话组件的创建 4.对话的UI设计 4.1UI_对话内容 4.2UI_对话选项 4.3UI_对话选项框 5.对话组件的逻辑实现 通过组件蓝图,也就是下图中的…