当前位置: 首页 > 知识库问答 >
问题:

由于endianness不匹配,无法使用Flink RocksDB状态后端

齐磊
2023-03-14

我的Flink作业从kafka主题读取并将数据存储在RocksDB状态后端,以利用可查询状态。我能够在本地机器中运行作业并查询状态。但是在集群上部署时,我收到以下错误:

Caused by: org.apache.flink.runtime.client.JobExecutionException: Job execution failed.
at org.apache.flink.runtime.jobmanager.JobManager$$anonfun$handleMessage$1$$anonfun$applyOrElse$6.apply$mcV$sp(JobManager.scala:900)
at org.apache.flink.runtime.jobmanager.JobManager$$anonfun$handleMessage$1$$anonfun$applyOrElse$6.apply(JobManager.scala:843)
at org.apache.flink.runtime.jobmanager.JobManager$$anonfun$handleMessage$1$$anonfun$applyOrElse$6.apply(JobManager.scala:843)
at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:40)
at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:397)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)

Caused by: java.lang.IllegalStateException: Could not initialize keyed state backend.
at org.apache.flink.streaming.api.operators.AbstractStreamOperator.initKeyedState(AbstractStreamOperator.java:286)
at org.apache.flink.streaming.api.operators.AbstractStreamOperator.initializeState(AbstractStreamOperator.java:199)
at org.apache.flink.streaming.runtime.tasks.StreamTask.initializeOperators(StreamTask.java:666)
at org.apache.flink.streaming.runtime.tasks.StreamTask.initializeState(StreamTask.java:654)
at org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:257)
at org.apache.flink.runtime.taskmanager.Task.run(Task.java:655)
at java.lang.Thread.run(Thread.java:745)

Caused by: java.lang.Exception: Could not load the native RocksDB library
at org.apache.flink.contrib.streaming.state.RocksDBStateBackend.ensureRocksDBIsLoaded(RocksDBStateBackend.java:483)
at org.apache.flink.contrib.streaming.state.RocksDBStateBackend.createKeyedStateBackend(RocksDBStateBackend.java:235)
at org.apache.flink.streaming.runtime.tasks.StreamTask.createKeyedStateBackend(StreamTask.java:785)
at org.apache.flink.streaming.api.operators.AbstractStreamOperator.initKeyedState(AbstractStreamOperator.java:277)
... 6 more

Caused by: java.lang.UnsatisfiedLinkError: /data/hadoop/tmp/rocksdb-lib-32bc6a5551b331596649309a808b287d/librocksdbjni-linux64.so: /data/hadoop/tmp/rocksdb-lib-32bc6a5551b331596649309a808b287d/librocksdbjni-linux64.so: ELF file data encoding not big-endian (Possible cause: endianness mismatch)
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
at java.lang.Runtime.load0(Runtime.java:809)
at java.lang.System.load(System.java:1086)
at org.rocksdb.NativeLibraryLoader.loadLibraryFromJar(NativeLibraryLoader.java:78)
at org.rocksdb.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:56)
at org.apache.flink.contrib.streaming.state.RocksDBStateBackend.ensureRocksDBIsLoaded(RocksDBStateBackend.java:460)

我已经尝试在集群级别和作业级别设置rocksDB状态后端。当它设置为作业级别时,我已将其作为阴影依赖项提供。我也尝试在主机集群机器上编译代码。我在所有情况下都会得到相同的错误。

ELF file data encoding not big-endian (Possible cause: endianness mismatch)

如何解决此错误?

共有1个答案

邢硕
2023-03-14

通过以下方式解决问题:

  1. 克隆frocksdb。
  2. 从此提交应用rocksdb补丁。
  3. 运行在目标平台上制作rocksdbjava
  4. 添加生成的rocksdbjni-

注意:此补丁已在最新版本的rocksdb中可用。一旦frocksdb更新到当前版本的rocksdb,就不会出现此问题。

 类似资料:
  • 我正在React中建立一个设计组合。投资组合数据处于应用状态。 我正在使用React Router为每个项目创建一个/project/:projectID路由。该州的项目将根据URL中的值使用,例如website.com/project/1 问题就在这里。如果我像这样配置路由。。。 和console.log(this.props),props包括匹配参数(url栏的值),但不包括应用程序状态。但是

  • 今天早上我试图对我现有的项目进行一些更改,但我无法生成直到昨天才开始工作的构建。 我得到一个如下错误, 依赖项的AAR元数据(meta-inf/com/android/build/gradle/aar-metadata.properties)中指定的minCompileSdk(30)大于此模块的compileSdkVersion(android-29)。

  • 我正在开发jBPM6和jboss6.2,试图创建一个具有不同级别的应用程序,如员工、领导和主管。领导和主管是组。创建流程后,我就像一个员工发送了一个请求和流程移动到领导,他已经批准了请求和流程移动到主管,一旦他试图批准,就会抛出以下错误。 在执行下面一段代码时: 我对BPM流程流程不熟悉,但我尽了最大努力来解决这个问题。但没有找到解决办法。请告诉我怎么解决?哪里出了问题,比如配置或其他什么<谢谢,

  • React + React-router-dom v6 我目前编写的路由表为: 当我在浏览器地址栏输入http:// xxx.xxx.xxx.xxx: 3000/p/aaa/bbb,并不能匹配到'/p/:contentId/:premissionId', 请问这是咋回事?

  • 我正在尝试使用注册功能组件中的useState更新组件的状态。当用户输入无效的电子邮件地址并单击“提交”按钮时,以下代码将返回错误消息 我想用这段代码将错误消息设置为formData。 如何将错误消息设置为formData? 这是我的密码:

  • 它返回 当我写的时候 它完美地返回文件我正在尝试通过访问文件内容