- 博客(446)
- 问答 (7)
- 收藏
- 关注
原创 presto任务优化参数
0.142版本开始,presto跑任务提供了读取元数据上的优化,来提高效率,但是个人不建议用,因为如果操作的数据是空的,比如只有hive数据的物理路径被删除了,这个配置可能影响任务结果,而且在0.279版本修复了使用这个参数,对分区列聚合以及行字段元数据读取上的bug,bug导致查询结果错误,总之不建议轻易使用,知道有这么个配置当作逼不得已用的一个参数就行,用也在0.279之后用。presto最早的正式版本是0.8X,刚开始的时候是没有完整的集群资源管理组件的,所以对于大查询就临时搞了上面的配置。
2025-03-29 17:39:03
1014
原创 presto启动时 discovery server 报错 404
同步节点配置的时候,不要直接复用其他worker节点的配置就能避免这个问题。文件在改集群配置的时候是不是少了一个discovery服务为true的。这个问题很简单,你看一下集群主节点的。
2025-03-25 21:41:55
210
原创 spark写数据库用连接池找不到driver类
就想到一个妖点子,把mysql-driver包放在了spark的jars资源路径里面,当作引擎的class资源,果然运行之后问题就解决了。最近遇到一个很离谱的bug,在写spark代码把数据写到mysql的时候考虑到连接的开销,所以用了HikariCP连接池,但是无语的是程序执行死活加载不到mysql的Driver类,但是解压了jar看到mysql-conn包就在lib下面,版本也是5.x的没问题,还尝试了。,也没解决,倒腾了各种方式,网上也查到确实有人复现这个问题—》
2025-03-03 16:31:45
338
原创 linux中conda3安装
在激活环境的前后,你可以观察一下linux系统的PATH变量,你会发现,激活一个环境,其实是conda将对应环境的路径临时的加到了系统PATH变量的最前面,但是后使用一定会遇到和本地是否冲突的问题,比如本地和激活的虚拟环境中都存在python3,这种情况下,你可以用以下的方式解决。一定要关闭自动激活,你不关闭的话,conda的运行模式就比较奇葩,只要你激活了一个环境后,需要的第二次连接才会进入虚拟环境,而且往后连接服务器都会自动进入虚拟环境,很难受,关了以后就可以在当前连接会话中操作激活和关闭。
2025-02-26 21:56:09
443
原创 maven的打包插件如何使用
默认的情况maven项目不打第三方包的,想要打一个完整的包就需要,把下面的插件依赖导入pom。打完包后,除了原本的最小jar外,会有一个包名包含jar-with的jar。
2025-01-27 17:27:37
2111
原创 linux中如何后台运行一个命令并获取它的进程号
配合,nohup可以让你的进程生命周期不终止于本次客户端连接,但是它会忽略执行器返回的进程id,因此需要ps解析结果,如下。当然使用ps -aux或者ps -ef在获取进程id上都可以。如果你只是想简单的后台挂起一个程序你可以在命令的末尾加一个。获取linux执行器最后一个操作返回的进程id,如下。但,如果你是在写一个日常用的脚本,建议你使用。
2025-01-24 16:50:24
288
原创 Java如何向http/https接口发出请求
接口提供的方法,它主要用于访问https协议下的接口时,验证当前已和你建立连接的hostname(主机名)和连接的SSLSession(SSL会话)证书是否匹配,防止中间人攻击,比如可以如下操作。下,在具体使用时可以用如下代码,你可以把它封装成一个工具类。是X.509 证书的验证实现,通俗的讲是一个基础的证书,用Java发送web请求所用到的包都在。对于上面的代码,重点要说明的第一点是。是用来实现证书验证的类,
2025-01-21 16:39:06
1453
原创 linux如何并行执行某个单独命令
并行执行命令通常出现在同步某个文件这类涉及多个节点,且一起执行一般不会发生致命意外风险的操作,可以用linux自带的xargs命令完成操作。
2025-01-21 11:22:19
164
原创 github登录用的TOTP和恢复码都丢失了怎么办
从22年左右开始github的登录就需要用TOTP的一个6位秘钥做二次认证登录,如果在用的TOTP软件失效了,可以用github开启二次认证时下载的恢复码重置认证,但是如果你和我一样这两个东西都没了就只能用邮箱重置了,过程给大家分享一下。点击绿色按钮之后,会给你的邮箱发一个六位密码,按照提示输入之后,经历一番复杂的验证,最后还要经过三个工作日才可以恢复登录。所以还是提前下载并保存好恢复码,在认证软件失效时,以备不时之需,下载的位置在,账号设置中。最后,呼吁保存好你的恢复码,别和我一样,真的也是无语了!
2025-01-19 00:15:01
643
原创 spark任务优化参数
Hadoop_MRSpark_Corespark.executor.memory默认值1gspark.executor.cores默认值1核spark.executor.instances默认值2个spark.yarn.am.memory默认值512mspark.yarn.am.cores默认值1核Spark_SqlFlink_CoreFlink_Sql...
2025-01-17 18:36:59
2506
原创 Spark任务提交流程
spark的任务执行流程没有Hadoop那么绕,它的流程其实就是当你运行submit的的时候Driver会和Master进行交互,因为对于Spark来说Master是掌控集群资源的组件,和Hadoop的yarn是一样的作用,Master会通知有资源的服务器节点,去主动的和Driver交互,这一步也叫反向注册,其实说的高大上,说白了就是让服务器子节点和Driver去交互,Master不参与了,不过在Master通知服务器子节点和Driver反向注册的时候,会通知它们启动executor进程而Driver和.
2025-01-17 17:43:20
1600
1
原创 hive表修改字段类型没有级连导致历史分区报错
指字段的最新状态,默认只对往后的分区数据生效,而之前的分区保留历史元数据状态。好处就是修改语句的效率很快,坏处就是如果历史分区的数据还有用,那就回发生分区元数据和表元数据的不一致报错。1、如果你改的是一个全量表,此时没有级联的概念,你的修改最多的会导致数据改动时引擎发现已有数据类型和你要改的类型不一样,说白了就是无论做任何修改都要保证元数据的一致性。二:想要避免这样的问题,那元数据正确的改动方法,应该是使用hive的客户端,运行修改语句时,带上级连关键字CASCADE,如新增一个字段。
2025-01-16 15:52:43
498
原创 presto任务卡住不继续执行
3、是否有大量数据在同一个select中做成本很高的计算,比如多个字段在数据量本身很大的情况下在同一个select里面一起去重等,这种情况不止要减少计算的数据,还要将多个字段使用with as的方式分成多个临时表计算。1、检查你的数据切片是否导致任务的数据集很大,这种情况通常导致执行阶段出现压力异常问题,此时减少切片,分多次写入,或者用个中间表,分步聚合。当你的presto任务非直接报错,只是卡在了 XX% 这种运行状态不动时,有时伴随queryid旁边有黄色感叹号,如下。
2025-01-16 15:29:26
248
原创 presto不支持concat_ws
在sparksql/hive中,将一个数据集合已指定的分隔符拼接可以用。,但是在presto中没有这个函数,不过presto提供了一个集合方法。同样的对数据集去重可以用。如果你不需要去重就直接用。
2025-01-14 00:08:54
339
原创 presto资源组配置
通过hardCpuTime 和 cpuQuotaPeriod配置不同资源队列占有cpu资源的比例,如果将cpuQuotaPeriod配置为1小时,而当前集群有10个核的计算资源,这相当于集群总共有10个CPU小时的执行时间可以用,将某资源队列组的hardCpuTime配置为5小时,则说明该组最多能占有50%的cpu资源(5/10),说白了cpuQuotaPeriod有点像yarn资源的最小因子,presto用它来限制cpu资源的使用。子组运行查询的预期份额是根据当前所有符合条件的子组的权重计算的。
2025-01-09 17:11:27
632
原创 presto权限管理
官方文档-》https://prestodb.github.io/docs/current/security/built-in-system-access-control.htmlpresto的权限管理,分为catalog配置、schema配置、principal规则,分别管理着不同维度的权限设置。使用的前提是在etc目录下,创建文件,并写入如下配置。
2025-01-07 23:17:03
569
原创 如何用代码提交spark任务并且获取任务权柄
在国内说所有可能有些绝对,因为确实有少数大厂技术底蕴确实没的说能做出自己的东西,但其他的至少95%数据中台平台研发方案,都是集群中有一个持久化的程序,来接收任务信息,并向集群提交任务同时获取任务的权柄,把任务的appid和日志通过套接字的方式向外提供。
2025-01-04 17:40:35
835
原创 Java网络套接字
到此,Java套接字的基本应用就介绍完了,可以自己以此为基础衍生很多有意思的小程序,市面上也有很多现成的类库和架构,来完成不同的能力,比如上面的socket其实是一种二进制接口,想要完成丰富的能力需要写很复杂的代码,而Springboot提供了websocket用来在web的基础上完成套接字的实现,从而实现在线客服等能力的支持。上面这两个案例,可以让你很方便的了解到Java提供的网络套接字能力,当然这不是全部,你还可以获取客户端的ip等等,这些都可以办到。来实现一对一正常对话的效果,可以用如下的代码实现。
2025-01-02 23:16:28
1087
原创 Linux内核修改内存分配策略
这个报错是因为,linux会对大部分的内存资源申请都回复允许,以便于运行更多的程序。但是有些程序申请完内存后并不一定会立马使用,会持久化占用不释放,导致后续的服务,linux没有足够的内存提供给它,就会出现上面这个错误,这就叫做overcommit。0:内核首先会检查是否有足够的内存分配,如果没有就反馈申请失败,也就是cannot allocate memory的出现,这是默认配置。这个错误的解决方法除了加成本怼内存之外可以修改内存的分配策略,使得如果内存到了一定程度就直接拒绝了。
2024-12-31 17:47:38
205
原创 presto抛出java.lang.ArithmeticException:Rounding necessary异常
这个异常,是presto处理数据发生了精度问题,通常是数据源的精度太高presto读不出来,极少情况是舍位运算的时候发生了精读丢失。精度太高上一般是浮点数小数点后的位数太长。
2024-12-30 16:45:33
254
原创 presto抛出java.lang.ArithmeticException:/ by zero异常
这个错误的原因是你sql中除法运算的被除数为0了,这个是不允许的。
2024-12-30 16:41:55
93
原创 linux如何查看磁盘和cpu的状态比如磁盘的写入速率
svctm 一般要小于 await (因为同时等待的请求的等待时间被重复计算了),svctm 的大小一般和磁盘性能有关,CPU/内存的负荷也会对其有影响,请求过多也会间接导致 svctm 的增加。如果 await 远大于 svctm,说明 I/O 队列太长,应用得到的响应时间变慢,如果响应时间超过了用户可以容许的范围,这时可以考虑更换更快的磁盘,调整内核 elevator 算法,优化应用,或者升级 CPU。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。
2024-12-18 18:44:01
442
原创 Java求字符串的MD5
但是这个类出来的数据,需要进一步处理,上面代码把它出来的字节数组结果转成BigInteger后以16进制输出就成了我们需要的字符串,而后面补0,是因为最先的字节数组是128位的哈希值,BigInteger以16进制输出字符串的时候,128转16进制是每4位转一个16进制数,理想的结果就正好是业内标准的32位字符串,但是在BigInteger转换的时候如果这个数据是01这种,首位是0的数据,0就被省略了,所有最后要补上去。它本身不是专门用于计算 MD5 的,但它可以支持多种哈希算法,包括 MD5。
2024-12-17 16:24:10
359
原创 Hive3.x之前推测执行有很低的概率会导致结果数据出现多份
hive的默认走MR,所以会生成很多落盘的task结果文件,而对于推测执行所生成的重复结果,hive在最后会对文件放到表路径下之前,按照任务id和文件大小对文件进行去重,但是apache版本下有极低的概率会因为任务运行时的集群限速等极端情况导致推测执行的结果文件生成在了去重之后,这就会导致结果查询会发现出现了重复。对于hive数据处理的时候,如果一个任务很大或者其他原因导致任务执行受到了限速、失败等影响,这个时候为了让任务稳定,我们常用的手段就是开启推测执行,但是推测执行在3.x之前有个问题,先看下图。
2024-12-03 16:34:50
193
原创 Hive高可用配置
在hive的商用上没有集群一说,而且它本身也不是数据库,只是hadoop的数据sql化工具,但是hive可以配置高可用,通常业内对元数据服务会开5个,而HS2服务开3个,来保证hive服务的高可用。当然上面这个命令还是能用的,只是但和直接访问一个namenode的9000端口一样,是直接访问一个定死的服务,而高可用的连接路径需要使用如下格式。随后将hive整体同步到高可用服务对应的节点上,并在对应的节点上,使用下面的命令启动对应的服务。格式,即使你指定连接的库也要在末尾有一个斜杠。
2024-11-30 17:27:41
576
原创 使用Yarn标签能力实现任务资源隔离
我们在工作或自己研究的时候,一般不关注yarn的lable能力,这主要因为业内大部分用的是公有云,即使有私有云或者是独占集群,集群的运维通常也是抛给厂商了,所以这就导致Label的能力被忽视了,并且这个能力默认是关闭的,所以综合一下情况,使用起来就会因为各种用户因素而导致很复杂,懂的都懂。
2024-11-30 12:57:32
1100
原创 spark3.x之后时间格式数据偶发报错org.apache.spark.SparkUpgradeException
这个问题的原因是2.x时,对时间数据的格式话用的是simpledateformat类,但是这个类对数据的容错很高,导致偶尔会生成数据后缀,3.x之后不用它了,但是在处理时遇到这种数据3.x的spark就会报上面的错误,而提示中说的。是一种尝试修复的措施,并不能保证百分百没问题,最优解是处理数据的时候遇到时间字符串用substr截取一下。3.x之后如果你去处理2.x生成的时间字符串数据,很容易遇到一个问题。
2024-11-28 11:38:04
531
原创 ERROR CoarseGrainedExecutorBackend: RECEIVED SIGNAL TERM
看见这个报错不要慌张,这个是你开启了动态伸缩容器,且当这个容器触发了空闲关闭的阈值,默认是60秒,这时候该容器会被删除掉,yarn上就会出现这个错误,你查看driver的标准错误输出会发现类型如下的容器移除信息。如果你的spark on yarn任务正常运行,能得到结果,但是日志中出现了如下的报错。
2024-11-27 10:52:28
409
原创 hive表内外表之间切换
你想把内表和外表在元数据上达到切换的目的,这个操作有个前提,在apache版本源码上来讲是支持的!上面是把外表切换为内表,反之一样,在源码里面其实还支持很多东西,有兴趣可以看看,博主在源码中还看到sparksql能和presto那样在group by后面写阿拉伯数字代替select后面的字段,就是用顺序表示字段,但可惜这个能力也是被关着的,从源码注释来看是担心操作上造成混淆的风险。
2024-11-06 11:13:24
477
原创 hive切换表底层文件类型以及分隔符
2、更改数据的分割符号,但是通常情况下有的表是不支持改动的,比如orc格式的表,除非你用的第三方软件,比如kyuubi,它在跑数据的时候就会想orc文件里面写分割符,奇奇怪怪的。1、改底层文件存储类型,但是一般只会在数据文件与期望类型一致的时候使用,比如load等方式时发现建表时没指定对这样的,因为这个语句不会更改具体的底层文件内容,只改元数据。如果系列化类库没变过来的话用下面的语句改一下,比如text改orc。改完之后查一下结果没问题就行。或者orc改text。
2024-11-06 10:40:19
355
原创 scala和Java的可变参数怎么用
3、可变参数本身是个数组,你可以把一个数组做传参给可变行参,但是怎么用的话,就不能传其他的了。scala可变参数需要在类型后面加个*Java的可变参数是在类型后面加三个点。2、多个参数可变参数需要定义在最后。1、一个方法只能有一个可变参数。两者在使用的时候要注意。
2024-11-02 22:13:52
299
原创 PySpark任务提交
一般情况下,spark任务是用scala开发的,但是对于一些偏业务人员,或者是基于上手的来说python的API确实降低了开发前置条件的难度,首当其冲的就是能跳过Java和Scala需要的知识储备,但是在提交任务到集群的时候就很麻烦了,不只是spark自身pyspark提交时不同参数导致的大小写等问题,最麻烦的是spark和python版本上的兼容与否,2.x的spark一般用3.7以下的,3.x需要3.8以上的python,还有各种小毛病都是细节上的问题。当你安装完所有的需要库之后,把环境打包。
2024-10-31 14:53:27
840
2
原创 Hue3.9.0-cdh5.14.0安装
第八步:开始配置Hue的hdfs配置,但是这里有个问题,后面说,修改hue.ini文件,找打文件的850行左右,修改hadoop-hdfs的配置。正常使用你初始化元数据库时,创建的管理用户登录就行,一切正常的话,你就可以运行hive语句了,并且右上角可以查看yarn上的任务日志。,当你点击页面的时候不难发现,你只能看到yarn任务的列表,无法点击直接跳到日志详情去,而且从左侧预览hdfs文件也会报一个。编译大概会输出很多东西,中途会卡顿,无需额外操作,大概需要3分钟左右,中途不报错就行。
2024-10-29 22:47:06
814
原创 CentOS 8配置阿里云yum源
最近正好搞一套3.x体系的大数据技术集群,用CentOS8的系统,发现默认自带的所有yum源貌似无法使用,这里记录一下配置阿里的yum源。第一步:移动走所有自带的repo文件,不然会影响。第二步:生成新的repo文件。第三步:更新yum缓存。
2024-10-14 17:46:30
1727
原创 设置Hadoop守护进程的JVM参数
一般情况下我们不去动守护进程的JVM,这里的守护进程说的是NameNode、DataNode等Hadoop服务自己本身的进程。但是有一些特殊情况下需要限制,比如工作中虽然集群中资源队列会有10%左右的预留空余,不过这是整个集群队列的限制,对于DataNode节点自身来说通常是限制在配置文件中的定额可跑任务总资源起到一个直观的限制,而通常DataNode节点自身的大部分资源都会分配给计算以及部分系统预留,这就导致我们在使用一些能力的时候偶发一个JVM可分配到的内存不足的问题,如下。
2024-09-27 10:18:32
574
linux使用httpd时是否有其他方法不改配置文件的方式下同时映射其他静态资源路径
2025-04-01
提交MR任务时任务参数无法在命令行携带吗
2025-03-28
如何正确使用maven-assembly-plugin将项目打包成tar包
2025-01-27
如何在shell中正确保留后台执行进程的id
2025-01-24
zeppelin怎么修改scala版本
2024-10-26
spark的thriftserver服务启动时报错找不到类
2024-10-12
搭建的presto测试sql时报错访问不到hdfs
2024-10-11
搭建hadoop的时候做到datanode和nodemanager分离
2024-08-15
yarn ui上的历史任务记录能删除吗?
2024-08-11
hive3.1.3的hiveserver2无法正常链接
2024-06-28
hadoop3.x跑测试任务applicationmaster刚启动就挂了
2024-06-20
datanode无法正常加入namenode的心跳
2024-06-17
input在type为file时遇到了一个文件队列不更新的问题,能否提供一些解决思路
2023-12-12
最近在写一个酒店的app,现在把查询房间数的sql思路列出来,看看有没有啥问题
2023-08-23
js中如何通过push组成json数组
2023-05-06
浏览器302错误有什么可行的建议
2023-04-03
前端项目是怎么把网页后缀隐藏的
2023-03-25
nginx与k8s联动的时候还能保持ip_hash吗
2023-03-13
scala match模式匹配正则 无法生效
2023-03-02
springboot项目用线程池怎么用配置文件的方式控制线程池大小
2023-01-01
前、后端之间如何交互Blob块文件
2022-12-19
docker容器能否做到和宿主机处于同一网段
2022-12-10
java 删除文件线程冲突有什么解决方法吗
2022-11-08
javaweb怎样实现配置文件的可视化修改
2022-10-25
springboot 整合ES 多个字段高亮不出效果
2022-10-11
cdh版hue连接原生hadoop权限上怎么配置
2022-06-25
spark on yarn时 spark侧的任务监听日志是需要做其他处理吗
2022-05-21
刚搭建好的测试环境提交spark no yarn 任务报如下错误有解决方法吗?
2022-05-20
刚搭建好的测试环境提交spark no yarn 任务报如下错误,有人遇到过吗
2022-05-15
cdh集群 hue服务搭建问题
2022-02-27
hadoop重启后历史mr记录消失
2022-01-17
站内的大V们求帮助!!
2021-08-27
TA创建的收藏夹 TA关注的收藏夹
TA关注的人