📜  具有 1 个 MapReduce 步骤的矩阵乘法

📅  最后修改于: 2021-10-27 06:30:30             🧑  作者: Mango

MapReduce 是一种将庞大的程序细分为小任务并并行运行的技术,以使计算速度更快,节省时间,主要用于分布式系统。它有两个重要部分:

  • 映射器:它接受原始数据输入并组织成键值对。例如,在字典中,您搜索“数据”一词,其相关含义是“收集在一起以供参考或分析的事实和统计数据”。这里的关键是数据,而与之相关的价值是收集在一起以供参考或分析的事实和统计数据。
  • Reducer:负责并行处理数据并产生最终输出。

让我们考虑矩阵乘法示例来可视化 MapReduce。考虑以下矩阵:

取两个 2x2 的矩阵

2×2 矩阵 A 和 B

这里矩阵 A 是一个 2×2 矩阵,这意味着行数 (i)=2,列数 (j)=2。矩阵 B 也是一个 2×2 矩阵,其中行数 (j)=2,列数 (k)=2。矩阵的每个单元格都标记为 Aij 和 Bij。前任。矩阵 A 中的元素 3 称为 A21,即第 2 行第 1 列。现在一步矩阵乘法有 1 个映射器和 1 个化简器。公式为:

因此计算矩阵 A 的映射器:

# k, i, j computes the number of times it occurs.
# Here all are 2, therefore when k=1, i can have 
# 2 values 1 & 2, each case can have 2 further
# values of j=1 and j=2. Substituting all values 
# in formula

k=1  i=1  j=1   ((1, 1), (A, 1, 1)) 
          j=2   ((1, 1), (A, 2, 2))   
     i=2  j=1   ((2, 1), (A, 1, 3))
          j=2   ((2, 1), (A, 2, 4)) 

k=2  i=1  j=1   ((1, 2), (A, 1, 1))
          j=2   ((1, 2), (A, 2, 2))   
     i=2  j=1   ((2, 2), (A, 1, 3))
          j=2   ((2, 2), (A, 2, 4)) 

计算矩阵 B 的映射器

i=1  j=1  k=1   ((1, 1), (B, 1, 5)) 
          k=2   ((1, 2), (B, 1, 6))   
     j=2  k=1   ((1, 1), (B, 2, 7))
          j=2   ((1, 2), (B, 2, 8)) 

i=2  j=1  k=1   ((2, 1), (B, 1, 5))
          k=2   ((2, 2), (B, 1, 6))   
     j=2  k=1   ((2, 1), (B, 2, 7))
          k=2   ((2, 2), (B, 2, 8)) 

Reducer 的公式为:

因此计算减速器:

# We can observe from Mapper computation 
# that 4 pairs are common (1, 1), (1, 2),
# (2, 1) and (2, 2)
# Make a list separate for Matrix A & 
# B with adjoining values taken from 
# Mapper step above:

(1, 1) =>Alist ={(A, 1, 1), (A, 2, 2)}
        Blist ={(B, 1, 5), (B, 2, 7)}
        Now Aij x Bjk: [(1*5) + (2*7)] =19 -------(i)

(1, 2) =>Alist ={(A, 1, 1), (A, 2, 2)}
        Blist ={(B, 1, 6), (B, 2, 8)}
        Now Aij x Bjk: [(1*6) + (2*8)] =22 -------(ii)

(2, 1) =>Alist ={(A, 1, 3), (A, 2, 4)}
        Blist ={(B, 1, 5), (B, 2, 7)}
        Now Aij x Bjk: [(3*5) + (4*7)] =43 -------(iii)

(2, 2) =>Alist ={(A, 1, 3), (A, 2, 4)}
        Blist ={(B, 1, 6), (B, 2, 8)}
        Now Aij x Bjk: [(3*6) + (4*8)] =50 -------(iv)

From (i), (ii), (iii) and (iv) we conclude that
((1, 1), 19)
((1, 2), 22)
((2, 1), 43)
((2, 2), 50)

因此最终矩阵是:

1 MapReduce 步骤的矩阵乘法结果

矩阵乘法的最终输出。