рдореЗрдореЛрд░реА рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рд╕реЗ рдкрд░реЗ MapReduce рдпрд╛ рдЧрдгрдирд╛ (рдореИрдВ zaumi рдХреЗ рдмрд┐рдирд╛ рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛)

рдореИрдВ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ MapReduce рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдХреИрд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рдпрд╣ рдПрдХ рдРрд╕реА рд╕реЛрдЪ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл рдбрд░рд╛рд╡рдиреА рд▓рдЧрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдХрдИ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдФрд░ рдЙрдкрдпреЛрдЧреА рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред рдФрд░ рдЗрд╕реЗ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрдж рдХреЛ рдЗрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рддреБрд░рдВрдд рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдП - рдПрдХ рд╡рд┐рд╖рдп - рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдпрд╣ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛рдпрд╛ рд╣реИ рдХрд┐ MapReduce рдХреНрдпрд╛ рд╣реИред рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕рдордЭ рдЧрдП - рдпрд╣рд╛рдВ рдХреБрдЫ рднреА рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ MapReduce рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдореЗрд░реЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рдкреИрджрд╛ рд╣реБрдЖ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣ Google рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдмрд╛рдж рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдпрд╛ рдерд╛)ред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдХрд┐ рд╡рд╣ рдХреИрд╕реЗ рдкреИрджрд╛ рд╣реБрдИ (рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЧрд▓рдд рдерд╛), рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рд╕рд╣реА рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ рд╕рднреА рд╢рдмреНрджреЛрдВ рдХреЛ рдХреИрд╕реЗ рдЧрд┐рдирд╛ рдЬрд╛рдП (рдЧрд▓рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг)


рдФрд░ рд╡рд╣ рдкреИрджрд╛ рд╣реБрдЖ рдерд╛, рдЬреИрд╕рд╛ рдХрд┐, рд╢рд╛рдпрдж, рд╣рд░ рдЬрдЧрд╣ - рд╢рдмреНрджреЛрдВ рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреА рдЧрд┐рдирддреА рдХреЗ рд▓рд┐рдП рдЬрдм рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдореГрддрд┐ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ (рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ рд╕рднреА рд╢рдмреНрджреЛрдВ рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреА рдЧрд┐рдирддреА)ред рд╢рдмреНрдж "рдлрд╝реНрд░реАрдХреНрд╡реЗрдВрд╕реА" рдХреЗ рдмрдЬрд╛рдп рд╕рдВрднрд╡рддрдГ "рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛" рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП рдореИрдВ "рдлрд╝реНрд░реАрдХреНрд╡реЗрдВрд╕реА" рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛ред

рд╕рд░рд▓рддрдо рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдПрдХ рд╣реИрд╢ (рддрд╛рдирд╛рд╢рд╛рд╣, рдирдХреНрд╢рд╛, рд╣реИрд╢, рд╕рд╣рдпреЛрдЧреА рд╕рд░рдгреА, рд╕рд░рдгреА) (PHP) рдореЗрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕рдореЗрдВ рд╢рдмреНрджреЛрдВ рдХреЛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

$dict['word1'] += 1

рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдХрд░реЗрдВ рдЬрдм рд╣реИрд╢ рдХреЗ рддрд╣рдд рдореЗрдореЛрд░реА рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдП, рдФрд░ рд╣рдордиреЗ рд╕рднреА рд╢рдмреНрджреЛрдВ рдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рд╕реМрд╡рд╛рдВ рдЧрд┐рдирд╛?

рдореИрдВрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╢рдмреНрджреЛрдВ рдХреЗ рднрд╛рдЧ рдХреЛ рдЧрд┐рдирдХрд░ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрдм рддрдХ рдХрд┐ рд╕реНрдореГрддрд┐ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдЬрд╛рддреА, рд╣реИрд╢ рдХреЛ рдбрд┐рд╕реНрдХ рдкрд░ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╣реИ, рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрди рд╕реЗ рд╕реАрдзреЗ рд▓рд╛рдЗрди:

aardvark | 5
aachen | 2


рдПрдХ рд╕рдорд╕реНрдпрд╛ рдереА - рдЗрди рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдХреИрд╕реЗ рдорд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рдП? рдЖрдЦрд┐рд░рдХрд╛рд░, рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкреВрд░реА рд░реИрдо рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрддрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп 1,000,000 рд╢рдмреНрдж рд▓реЗрдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдерд╛ - рдпрд╣ рд░реИрдо рдореЗрдВ рдлрд┐рдЯ рд╣реЛрдЧрд╛ рдФрд░ рдХрдо рд╕реЗ рдХрдо рд╕реВрдЪреА рдХреЗ рд╢реАрд░реНрд╖ (рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╢рдмреНрдж) рдХреЛ рдЧрд┐рдирд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдХрд╛рдо рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд▓рд╛рдЦреЛрдВ рдирд┐рдЪрд▓реЗ рд╢рдмреНрдж рдЦреЛ рдЧрдП рдереЗ, рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рдерд╛ред

рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЫрд╛рдВрдЯрдиреЗ рдХрд╛ рдЖрдЗрдбрд┐рдпрд╛ рдЖрдпрд╛ред

рдлрд┐рд░ рд╣рдо 20 рд╕реЙрд░реНрдЯ рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓реЗрддреЗ рд╣реИрдВ, рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗ рдкрд╣рд▓реА 1000 рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдкрдврд╝реЗрдВ, рд╡реЗ рдПрдХ рд╣реА рд╢рдмреНрдж (рд╕реЙрд░реНрдЯ рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрдВрдЧреЗред рд╣рдо рдПрдХ рдирдП рд╣реИрд╢ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ "рдЖ ..." рдФрд░ рдЗрд╕реА рддрд░рд╣ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╢рдмреНрдж рд╣реЛрдВрдЧреЗ, рдЗрд╕реЗ рдирдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВред рд╣рдо рдЕрдЧрд▓реА 1000 рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ, рд╕рднреА рд╕рдорд╛рди рд╣реИрдВред рд╡рд╣рд╛рдВ, рд▓рдЧрднрдЧ рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ "рдЖрдм ..." рд╢рдмреНрдж рд╣реЛрдВрдЧреЗред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рдирдИ рдлрд╝рд╛рдЗрд▓ рдмрд╣реБрдд рдЫреЛрдЯреА рдмрдирддреА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕рдореЗрдВ рдЕрднреА рднреА рд╢рдмреНрджреЛрдВ рдХреЛ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд╕реЙрд░реНрдЯ рдХрд░реЗрдВ, рдЗрд╕реЗ 1000 рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдкрдврд╝реЗрдВ, рдЬреЛрдбрд╝реЗрдВред рдпрд╣ рд▓рдЧрднрдЧ рд╕рд╣реА рдлрд╝рд╛рдЗрд▓ рд╣реЛ рдЬрд╛рдПрдЧреА (рдХреБрдЫ рд╢рдмреНрдж рдЕрднреА рднреА 1000 рд▓рд╛рдЗрдиреЛрдВ рд╕реЗ рдкрд░реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ), рд╣рдо рдХреБрдЫ рд╕рдордп рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВ ... рдЕрдВрдд рдореЗрдВ рд╣рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдорд┐рд▓рддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдмрд╣реБрдд рдХрдо рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛрддреА рд╣реИрдВ (рд▓реЗрдХрд┐рди рд╡реЗ рд╣реИрдВ)ред

рдПрдХ рд╕реБрдирд╕рд╛рди, рд▓рдВрдмрд╛, рд▓реЗрдХрд┐рди рдмреЗрд╣рддрд░ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реБрдЖред

рдЧрд▓рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдХрдордЬреЛрд░ рдмрд┐рдВрджреБ

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдПрдХ рдХрдордЬреЛрд░ рдмрд┐рдВрджреБ рдерд╛ - рдЕрд░реНрдерд╛рддреН, рдореВрд▓ 20 рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд╕рдВрдпреЛрдЬрдиред рдЗрд╕реЗ рдмреЗрд╣рддрд░ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП?

рд╕рдорд╕реНрдпрд╛ рдЗрд╕ рддрдереНрдп рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдХрд┐ рдХреБрдЫ рд╢рдмреНрдж рдХреБрдЫ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ рдпрд╛ рд╡реЗ 1000 рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдмреНрд▓реЙрдХреЛрдВ рдореЗрдВ рд╣реЛрдВрдЧреЗред рдпрд╣реА рд╣реИ, рдЕрдЧрд░ рдореИрдВ рд╕рднреА 1000 рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрд╣рд▓реА 1000 рд▓рд╛рдЗрдиреЛрдВ рд╕реЗ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рд▓рд╛рдЗрди рд╕реЗ рд▓реЗ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╢рдмреНрдж рдХреЗ рд╕рд╛рде, рдореИрдВ рд╕рднреА 20 рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рдкрд╛рд╕ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВред



рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ? рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рдорд░реНрдЬрд░реНрдЯ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЕрдВрддрд┐рдо рдЪрд░рдг рд╣реИ - рдХреНрд░рдордмрджреНрдз рд╕реВрдЪрд┐рдпреЛрдВ рдХрд╛ рд╕рдВрдпреЛрдЬрдиред рдпрджрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдЫреЛрдбрд╝реЗрдВред

рд╣рдо рд╕рднреА 20 рдлрд╛рдЗрд▓реЛрдВ рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рд▓реЗрддреЗ рд╣реИрдВ, рдиреНрдпреВрдирддрдо рдкреНрд░рдердо рддрддреНрд╡ (рд╢рдмреНрдж) рдХреА рддрд▓рд╛рд╢ рдХрд░рддреЗ рд╣реИрдВ - рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕рдм рдХреБрдЫ рдореЗрдВ рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдлрд╛рдЗрд▓реЗрдВ рдЫрд╛рдВрдЯ рд▓реА рд╣реИрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдпрд╣ рд╢рдмреНрдж "рдЕрдиреНрдбрд░рд╡рд╛рд░реНрдХ" рд╣реИ рд╣рдо рд╕рднреА 20 рдкрдВрдХреНрддрд┐рдпреЛрдВ рд╕реЗ рд▓реЗрддреЗ рд╣реИрдВ рдЬреЛ рд╣рдо рдХреЗрд╡рд▓ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рд╢рдмреНрдж "рдЕрдирд╡рд╛рд░рд╡рд╛рд░реНрдХ" рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред рдФрд░ рд╡рд╣рд╛рдВ рд╕реЗ, рдЬрд╣рд╛рдВ рд╕реЗ рд╣рдо рдЗрд╕реЗ рд╣рдЯрд╛рддреЗ рд╣реИрдВ - рдХреЗрд╡рд▓ рдЙрди рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╣рдо рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рдкрдврд╝рддреЗ рд╣реИрдВред рдлрд┐рд░ рд╕реЗ, рд╣рдо рдЗрди 20 рдХреЗ рдмреАрдЪ рдиреНрдпреВрдирддрдо рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╕рд╛рджреГрд╢реНрдп рд╕реЗ - рдЖрдЧреЗ, рдЬрдм рддрдХ рд╣рдо рд╕рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдЕрдВрдд рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рдЬрд╛рддреЗред

MapReduce рдЕрдкрдиреЗ рд╕рд░рд▓рддрдо рд░реВрдк рдореЗрдВ


рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд▓рдЧрднрдЧ рдЕрдкрдиреЗ рд▓рд┐рдП рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ рдХрд┐ Google рдиреЗ рдПрдХ рджрд╢рдХ рдкрд╣рд▓реЗ рдореБрдЭрд╕реЗ рдкрд╣рд▓реЗ рдХреНрдпрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ рдФрд░ рдореИрдкрд░реЗрдбреНрдпреВрд╕ рдХрд╣рд╛ред

рд╕рд╛рдЗрдХрд┐рд▓ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдЖрдЬ рднреА рдЬрд╛рд░реА рд╣реИред

рддреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рд╣реИ : "foo bar baz bar" ред

рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ: { foo: 1, bar: 2, baz: 1 } ред

рдкрд╣рд▓рд╛ рдХрджрдо, рд╣рдо рдПрдХ рдкрдВрдХреНрддрд┐ рд▓реЗрддреЗ рд╣реИрдВ, рдЗрд╕реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рддреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддреЗ рд╣реИрдВ (рдпрд╛ рдмрд▓реНрдХрд┐: "рдЯреНрдпреВрдкрд▓реНрд╕" - "рдЯреНрдпреВрдкрд▓реНрд╕"):

[ 'foo', 1 ]
[ 'bar', 1 ]
[ 'baz', 1 ]
[ 'bar', 1 ]


(рдЖрдЧреЗ рдореИрдВ рдХреЛрд╖реНрдардХ рдФрд░ рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛ рдЬрд╣рд╛рдВ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧрд╛)
рд╣рдо рдЙрдиреНрд╣реЗрдВ рд▓реЗрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдХреНрд░рдордмрджреНрдз рдХрд░рддреЗ рд╣реИрдВ:

bar, 1
bar, 1
baz, 1
foo, 1


рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдмрд╛рд░ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рджреЛ рдмрд╛рд░ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдЗрд╕ рд░реВрдк рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

bar, (1,1)
baz, (1)
foo, (1)


(1,1) рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдиреЗрд╕реНрдЯреЗрдб рд╕рд░рдгреА рд╣реИ, рдЬреЛ рдХрд┐ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рд╣реИ - рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╣реИ: ["bar", [1,1]] ред

рдлрд┐рд░ рд╣рдо рдмрд╕ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рджреВрд╕рд░реЗ рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ ред рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ:

bar, 2
baz, 1
foo, 1


рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рдЬреЛ рд╡реЗ рдЪрд╛рд╣рддреЗ рдереЗред

рдореБрдЦреНрдп рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдмрдХрд░реА рдмрдЯрди рд╕рдордЭреМрддреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╣реИ ... рдпрд╛ рд╣рдордиреЗ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдФрд░ рдХреНрдпреЛрдВ?

рд╡рд╛рдкрд╕ рдЕрддреАрдд рдореЗрдВ


рдпрджрд┐ рд╣рдо рдХрд▓реНрдкрдирд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ 2 рд▓рд╛рдЗрдиреЗрдВ рдлрд┐рдЯ рд╣реИрдВ рдФрд░ рдпрд╣ рдкреНрд░рддрд┐ рдорд┐рдирдЯ рдкреНрд░рддрд┐ рд▓рд╛рдЗрди рдХреЗрд╡рд▓ рдПрдХ рдСрдкрд░реЗрд╢рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ ред (рдЧрд┐рдЧреНрд▓рд┐рдВрдЧ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП! рдХрдо рд╕реЗ рдХрдо рдПрдХ рдмрд╛рд░ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ рд╕рднреА рд╢рдмреНрджреЛрдВ рдХреЛ рдЧрд┐рдирдиреЗ рдХреЗ рдмрд╛рдж - рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдореЗрдореЛрд░реА рд╕реАрдорд╛ рдкрд░ рд╣рдВрд╕рдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реЛрдЧрд╛, рдпрд╣ рдЕрднреА рднреА рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рднрд▓реЗ рд╣реА рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд┐рддрдиреЗ рдЧреАрдЧ рд╣реЛ, рдФрд░ рдпрджрд┐ рдпрд╣ рдЯреВрдЯ рдЬрд╛рдП, рддреЛ рдкреВрд░реЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ :))ред

рд╣рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ( "foo bar baz bar" ) рджреЛ рдлрд╛рдЗрд▓реЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрдирд╛рдПрдВ:

file1.txt
[ 'bar', 1 ]
[ 'foo', 1 ]

file2.txt
[ 'bar', 1 ]
[ 'baz', 1 ]


рд╣рдорд╛рд░реА рдореЗрдореЛрд░реА рдореЗрдВ рд╣рдорд╛рд░реА рджреЛ рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВ - рд╕рдм рдХреБрдЫ рдХреНрд░рдо рдореЗрдВ рд╣реИ, рд╡реЗ рдореЗрдореЛрд░реА рд╕реАрдорд╛ рдореЗрдВ рдлрд┐рдЯ рд╣реЛрддреЗ рд╣реИрдВред

рдЕрдм MergeSort рдХреЗ рдЪрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:

bar, (1,1)
baz, (1)
foo, (1)


рдЙрд╕реА рд╕рдордп, рд╣рдорд╛рд░реА рд╕реНрдореГрддрд┐ рдореЗрдВ рд╣рд░ рдмрд╛рд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 2 рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдХреЗрд╡рд▓ рджреЛ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреА рд╣реИрдВ - рдЕрдзрд┐рдХ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВред

рджрд░рдЕрд╕рд▓, рд╣рдордиреЗ рдЬреЛ рдХрд┐рдпрд╛ рд╡рд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА MapReduce рд╣реИред

рд╡рд╣ рдХрджрдо, рдЬреЛ рд╢рдмреНрджреЛрдВ ( , 1 ) рд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИ - рдЗрд╕ рдХрджрдо рдХреЛ "рдореИрдк" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ред
рдЪрд░рдг (1,1) рд╕рд╛рд░рд╛рдВрд╢ (1,1) рдЬреЛ (1,1) "рдХрдо" рдХрджрдо рд╣реИ ред

рдмрд╛рдХреА рдЪрд░рдгреЛрдВ рдХреЛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЦреБрдж (рдорд░реНрдЬрд╕реЙрд░реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЫрд╛рдВрдЯрдирд╛ рдФрд░ рд╕рдВрдпреЛрдЬрди рдХрд░рдирд╛) рдХрд░реЗрдЧрд╛ред

рдирдХреНрд╢рд╛, рдХрдо рдХрд░реЗрдВ рдпрд╣ рдХреНрдпрд╛ рд╣реИ



рдпреЗ рдЪрд░рдг рд╕реНрд╡рдпрдВ "рдорд╛рдирдЪрд┐рддреНрд░" рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЛ рдЬрд╛рд░реА рдХрд░рдиреЗ рдпрд╛ "рдХрдореА" рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рддрд╣ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИрдВред рдпреЗ рдХреЗрд╡рд▓ рдХрд╛рд░реНрдп рд╣реИрдВ рдЬреЛ рдХреБрдЫ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджреНрджреЗрд╢реНрдп рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, "рдореИрдк" рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ рд▓рд┐рдЦрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╢рдмреНрдж рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ (, 1) ред

рдФрд░ "рдХрдо рдХрд░реЗрдВ" рдПрдХ рдРрд╕рд╛ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ рд▓рд┐рдЦрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕рд░рдгреА (, (1,1)) рдФрд░ рдЙрддреНрдкрд╛рджрди (, 2) рд▓реЗрддрд╛ рд╣реИред

рдмрд╕ рдкрд╛рдпрдерди рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛:

  рд╢рдмреНрдж = ["рдлреВ", "рдмрд╛рд░", "рдмрд╛рдЬ"]
 def1 (рд╢рдмреНрдж):
   рд╡рд╛рдкрд╕реА [рд╢рдмреНрдж, 1]

 рдЧрд┐рд░рдлреНрддрд╛рд░ = ["рдлреВ", [1,1]]
 def1 рдХрдо рдХрд░реЗрдВ (рдЧрд┐рд░рдлреНрддрд╛рд░ рдХрд░реЗрдВ):
   рд╡рд╛рдкрд╕реА [рдЧрд┐рд░рдлреНрддрд╛рд░ [0], рд░рд╛рд╢рд┐ (рдЧрд┐рд░рдлреНрддрд╛рд░реА [1])] 


рдпрд╛ PHP:

  $ рд╢рдмреНрдж = рд╕рд░рдгреА ("рдлреВ", "рдмрд╛рд░", "рдмрд╛рдЬ")
 рдлрд╝рдВрдХреНрд╢рди рдореИрдк 1 ($ рд╢рдмреНрдж) {
   рд░рд┐рдЯрд░реНрди рдРрд░реЗ ($ рд╢рдмреНрдж, 1);
 }

 рдЧрд┐рд░рдлреНрддрд╛рд░реА = рд╕рд░рдгреА ("рдлреВ", рд╕рд░рдгреА (1,1))
 рдлрд╝рдВрдХреНрд╢рди рдХрдо 1 (рдЧрд┐рд░рдлреНрддрд╛рд░) {
   рд╡рд╛рдкрд╕реА рд╕рд░рдгреА ($ рдЧрд┐рд░рдлреНрддрд╛рд░ [0], array_sum ($ рдЧрд┐рд░рдлреНрддрд╛рд░реА [1]));
 } 


рддреЛ, рд╣рдордиреЗ рдореЗрдореЛрд░реА рд▓рд┐рдорд┐рдЯ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдкреАрдб рд▓рд┐рдорд┐рдЯ рдХреЛ рдХреИрд╕реЗ рдмрд╛рдпрдкрд╛рд╕ рдХрд░реЗрдВ?

рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рдРрд╕реЗ рдХрдВрдкреНрдпреВрдЯрд░ рд╣реИрдВред рд╣рдо рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░реЗрдЦрд╛ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рдХрд╣рддреЗ рд╣реИрдВ (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, MapReduce рдХрд╣рддреЗ рд╣реИрдВ): рдХреЗрд╡рд▓ рд╡рд┐рд╖рдо рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рд╢рдмреНрджреЛрдВ рдХреА рдЧрд┐рдирддреА рдХрд░реЗрдВ, рдФрд░ рджреВрд╕рд░реЗ рдХреЗ рд▓рд┐рдП - рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреЗрд╡рд▓ рд╢рдмреНрджреЛрдВ рдХреА рдЧрд┐рдирддреА рдХрд░реЗрдВред

рдкрд╣рд▓рд╛ рдЙрддреНрдкрд╛рджрди:
"foo bar baz bar":
foo, 1
baz, 1


рджреВрд╕рд░рд╛ рдЙрддреНрдкрд╛рджрди:
"foo bar baz bar":
bar, 1
bar, 1


рд╣рдо (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ MapReduce) рджреЛрдиреЛрдВ рд╕реЗ рдкрд░рд┐рдгрд╛рдо рд▓реЗрддреЗ рд╣реИрдВ, рд╕реЙрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рдКрдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдорд░реНрдЬрд░реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рддреЗ рд╣реИрдВ:

bar, (1,1)
baz, (1)
foo, (1)


рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕рд╛ рд╣реА рдкрд░рд┐рдгрд╛рдо рдЬрдм рдЖрдк рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдЧрд┐рдирд╛!

рдЕрдм рд╣рдо (MapReduce) рдЗрд╕реЗ рджреЛ рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ: рдкрд╣рд▓рд╛ рд╣рдо рдХреЗрд╡рд▓ рд╡рд┐рд╖рдо рд░реЗрдЦрд╛рдПрдБ рджреЗрддреЗ рд╣реИрдВ, рджреВрд╕рд░рд╛ - рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдФрд░ рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЛ Reduce step (рджреВрд╕рд░рд╛ рдЕрдВрдХ рдЬреЛрдбрд╝рдиреЗ) рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВред

рджрд░рдЕрд╕рд▓, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпреЗ рд░реЗрдЦрд╛рдПрдВ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо рдлрд┐рд░ рд╕реЗ рд╡рд╣реА рд╣реЛрдЧрд╛ рдЬреЛ рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдПред

рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рджреЛ рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдиреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╕реЗ рджреЛ рдЧреБрдирд╛ рддреЗрдЬ (рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдХреА рд╣рд╛рдирд┐ рдХреЛ рдЫреЛрдбрд╝рдХрд░)ред

рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рд╡рд╛рдкрд╕реА


Fuf! рдЗрд╕рд▓рд┐рдП MapReduce - рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЬрд╝рд░реВрд░рдд рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕реЗ рдпрд╛ рддреЛ рддреЗрдЬрд╝реА рд╕реЗ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реЛрддреА рд╣реИ, рдпрд╛ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдореЗрдореЛрд░реА (рдпрд╛ рддреЛ, рдФрд░ рд╡рд╣) рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред

рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдЙрджрд╛рд╣рд░рдг рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЫрдВрдЯрдиреА рд╣реИ (рдХреИрд╕реНрдХреЗрдб)


рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ рд╢рдмреНрджреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЧрд┐рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рд╕рд╛рде рд╣реА рд╕рд╛рде рдЙрдирдХреА рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдХреЗ рд░рд┐рд╡рд░реНрд╕ рдСрд░реНрдбрд░ рдореЗрдВ рдПрдХ рд╕реВрдЪреА рдмрдирд╛рддреЗ рд╣реИрдВ - рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╕реЗ рд╕рдмрд╕реЗ рдЕрд▓реЛрдХрдкреНрд░рд┐рдп рддрдХред

рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдХреЗ рд╕рднреА рд╢рдмреНрдж рд╕реНрдореГрддрд┐ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ, рдФрд░ рдлрд┐рд░ рд╡рд╛рдкрд╕реА рдХреЗ рд▓рд┐рдП рдпрд╣ рд╡рд┐рд╢рд╛рд▓ рд╕рд░рдгреА рд╕реНрдореГрддрд┐ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрдЧреАред рд╣рдореЗрдВ MapReduce рдХреЗ рдХреИрд╕реНрдХреЗрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдкрд╣рд▓рд╛ MapReduce рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреВрд╕рд░реЗ MapReduce рдХреЗ рдЗрдирдкреБрдЯ рдкрд░ рдЬрд╛рдПрдЧрд╛ред

рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП - рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ "рдХреИрд╕реНрдХреЗрдб" рд╢рдмреНрдж рд╕рд╣реА рд╣реИ, рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ MapReduce рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рдЕрдкрдиреЗ рд▓рд┐рдП рдЗрд╕ рд╢рдмреНрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ (рд╢рдмреНрджреЛрдВ рдХреЗ рдПрдХ рдЭрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо MapReduce рдореЗрдВ рдкрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдХреИрд╕реНрдХреЗрдб рддреБрд░рдВрдд рджреВрд╕рд░реЗ MapReduce рдореЗрдВ рдЖрддрд╛ рд╣реИ)ред

рдареАрдХ рд╣реИ, рд╢рдмреНрджреЛрдВ рдХреА рдЧрд┐рдирддреА рдХреИрд╕реЗ рдХрд░реЗрдВ - рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ:

"рдлреВ рдмрд╛рд░ рдмрд╛рдЬ рдлреВ"

рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдирдХреНрд╢рд╛ рдХрджрдо:
foo, 1
bar, 1
baz, 1
foo, 1


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ MapReduce рдХреЛ рдЬреЛрдбрд╝рддреА рд╣реИ (рдЦреБрдж, рдЖрдк рдирд╣реАрдВ, рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд░реВрдк рдореЗрдВ) рдЙрдиреНрд╣реЗрдВ:
bar, (1)
baz, (1)
foo, (1,1)


рдФрд░ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдХрджрдо рдХрдо рдХрд░реЗрдВ:
bar, 1
baz, 1
foo, 2


рдЕрдм рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рд╣рдордиреЗ рдкреВрд░реЗ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕ рд╕рд░рдгреА рдореЗрдВ рдЕрд░рдмреЛрдВ рдФрд░ рдЕрд░рдмреЛрдВ рд╢рдмреНрдж рд╣реИрдВред рд╕реНрдореГрддрд┐ рдореЗрдВ рдЗрд╕реЗ рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЖрдЗрдП рдПрдХ рдФрд░ MapReduce рд▓реЗрддреЗ рд╣реИрдВ , рдЗрд╕ рдмрд╛рд░ Map рдЗрд╕ рдЪрд╛рд▓ рдХреЛ рдХрд░реЗрдЧрд╛:

[, 15] -> рдирдХреНрд╢рд╛ () рд░рд┐рдЯрд░реНрди -> [-15, ]
[2, 15] -> рдирдХреНрд╢рд╛ () рд░рд┐рдЯрд░реНрди -> [-15, 2]
[3, 120] -> рдирдХреНрд╢рд╛ () рд░рд┐рдЯрд░реНрди -> [-120, 3]
[4, 1] -> рдореИрдк () рд░рд┐рдЯрд░реНрди -> [-1, 4]

рдпрд╣ рдХрд┐рд╕ рд▓рд┐рдП рд╣реИ?

MapReduce, рдЖрдкрдХреЗ Reduce рдореЗрдВ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╕рд░рдгреА рдХреЗ рдкрд╣рд▓реЗ рддрддреНрд╡ (рдЬреЛ рдПрдХ рдЛрдгрд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ) рджреНрд╡рд╛рд░рд╛ рдЗрди рд╕рднреА рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдЫрд╛рдБрдЯреЗрдЧрд╛ред рдпрджрд┐ рдбреЗрдЯрд╛ рдХреА рдкреВрд░реА рдорд╛рддреНрд░рд╛ рдореЗрдореЛрд░реА рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рддреЛ рднреА MapReduce рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗрдЧрд╛ - рдпрд╣реА рд╕реМрдВрджрд░реНрдп рд╣реИред рд╕рднреА рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд╢рдмреНрджреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк рдХреЗрд╡рд▓ arsort($words) рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рд▓реЗрдХрд┐рди MapReduce рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рдордиреЗ рдорд╛рдЗрдирд╕ рдХреНрдпреЛрдВ рд╣реИ?

рдХреНрдпреЛрдВрдХрд┐ MapReduce рд╣рдореЗрд╢рд╛ рдмрдврд╝рддреЗ рдХреНрд░рдо рдореЗрдВ рд╕реЙрд░реНрдЯ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЕрд╡рд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдлрд┐рд░, рдЖрд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ рдЫрдВрдЯрдиреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдШрдЯрддреЗ рдХреНрд░рдо рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдХреИрд╕реЗ рдЫрд╛рдВрдЯреЗрдВ? рдЫрдВрдЯрд╛рдИ рд╕реЗ рдкрд╣рд▓реЗ рдорд╛рдЗрдирд╕ рдПрдХ рд╕реЗ рдЧреБрдгрд╛ рдХрд░реЗрдВ рдФрд░ рдПрдХ рдХреЗ рдмрд╛рдж рдлрд┐рд░ рд╕реЗ рдорд╛рдЗрдирд╕ рдХрд░реЗрдВред

рдЖрд░реЛрд╣реА рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛: 1, 15, 120
рдЖрд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ рдЛрдгрд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛рдПрдБ: -120, -15, -1 (рд╣рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рд╢реВрдиреНрдп рдЪрд┐рд╣реНрди рдХреЗ рд╕рд╛рде, рдЬрд┐рд╕реЗ рд╣рдо рддрдм -1 рд╕реЗ рдЧреБрдгрд╛ рдХрд░рдХреЗ рд╣рдЯрд╛рддреЗ рд╣реИрдВ)

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪреАрдЬрд╝ рдШрдЯреЗрдЧреА рдЗрдирдкреБрдЯ рдкрд░:

-120, (3)
-15, (, 2) <-- - MergeSort !
-1, (4)


рд▓рд╡рд▓реА, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рджреЛ рд╢рдмреНрджреЛрдВ рдореЗрдВ 15 рдХреА "рдЖрд╡реГрддреНрддрд┐" рдереА рдФрд░ рд╡реЗ рдорд░реНрдЬрд░реНрдЯ рджреНрд╡рд╛рд░рд╛ рд╕рдореВрд╣реАрдХреГрдд рдереЗред рд╣рдо рдЗрд╕реЗ рд╕рд╣реА рдХрд░реЗрдВрдЧреЗред

рдЕрдм рд╣рдорд╛рд░реЗ Reduce рдореЗрдВ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдкрд╣рд▓реА рд╕рдВрдЦреНрдпрд╛ рдХреЛ 1 рд╕реЗ рдЧреБрдгрд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдлрд┐рд░ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рдгреА, рджреВрд╕рд░реА рдХреЗ рд▓рд┐рдП рджреЛ рд╕рд░рдгрд┐рдпрд╛рдБ рдФрд░ рддреАрд╕рд░реА рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдЙрддреНрдкрд╛рджрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдк рдХрд┐рд╕ рдореИрдк рдЕрд╡рддрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрдк Reduce step рдореЗрдВ рджреЛ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рдЖрдЙрдЯрдкреБрдЯ рд╕рд░рдгреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА - рддреЛ рдмрд╕ рдЗрд╕реЗ рдЕрдкрдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдЕрдкрдиреЗ Reduce step рдХреЗ рдмрд╛рдж рдХрд░реЗрдВ ред

рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ:

120, 3
15, ,
15, 2
1, 4


рдмреНрдпреВрдЯреА! рдХреНрдпрд╛ рдЬрд░реВрд░рдд рдереАред

рдлрд┐рд░ рд╕реЗ, рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдореБрдЦреНрдп рдмрд╛рдд рдЬреЛ рд╣рдордиреЗ рдпрд╣рд╛рдВ рджрд░рдХрд┐рдирд╛рд░ рдХреА рд╣реИ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдЪрд╛рд░ рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рд╣реИ, рдФрд░ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдореЗрдВ рдЕрд░рдмреЛрдВ рд╢рдмреНрдж рд╣реИрдВ рдЬреЛ рд╕реНрдореГрддрд┐ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред

рдХреИрд╕реЗ рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ MapReduce рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП?


PHP рдореЗрдВ : рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ ред
рдкрд╛рдпрдерди рдЗрд╕рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ (рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рджреЗрдЦреЗрдВ)ред

рдХреЛрдб рдореЗрдВ, рдореИрдВрдиреЗ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдХрд┐ рдХрд╛рд▓реЗ рд░рдВрдЧ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рдкреВрд░реНрдг MapReduce рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдФрд░ рдХрд╣рд╛рдБ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ... рдлрд╛рдЗрд▓реЛрдВ рдФрд░ рдорд░реНрдЬрд╕реЙрд░реНрдЯ рдХреЗ рдЕрд░реНрде рдореЗрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдПрдХ рд╕рдВрджрд░реНрдн рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ , рдЗрд╕рд▓рд┐рдП рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЪрд╛рд░реЛрдВ рдУрд░ рдЦреЗрд▓рдиреЗ рдФрд░ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ MapReduce рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЕрднреА рднреА MapReduce рд╣реИ, рдмрд╕ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реНрдореГрддрд┐ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдПрдХ рдирд┐рдпрдорд┐рдд рд╣реИрд╢ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд▓рд╛рднрджрд╛рдпрдХ рдирд╣реАрдВ рд╣реИред

рдореИрдВрдиреЗ PHP рдХреЛ рдЪреБрдирд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд▓рдЧрднрдЧ рдХреЛрдИ рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ PHP рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рднрд╛рд╖рд╛ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред

рд╕рдВрдХреЗрдд рдФрд░ рдзреЛрдЦрд╛


рд╣рд╛рдВ, рдореИрдВ рд▓рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рдПрд░рди (json_encode) рд▓рд╛рдЗрди рдХреЗ JSON рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ - рд╢рдмреНрджреЛрдВ рдореЗрдВ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рдпреВрдирд┐рдХреЛрдб, рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрдо рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛрдВрдЧреА, рдЕрд░реНрдерд╛рддреН:
["foo", 1]
["bar", 1]
["foo", 1]


рд╕рдВрдХреЗрдд - рдкрд╛рдпрдерди рдореЗрдВ, рдЕрдВрддрд┐рдо рдЪрд░рдг рдорд░реНрдЬрд╕реНрдЯреЙрд░реНрдЯ рдкрд╣рд▓реЗ рд╣реА рд▓рд╛рдЧреВ рд╣реЛ рдЪреБрдХрд╛ рд╣реИ heapq.merge(*iterables) ред

рдпрд╣ рд╣реИ, JSON рдЕрднреНрдпрд╛рд╡реЗрджрди рдХреЗ рд╕рд╛рде 10 рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:

  рдЖрдЗрдЯрдо = рд╕реВрдЪреА (рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЗ рд▓рд┐рдП itertools.imap (json.loads, open (рдлрд╝рд╛рдЗрд▓ рдирд╛рдо))
 heapq.merge (* рдЖрдЗрдЯрдо) рдореЗрдВ рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП:
   # .... рдШрдЯрд╛рдирд╛ (рдордж) ...ред 


MergeSort рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде PHP рдореЗрдВ, рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдкрдЪрд╛рд╕ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рде рдкрд░реЗрд╢рд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЬрдм рддрдХ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдХреЛрдИ рднреА рдореБрдЭреЗ рдПрдХ рдмреЗрд╣рддрд░ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рдмрддрд╛рддрд╛ рд╣реИред

рдкрд╛рдпрдерди рдореЗрдВ, MapReduce рдХреЗ рд▓рд┐рдП yield рдФрд░ __iter__ - рдЖрдкрдХреЛ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛! рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬреИрд╕реЗ:

  x = MapReduce ()
 "рдлреВ рдмрд╛рд░ рдмрд╛рд░" рдореЗрдВ рд╢рдмреНрдж рдХреЗ рд▓рд┐рдП .plplit ():
    x.send (рд╢рдмреНрдж, 1)

 рд╢рдмреНрдж рдХреЗ рд▓рд┐рдП, рдПрдХреНрд╕ рдореЗрдВ рд╡рд╛рд▓реЗ:
    рдкреНрд░рд┐рдВрдЯ рд╢рдмреНрдж, рд░рд╛рд╢рд┐ (рд╡рд╛рд▓реЗ) 


class MapReduce - рдЖрдкрдХреЛ рдЗрд╕реЗ рдЦреБрдж рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ (рдореИрдВрдиреЗ 24 рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рднреАрддрд░ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрд╛ , рд╢рд╛рдпрдж рдХрдо - iter_group рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдирд╛ PHP рдЙрджрд╛рд╣рд░рдг рд╕реЗ group_tuples_by_first_element рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИ)ред

рд╕рд╛рд╡рдзрд╛рдиреА - рдпрд╣ рд╡рд┐рдзрд┐ MapReduce рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдХреНрд▓рд╛рд╕рд┐рдХ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕реЗ рдХрдИ рдорд╢реАрдиреЛрдВ рдкрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ (рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдЗрд╕ рдкрджреНрдзрддрд┐ рдореЗрдВ рдХрд╛рдлреА рддреБрдЪреНрдЫ рд╣реИ рдХрд┐ рд╕реНрдореГрддрд┐ рд╕реЗ рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рд╡реЙрд▓реНрдпреВрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП)ред map_reduce(source_data, map1, reduce1) рд╡рд┐рдзрд┐ map_reduce(source_data, map1, reduce1) , рдЬрд╣рд╛рдБ map1 рдФрд░ less1 рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╣реИрдВ - рдЕрдзрд┐рдХ рд╕рд╣реА рд╣реИред

Hadoop рдкрд░ MapReduce рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рдорд╛рдзрд╛рди рд╣реИред (рдореИрдВрдиреЗ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдпрд╛ рдирд╣реАрдВ рд╣реИ, рдореБрдЭреЗ рдЕрднреА рдкрддрд╛ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдХреНрдпрд╛ рд╣реИ)ред

рдЕрдВрддрднрд╛рд╖рдг


рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдмрд┐рдирд╛ рдЬрд╝реВрдореА рдХреЗ рдореИрдкрд░реЗрдб рдХреЗ рдмрд┐рдирд╛ рдореЗрд░реА рдХрд╣рд╛рдиреА рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреАред

рдХрд┐рд╕реА рднреА рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП MapReduce рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рдЪреАрдЬ рд╣реИред рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА SQL рдХреНрд╡реЗрд░реА, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрдИ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ, MapReduce + join_iterator (рдЙрд╕ рд╕рдордп рдкрд░ рдЕрдзрд┐рдХ) рдореЗрдВ рд╡рд┐рдШрдЯрд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рддрд╛рдХрдд рд╣реИ - рдЕрдЧрд▓реЗ рд╡рд┐рд╖рдп рдореЗрдВ рдореИрдВ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдкрд░реЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рд▓рд┐рдВрдХ рдХреИрд╕реЗ рдкрдврд╝реЗрдВ, рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╢рдмреНрджреЛрдВ рдХреА рдЖрд╡реГрддреНрддрд┐, рд╢рд╣рд░реЛрдВ рдореЗрдВ рд▓реЛрдЧ, рд╕реИрдХрдбрд╝реЛрдВ рдХрдВрдкрдирд┐рдпреЛрдВ рдХреА рдореВрд▓реНрдп рд╕реВрдЪреА рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЙрддреНрдкрд╛рдж рдЖрджрд┐ред ред

рд╣рд╛рдБ, рдпрд╣рд╛рдБ рд╣рд░ рдХреЛрдИ! MapReduce рдХреЛ Google рджреНрд╡рд╛рд░рд╛ рдкреЗрдЯреЗрдВрдЯ рдХрд░рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ , рд▓реЗрдХрд┐рди рд╕реБрд░рдХреНрд╖рд╛рддреНрдордХ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП - рдЙрд╕реА Hadoop рдХреЛ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рд╣реИред рдЗрд╕рд▓рд┐рдП - рджреЗрдЦрднрд╛рд▓ рдХреЗ рд╕рд╛рде рд╕рдВрднрд╛рд▓ред

рднрд╛рдЧ рджреЛ: рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рдЙрджрд╛рд╣рд░рдг ред

рдпреЛрдп рд╣рд╛рдЬреА
рджреЗрдЦреЗрдВ, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╣реИрдмрд░ рд╕реЗ ,
2010

(рдХрд┐рд╕реА рджрд┐рди рдореИрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╕рдордЭрд╛рдирд╛ рд╕реАрдЦреВрдВрдЧрд╛ ....)

Source: https://habr.com/ru/post/In103467/


All Articles