史诗级调试livy 传参导致 spark jar 提交 yarn显示 Exit code: 13

目前提交批处理任务都是通过 livy提交通过设置参数和 jar来执行,seesion 任务提交没问题,但是遇到提交 batch 任务一直出现Exit code: 13 问了一圈包括 ai都说是权限问题 验证很多遍,最后通过缩减参数最后发现是多了个参数

这个是 livy batch 提交的批处理任务现在执行失败,我通过 session 提交也可以执行成功

{ "args": [ " { \"0\":{ \"functionInvocationValue\":{ \"functionName\":\"Coverage.export\",\"arguments\":{ \"coverage\":{ \"functionInvocationValue\":{ \"functionName\":\"Coverage.addStyles\",\"arguments\":{ \"coverage\":{ \"functionInvocationValue\":{ \"functionName\":\"Coverage.aspect\",\"arguments\":{ \"coverage\":{ \"functionInvocationValue\":{ \"functionName\":\"Service.getCoverage\",\"arguments\":{ \"coverageID\":{ \"constantValue\":\"ASTGTM_N28E056\" } ,\"baseUrl\":{ \"constantValue\":\"http://localhost\" } ,\"productID\":{ \"constantValue\":\"ASTER_GDEM_DEM30\" } } } } ,\"radius\":{ \"constantValue\":1 } } } } ,\"min\":{ \"constantValue\":-1 } ,\"max\":{ \"constantValue\":1 } ,\"palette\":{ \"constantValue\":[\"#808080\",\"#949494\",\"#a9a9a9\",\"#bdbebd\",\"#d3d3d3\",\"#e9e9e9\"] } } } } } } } ,\"isBatch\":1 } ", "f950cff2-07c8-461a-9c24-9162d59e2666_1757072928459_0", "f950cff2-07c8-461a-9c24-9162d59e2666", "EPSG:4326", "1000", "result", "file_2025_09_05_19_48_47", "tif" ], "numExecutors": 3, "driverMemory": "2g", "executorMemory": "2g", "file": "local:computation_ogc.jar", "driverCores": 1, "executorCores": 4, "className": "TriggerBatch", "conf": { "spark.kryoserializer.buffer.max": "5g", "spark.driver.maxResultSize": "2g", "spark.executor.extraClassPath": "local://jars/*", "spark.driver.extraClassPath": "local:/jars/*", "spark.serializer": "org.apache.spark.serializer.KryoSerializer", "spark.executor.memoryOverhead": "2g" }

CentOS 系防火墙放开端口范围限制

需要特定 ip 能被相互访问目前有两种方案

1
2
3
4
5
6
7
8
9
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.200.34.42" port port="1000-50000" protocol="tcp" accept'

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.200.34.182" port port="1000-50000" protocol="tcp" accept'

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.200.34.51" port port="1000-50000" protocol="tcp" accept'

sudo firewall-cmd --reload

sudo firewall-cmd --list-all

并发队列实现

每次提交的任务先走到内部队列,在livy执行完成后有资源的情况下将队列的任务提交到livy

同时使用future等待的特性,最大增加并发能力

使用的算法是 令牌桶来实现 还有漏桶的算法也一起介绍

计算机符号和原码和反码以及位运算

为什么1bit对应 8 byte

此处引用至 一文读懂字符编码 - 知乎

ASCII 编码字符串都是这样

我们知道计算机的世界只有0和1,如果没有字符编码,我们看到的就是一串”110010100101100111001….”,我们的沟通就好像是在对牛弹琴,我看不懂它,它看不懂我。字符编码就好比人类和机器之间的翻译程序,把我们熟知的字符文字翻译成机器能读懂的二进制,同时把二进制翻译成我们能看懂的字符。以下是百科对字符编码的解释