- 博客(204)
- 资源 (1)
- 收藏
- 关注
原创 hive 常用配置-配置文件
hive数据在HDFS上的存储位置。hiveserver2操作日志位置。TODO:操作日志干嘛用的?hive下spark相关配置。hive thrift服务。命令行显示当前数据库。
2024-06-17 09:08:18
278
原创 hive 常用配置-应用相关
动态分区(可通过这个语句查看:set hive.exec.dynamic.partition;(如果自动分区数大于这个参数,将会报错)禁用hive矢量执行:不禁用可能会到来报错:java.lang.ArrayIndexOutOfBoundsException: 28配置hive支持update、delete操作日志相关。
2024-06-17 09:08:03
279
原创 hive锁机制
参考文档:https://www.docs4dev.com/docs/zh/apache-hive/3.1.1/reference/Materialized_views.html。开发一个类,实现org.apache.hive.service.auth.PasswdAuthenticationProvider接口,并重写Authenticate方法。在配置文件中开启自定义权限校验,并配置hive.server2.custom.authentication.clas指向自定义的权限校验类。
2024-06-17 09:07:49
487
原创 hive 基础知识
Hive的优缺点:优点:o操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)。o避免了去写MapReduce,减少开发人员的学习成本。oHive的执行延迟比较高,因此Hive常用于数据分析,对实时性要求不高的场合。oHive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高。oHive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。缺点:oHive的HQL表达能力有限迭代式算法无法表达。
2024-06-17 09:07:35
872
原创 hive权限控制
将test 表的 S1 列的读权限授权给role_name (TABLE也可以不写)#回收role_name对数据库db_name的SELECT 权限。#将role_name 权限给予user_group用户组。#回收role_name对表test的SELECT 权限。#查看role_name 在数据库db_name中权限。#将role_name 权限给予user_name用户。#查看role_name 在表test中的权限。#查看某个用户组下所有赋予的role权限。#查看某个role下的权限信息。
2024-06-17 09:07:20
142
原创 hive使用经验-爬坑
表现:建了一个ORC表,插入一行数据,添加一列,修改数据,最后再查询数据。如果所在机器的hive-site.xml上没有上面面的配置,那么启动hiveserver2的时候就不会去连接metastore,这个时候hiveserver2进程内部会自己维护metastore相关的功能。也就是说:在没有配置metastore的thrift链接的时候,hiveserver2自己就会充当metastore的角色,自己完成与元数据的交互。2.ORC存储格式的表,在新增字段时,会有问题。4. sql开发注意事项。
2024-06-16 20:29:04
264
原创 hive数据倾斜相关
数据倾斜优化hive的大部分优化都跟数据倾斜有关系,分为join相关、join不相关两种方式数据倾斜在代码上可能出现的地方:1、做join的时候select …卖家的二八原则,可能有些卖家有成百上千万的买家,在按卖家ID做关联的时候,会涉及到shuffle,就会出现数据倾斜2、做group by的时候hive优化的几点思路:是否可以从dw层获取数据,而不是自行到ods层加工考虑是否真的需要扫描那么多分区,计算周指标就不需要去扫描一年的分区。
2024-06-16 20:28:36
706
原创 hive 实战性能调优
该案例演绎的是用子查询代替count(distinct),避免因数据倾斜导致的性能问题。o分解count(distinct)的SQL优化(使用子查询)通过SQL-hint语法,实现对计算引擎执行过程的干预;通过数据库开放的一些配置开关,实现对计算引擎的干预。通过改写SQL,实现对计算引擎执行过程的干预;o使用grouping sets代替union。–统计不同年龄段,考取的不同分数个数。
2024-06-16 20:28:19
175
原创 hive 元数据
sds 保存文件存储的基本信息,如输入格式、是否压缩等 OUTPUT_FORMAT varchar(4000) 文件输出格式 org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat。partitions 表分区的基本信息,比如分区名 year=2019/month=07/day=22 PART_NAME varchar(767) 分区名 hour=15/last_msisdn=0。
2024-06-16 20:28:02
673
原创 hive中各个概念对比
Hive中指定了sort by,那么在每个reducer端都会做排序,也就是说保证了局部有序好处是:执行了局部排序之后可以为接下去的全局排序提高不少的效率(其实就是做一次归并排序就可以做到全局排序了。ORDER BY 会对输入做全局排序,因此只有一个 Reduce(多个 Reduce 无法保证全局有序)会导致当输入规模较大时,需要较长的计算时间,cluster by的功能就是distribute by和sort by相结合(根据指定字段输出到不同文件里,然后对各个文件里的数据排序)
2024-06-16 20:27:46
222
原创 hive DDL 语句
ShowDescribe在hive中DATABASE|SCHEMA是等效的,可以相互替代oRESTRICT: 默认值,在数据库中存在表的时候会失败,但如果是手动复制到该数据库下的,因为元数据中并没有相关信息,所以照样可以删除成功oCASCADE: 不管是否库中有表,全部删除。
2024-06-16 20:17:47
904
原创 hive 堆内存溢出 配置
堆内存溢出可以在yarn-site.xml中设置相关参数##允许最大MapReduce字节数2048##调度器 允许最大调度内存是2个G2048##虚拟内存是所占物理内存的倍数 2048 * 2.12.1。
2024-06-16 20:16:32
129
原创 hive 数据及更新策略思考
(1)表的定位存的是所有金牌用户那么就应该是全量表:app_api_gold_user_info_df。(2)如果定位是所有用户的金牌信息,那么app_api_user_gold_info_df (3)如果表定位是所有用户存在金牌信息的,那么app_api_user_has_gold_info_di 一般也不这么设计 (4)如果定位是金牌用户的金牌变更信息,那么app_api_gold_user_change_detail_di。o当天更新表的所需要包含的所有对象的所有数据,则为全量。
2024-06-16 20:16:14
140
原创 hive sql 功力提升
知识点:执行顺序上,group by 执行后 having,之后就会执行 distribute by 或者 cluster by。核心思路:将能合并的数据分组,而分组的关键是找到分组的起点(在这里是起始时间),之后判断当前数据是否要和上一条数据合并。– 当前数据:判断是否为新的起点,如果时间上有断点,那就是新的起点,否则不需要。因为要合并的那条数据是0,结合起点标识,就可以将数据分组。需求描述:将一组切片数据,按时间顺序存到array中,并给到下游消费。需求:将相同的多个时间段合并成一条数据。
2024-06-16 20:15:35
514
原创 hive 数仓开发实战
对于一个公司或者组织来说,使用数据的用户可能成百上千,如何降低大家对于数据使用的沟通成本、如何通过规范大家的行为来降低使用数据的风险,这些问题是必须加以考虑的。作为新的大数据架构,数据湖采集和存储一切数据,既包含结构化的数据也包含非结构化(如语音、视频等)和半结构化的数据(如JSON 和XML 等),既包含原始数据又包含经过处理的、集成的数据。数据湖鼓励分析师和数据科学家对原始数据在分析沙箱中进行探索、研究、实验,对于有价值的数据,再和数据开发、管理团队一起将其转为更容易操作和使用的数据。
2024-06-16 20:11:13
1578
原创 hive beeline 的使用
beeline -n xxx 指定用户之后,默认也会把任务提交到yarn的队列:root.users.xxx。
2024-06-16 20:08:24
702
原创 hive问题排查和调优思路
第一,选择性能评估项及各自目标,常见的评估性能指标有程序的时延和吞吐量;首先,所有调优都是相对的(要求3小时,实际2小时,看似慢也能满足要求)第二,如果系统是由多个组件和服务构成,需要分组件和服务定义性能目标;第五,优化产生性能瓶颈的程序或者系统;第三,明确当前环境下各个组件的性能;第四,分析定位性能瓶颈;第六,性能监控和告警。
2024-06-16 20:07:52
99
原创 感受hive性能优化的多样性
分为两步:第一步,理解基本的MR 过程和原理,第二步,在日常编写SQL 的过程中,尝试将SQL拆解成计算引擎对应的算子, 拆解完和执行计划进行比对,还要和实际执行过程的算子比对,并思考自己拆解完后的算子与通过explain方式得到的算子的执行计划的异同。学习Hive 及其关联的几个组件之间的基本原理和各个组件之间的关系,并不断在练习中思考这些基本原理和性能的关系, 建立一个全链路的性能全局观。失败的优化:没有使用MULTI-TABLE-INSERT的写法,直接拆成多个简单sql,如下所示。
2024-06-16 20:06:34
249
原创 大数据面试常问问题
12、有两个集群,每个集群有3个节点,使用hive分析相同的数据,sql语句完全一样,一个集群的分析结果比另外一个慢的多,给出造成这种现象的可能原因?19、有一个1G大小的一个文件,里面每一是一个词,词的大小不超过16字节,内存大小限制大小1M,返回频率最高的50个词。你是推荐使用什么样的处理技术,或者说你是用什么样的技术处理呢?3、如何让一个网络爬虫速度更快、抽取更好的信息以及更好总结数据从而得到一干净的数据库?8、Spark和Hive的区别,以及Spark和Hive的数据倾斜调优问题?
2024-05-15 22:19:09
348
原创 大数据安全
hadoop中没有中央服务器来认证用户,也没有安全网关或者认证机制。被授权可以访问NameNode的用户理论上能够删除数据或者假冒其他用户访问他们不应该访问的数据。hadoop中也没有任何用于角色分配或对象层级访问的机制。客户端使用它们的凭据解密TGT,并使用TGT从票证授予服务器(TGS)获取服务票证。Kerberos是一个开源的网络身份验证协议,它假设主机是可信任的(但网络不是)认证服务器授予客户端要求访问Hadoop集群的授权票据(TGT)客户端使用TGS授予的服务票据来访问Hadoop集群。
2024-05-15 22:16:11
243
原创 大数据 值班机制
埋点表产出时间较晚,归因:热点事件导致数据上涨,链路上每个节点时长均有所增加。上游截止时间未成功(等待资源获取)剔除重复的底表数据,重跑成功。nua队列被误用,任务被阻塞。出现重复数据,强校验不通过。指标平台实例超时未运行成功。拉oncall切换队列重跑。业务下线,任务置为空跑。
2024-05-15 22:12:18
336
原创 Hadoop运维经验
情景描述:总共7台机器,每天几亿条数据,数据源->Flume->Kafka->HDFS->Hive 面临问题:数据统计主要用HiveSQL,没有数据倾斜,小文件已经做了合并处理,开启的JVM重用,而且IO没有阻塞,内存用了不到50%。(a)yarn.nodemanager.resource.memory-mb 表示该节点上YARN可使用的物理内存总量,默认是8192(MB),注意,如果你的节点内存资源不够8GB,则需要调减小这个值,而YARN不会智能的探测节点的物理内存总量。如果MR造成系统宕机。
2024-05-15 22:09:34
937
原创 hadoop 集群 环境搭建后的测试样例
# 1.使用RandomWriter来产生随机数,每个节点运行10个map任务,每个map产生大约1G大小的二进制随机数。# 集群写性能:向HDFS集群写10个128M的文件。# 集群读性能:读取HDFS集群10个128M的文件。# 使用Sort程序评测MapReduce。## 3. 验证数据是否排好序。## 2. 执行Sort程序。# 执行wordcount。测试spark:计算pi。
2024-05-15 22:07:33
268
原创 hadoop 高级话题
如果你的节点CPU核数不够8个,则需要调减小这个值,而YARN不会智能的探测节点的物理CPU总数。表示该节点上YARN可使用的物理内存总量,默认是8192(MB),注意,如果你的节点内存资源不够8GB,则需要调减小这个值,而YARN不会智能的探测节点的物理内存总量。单个任务可申请的最少物理内存量,默认是1024(MB),如果一个任务申请的物理内存量少于该值,则该对应的值改为这个数。单个任务可申请的最小虚拟CPU个数,默认是1,如果一个任务申请的CPU个数少于该数,则该对应的值改为这个数。
2024-05-15 22:01:54
270
原创 1. Hadoop架构介绍
也就是yarn.nodemanager.resource.memory-mb/yarn.scheduler.minimum-allocation-mb得到一个节点上最多运行的容器数(每个容器运行单个map或reduce任务)--比如这里就是文件类型为HDFS-->--指定了本地文件系统和HDFS的基本临时目录,hadoop的很多配置都是用这个参数的路径作为基础路径-->客户端的比如mapred-site.xml文件中配置的参数具有再次一级优先级【也就是我们自己的项目工程中的配置文件)一次写入,多次读取。
2024-05-15 21:54:51
1030
原创 Hadoop企业优化
Task超时时间,经常需要设置的一个参数,该参数表达的意思为:如果一个Task在一定时间内没有任何进入,即不会读取新的数据,也没有输出数据,则认为该Task处于Block状态,可能是卡住了,也许永远会卡住,为了防止因为用户程序永远Block住不退出,则强制设置了一个该超时时间(单位毫秒),默认是600000。一个ReduceTask可使用的资源上限(单位:MB),默认为1024。每个Reduce Task最大重试次数,一旦重试参数超过该值,则认为Map Task运行失败,默认值:4。规避使用reduce。
2024-05-15 21:49:24
772
原创 Flume的Source,Sink,Channel的作用?你们Source是什么类型?
根据Flume的架构原理,Flume是不可能丢失数据的,其内部有完善的事务机制,Source到Channel是事务性的,Channel到Sink是事务性的,因此这两个环节不会出现数据的丢失,唯一可能丢失数据的情况是Channel采用memoryChannel,agent宕机导致数据丢失,或者Channel存储数据已满,导致Source不再写入,未写入的数据丢失。增加Source个(使用Tair Dir Source时可增加FileGroups个数)可以增大Source的读取数据的能力。
2024-05-14 20:43:33
270
原创 shard&replica机制再次梳理以及单node环境中创建index图解
(8)primary shard不能和自己的replica shard放在同一个节点上(否则节点宕机,primary shard和副本都丢失,起不到容错的作用),但是可以和其他primary shard的replica shard放在同一个节点上。(7)primary shard的默认数量是5,replica默认是1,默认有10个shard,5个primary shard,5个replica shard。(5)replica shard是primary shard的副本,负责容错,以及承担读请求负载。
2024-05-06 21:25:41
314
原创 document的全量替换、强制创建以及图解lazy delete机制
(3)es会将老的document标记为deleted,然后新增我们给定的一个document,当我们创建越来越多的document的时候,es会在适当的时机在后台自动删除标记为deleted的document。(2)document是不可变的,如果要修改document的内容,第一种方式就是全量替换,直接对document重新建立索引,替换里面所有的内容。(1)创建文档与全量替换的语法是一样的,有时我们只是想新建文档,不想替换文档,如果强制进行创建呢?1、document的全量替换。
2024-05-06 21:25:12
158
原创 document的_source元数据以及定制返回结果解析
source元数据:就是说,我们在创建一个document的时候,使用的那个放在request body中的json串,默认情况下,在get的时候,会原封不动的给我们返回回来。定制返回的结果,指定_source中,返回哪些field。1、_source元数据。
2024-05-06 21:24:44
151
原创 document id的手动指定与自动生成两种方式解析
一般来说,是从某些其他的系统中,导入一些数据到es时,会采取这种方式,就是使用系统中已有数据的唯一标识,作为es中document的id。举个例子,比如说,我们现在在开发一个电商网站,做搜索功能,或者是OA系统,做员工检索功能。如果说,我们是在做一个系统,这个系统主要的数据存储就是es一种,也就是说,数据产生出来以后,可能就没有id,直接就放es一个存储,那么这个时候,可能就不太适合说手动指定document id的形式了,因为你也不知道id应该是什么,此时可以采取下面要讲解的让es自动生成id的方式。
2024-05-06 21:24:27
217
原创 博客摘录「 数据仓库 - hive - 日期维表,日,周,月份,年份,节假日,工作日」2024年4月15日
nt_year}','yyyy'))),',')) tf AS pos,val ) t2_date ) t1_date) ,v_special_day_cn AS ( SELECT t1_specal_day.special_day ,t1_specal_day.is_day_off FROM atta_dw_marketing${atta_env}.dwd_parse_mkt_special_day t1_specal_day WHERE t1_specal_day.area_code = 'CN' AN
2024-05-06 21:24:07
1164
2
原创 上机动手实战演练mget批量查询api
可以说mget是很重要的,一般来说,在进行查询的时候,如果一次性要查询多条数据的话,那么一定要用batch批量操作的api。就是一条一条的查询,比如说要查询100条数据,那么就要发送100次网络请求,这个开销还是很大的。如果进行批量查询的话,查询100条数据,就只要发送1次网络请求,网络请求的性能开销缩减100倍。(3)如果查询的document是一个index下的不同type种的话。(4)如果查询的数据都在同一个index下的同一个type下,最简单了。(2)mget批量查询。(1)一条一条的查询。
2024-04-14 20:12:05
218
原创 上机动手实战演练基于_version进行乐观锁并发控制
基于最新的数据和版本号,去进行修改,修改后,带上最新的版本号,可能这个步骤会需要反复执行好几次,才能成功,特别是在多线程并发更新同一条数据很频繁的情况下。(4)另外一个客户端,尝试基于version=1的数据去进行修改,同样带上version版本号,进行乐观锁的并发控制。同时带上数据的版本号,确保说,es中的数据的版本号,跟客户端中的数据的版本号是相同的,才能修改。(5)在乐观锁成功阻止并发问题之后,尝试正确的完成更新。(3)其中一个客户端,先更新了一下这个数据。(1)先构造一条数据出来。
2024-04-14 20:10:05
286
原创 上机动手实战演练基于groovy脚本进行partial update
如果指定的document不存在,就执行upsert中的初始化操作;如果指定的document存在,就执行doc或者script指定的partial update操作。es scripting module,我们会在高手进阶篇去讲解,这里就只是初步讲解一下。es,其实是有个内置的脚本支持的,可以基于groovy脚本实现各种各样的复杂操作。基于groovy脚本,如何执行partial update。(4)upsert操作。(3)用脚本删除文档。
2024-04-14 20:07:53
318
fiddler 安装工具包,可以用
2019-09-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人