我已经在hadoopmrjob的setup方法中初始化了redis(jedis)客户机连接。当我在Map作业中使用连接来更新键、值对时,在多个节点上运行的Map能否同时使用相同的连接来更新redis?或者连接上有锁?
bqjvbblv1#
我不确定我是否正确地回答了你的问题。如果您在mapper的安装阶段初始化了redis客户端,那么每个mapper都将使用自己的连接与redis通信。因为所有的Map器都在自己的jvm中运行,所以我不相信您可以在它们之间共享连接。是的,多个客户端可以同时写入redis。如果所有客户端都在redis中写入同一个密钥,那么它将在内部处理这种情况,但它从不需要集群级锁。
g6baxovj2#
如果您已经将相同的连接会话对象传递给Map器,那么Map器将使用该会话来更新redis。如果是这样,那就没有锁了。
2条答案
按热度按时间bqjvbblv1#
我不确定我是否正确地回答了你的问题。如果您在mapper的安装阶段初始化了redis客户端,那么每个mapper都将使用自己的连接与redis通信。因为所有的Map器都在自己的jvm中运行,所以我不相信您可以在它们之间共享连接。
是的,多个客户端可以同时写入redis。如果所有客户端都在redis中写入同一个密钥,那么它将在内部处理这种情况,但它从不需要集群级锁。
g6baxovj2#
如果您已经将相同的连接会话对象传递给Map器,那么Map器将使用该会话来更新redis。如果是这样,那就没有锁了。