Products
GG网络技术分享 2025-03-18 16:11 0
现有有一个很大的仓库,里面有一万个箱子,现在要把这些箱子搬到对门的仓库。
我们可以先让一个工人来搬,如果一分钟搬一个的话,那么要搬一万分钟。
现在我们找来一个动作快一点的工人,半分钟就能搬一个,结果呢,那自然是五千分钟就搬完了。
当然还能再给力一点,比如让工人动作再快一点,比如说 20 秒就搬一个?
但是这总是有个极限的,毕竟搬箱子是个力气活儿,不是那么容易的。
那要不再多找几个工人?比如咱们找 100 个工人,这样是不是就更快了?
不过这又涉及到一个问题,虽然干活的人是多了,但是现在只有一个门,100 个工人挤作一团,虽然人是多了,但是效率并没有提高太多,很多人都在门口等着。
玩过魔兽的就知道,如果采矿的农民太多的话,会有人在矿外面等着,所以每一个矿通常超过 5 个农民的话采矿的速度就不会再增加了。
那怎么办呢?在游戏里,我们可以再开一个新矿,这样就能每个矿分 5 个农民来采了。
对应的仓库,我们可以多开几个门,比如说开 100 个门,每个门分配几个工人,这样是不是就能同步进行,搬箱子的速度更快了?
这就是 Hive 里 Map and Reduce 的原理。
当然这只是一个很粗糙的说法,里面还涉及到很多的细节,比如各个工人之间怎么分配活儿?数据是一整块的,怎么切割成“箱子”,搬完之后在新的仓库里又如何堆放,门怎么开,搬的顺序是怎么样的?
Demand feedback