话接前文:
????????在实际操作过程中,往往出现了在测试上没遇到的问题,下面是升级后遇到的问题,几乎都会遇到,我的如下。
? ? ? ?
? ? ? ? 由于正式平台上往往程序会更多,在测试中,我的model只有几个,cube也是。这么少的数量下没有问题。但正式平台上,我发现通过我前文的方式进行元数据传输,model少了。具体少了多少不便透漏。但差不多有5%左右。
原因推测:
????????由上面的截图可以看到,我的hbase备份到本地是没出现问题的。那么问题很可能出现在scp命令执行的时候(我忘记压缩传输),发现了少量的error信息。正是由于小文件太多,网络传输难免会全部成功。
? ? ? ?一定要压缩后传输!!!
? ? ? ? 在kylin3.0.1中,我发现一个程序运行时间为60min左右。我想,升级后的计算引擎由MR==>Yarn,时间应该会变短,我预估的时间为25min。但在实际运行中出现了错误,通过观察日志,发现了下面的问题(我筛选了一下):
Caused by: java.lang.IllegalStateException: Spark context stopped while waiting for backend
overrideConf : {spark.executor.memory=3456MB, spark.executor.memoryOverhead=692MB}
2024-01-05 23:42:41,316 ERROR [rpc-server-22-2] client.TransportClient : Failed to send RPC RPC 7489718939143010467 to /ip:port: java.nio.channels.ClosedChannelException
java.nio.channels.ClosedChannelException
2024-01-05 23:42:41,317 ERROR [rpc-server-22-2] cluster.YarnSchedulerBackend$YarnSchedulerEndpoint : Sending RequestExecutors(Map(),Map(),Map(),Set()) to AM was unsuccessful
java.io.IOException: Failed to send RPC RPC 7489718939143010467 to /ip:port: java.nio.channels.ClosedChannelException
? ? ? ? IP和端口部分我已经隐藏,并且替换成了ip:port。
? ? ? ? 出现这个问题说明了:
????????网络方面通过我的检查,已经排除,毕竟网络有问题其他程序为什么能运行成功。
? ? ? ? 这是我在kylin官网找到的一句话
? ? ? ? 我想,既然能自动调参,为什么会出现资源问题。然后看到yarn上面的信息,发现了,想到了kylin能调节spark参数,不代表yarn会给你通过。后面查阅资料,在yarn-site.xml添加上了如下配置。
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
? ? ? ? 解释一下,这两个配置是与YARN(Yet Another Resource Negotiator)资源管理器的节点管理器(NodeManager)相关的配置项。它们用于控制NodeManager是否启用物理内存(pmem)和虚拟内存(vmem)检查。
? ? ? ? 重启yarn。然后这个比较大的程序运行成功!!!
? ? ? ? 程序是运行成功了,但竟然运行了80min!!!,和我预估的30min内差距过大。运行时我看到了内存和cpu和带宽疯狂上升。通过spark ui页面发现,spark的job接近10000个。而在kylin3中,这个cube大小只有几百M。但kylin4运行完后,发现cube大小竟然有接近20G!!!震惊了。
? ? ? ? 后面这个问题解决后会更新上。
? ? ? ? 由于我的kylin.properties并没有复制,到了除了上一篇文章注意的配置还有忘记修改的。
kylin.source.hive.database-for-flat-table=
kylin.engine.spark-conf.spark.yarn.queue=
????????前面一个是kylin运行的时候一些临时表的存储路径,最好是在hive里面建一个库来保存,不然全部到default里面就太乱了。
? ? ? ? 后面一个是spark运行在yarn的队列,如果设置了一定要修改。一般也不会直接用default队列。
? ? ? ? 当然,如果是测试环境都无所谓
后面我将持续进行修改或更新,更新或解决这些问题。