cru*_*ahl 17 database hadoop apache-spark
我正在尝试将一个键值数据库集成到Spark并提出一些问题.我是Spark初学者,已经阅读了很多并运行了一些样本,但没有太复杂.
场景:
我正在使用一个小型hdfs集群将传入的消息存储在数据库中.群集有5个节点,数据分为5个分区.每个分区都存储在单独的数据库文件中.因此,每个节点都可以处理自己的数据分区.
问题:
数据库软件的接口基于JNI,数据库本身以C实现.由于技术原因,数据库软件一次只能维护一个活动连接.只能有一个JVM进程连接到数据库.
由于此限制,读取和写入数据库必须经过相同的JVM过程.
(背景信息:数据库嵌入到进程中.它是基于文件的,一次只能打开一个进程.我可以让它在一个单独的进程中运行,但由于IPC开销,这会慢一点.我的应用程序将执行许多全表扫描.其他写入将被批处理并且不是时间关键的.)
解决方案:
我在脑海中有一些想法如何解决这个问题,但我不知道它们是否适用于Spark.
也许有可能神奇地将Spark配置为每个节点只有一个我专有的InputFormat实例.
如果我的InputFormat第一次使用,它会启动一个单独的线程来创建数据库连接.然后,该线程将继续作为守护进程,并且只要JVM存在,它就会存在.这仅在每个节点只有一个JVM时才有效.如果Spark在同一节点上启动多个JVM,那么每个JVM都会启动自己的数据库线程,这不起作用.
将我的数据库连接移动到每个节点的单独JVM进程,然后我的InputFormat使用IPC连接到此进程.正如我所说,我想避免这种情况.
或者也许你有另一个更好的主意?
我最喜欢的解决方案是#1,紧接着是#2.
感谢您的任何评论和回答!
| 归档时间: |
|
| 查看次数: |
368 次 |
| 最近记录: |