大数据HCIA笔记1

devtools/2024/11/30 9:00:46/

概述

当下主流的流计算使用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/devtools/138147.html

相关文章

2024-2025 ICPC, NERC, Southern and Volga Russian Regional Contest(cf)(个人记录)

A: 思路&#xff1a;一开始有点懵逼&#xff0c;理解错题意了}&#xff0c; 由于是顺序分配&#xff0c;因此前面的人可以选择的条件更多&#xff0c;后面的人更少&#xff0c;我们从后向前遍历即可 #include<bits/stdc.h>using namespace std;typedef long long ll; ty…

github webhooks 实现网站自动更新

本文目录 Github Webhooks 介绍Webhooks 工作原理配置与验证应用云服务器通过 Webhook 自动部署网站实现复制私钥编写 webhook 接口Github 仓库配置 webhook以服务的形式运行 app.py Github Webhooks 介绍 Webhooks是GitHub提供的一种通知方式&#xff0c;当GitHub上发生特定事…

Leetcode(区间合并习题思路总结,持续更新。。。)

讲解题目&#xff1a;合并区间 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c; 并返回一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间。示例 1&#xff1a;输入&a…

windows10桌面鼠标右键出现卡顿解决方法 - 副本

步骤如下&#xff1a; 1、按下“WinR” windows10鼠标点击右键出现卡顿的解决方法就为大家介绍到这里了。遇到类似问题的朋友&#xff0c;不要太过紧张&#xff0c;只要按照上面步骤操作一遍就好了。组合键打开运行&#xff0c;输入“regedit”点击确定打开注册表编辑器&…

Flink四大基石之State

State state 可以理解为-- 历史计算结果 有状态计算和无状态计算 无状态计算: 不需要考虑历史数据, 相同的输入,得到相同的输出!如:map, 将每个单词记为1, 进来一个hello, 得到(hello,1),再进来一个hello,得到的还是(hello,1) 有状态计算: 需要考虑历史数据, 相同的输入,可…

HTTP(网络)

目录 1.Http的基本代码 1.1 HttpServer.hpp 1.2 简单测试一下 1.3 用telnet测试一下 1.4 用浏览器访问 1.5 返回相应的过程&#xff08;网页版本&#xff09;​编辑 1.5.1 再次用浏览器访问 1.6 返回相应的过程&#xff08;文件版本&#xff09; 1.6.1网页 1.6.2 测试 …

亚马逊开发视频人工智能模型,The Information 报道

根据《The Information》周三的报道&#xff0c;电子商务巨头亚马逊&#xff08;AMZN&#xff09;已开发出一种新的生成式人工智能&#xff08;AI&#xff09;&#xff0c;不仅能处理文本&#xff0c;还能处理图片和视频&#xff0c;从而减少对人工智能初创公司Anthropic的依赖…

鸿蒙技术分享:Navigation页面管理-鸿蒙@fw/router框架源码解析(二)

theme: smartblue 本文是系列文章&#xff0c;其他文章见&#xff1a;鸿蒙fw/router框架源码解析&#xff08;一&#xff09;-Router页面管理 鸿蒙fw/router框架源码解析 介绍 fw/router是在HarmonyOS鸿蒙系统中开发应用所使用的开源模块化路由框架。该路由框架基于模块化开…