рд░реЛрд╕реНрдЯреЗрд▓рдХреЙрдо рдореЗрдВ, рд╣рдо рдЬрд╛рд╡рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдИ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Hadoop рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдЕрдм рдХрд░рдмреЗрд░реЛрд╕ рдСрдереЗрдВрдЯрд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рд╣рдбреВрдк рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЪрд▓реЗ рдЧрдП рд╣реИрдВред рдЪрд▓рддреЗ рд╕рдордп, рдореБрдЭреЗ YARN API рдХреЗ рдЙрдкрдпреЛрдЧ рд╕рд╣рд┐рдд рдХрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдХрд░рдмреЗрд░реЛрд╕ рдСрдереЗрдВрдЯрд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рд╣рдбреЛрдк рдХрд╛ рдХрд╛рдо рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдХреЗ рдпреЛрдЧреНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рд╣рдбреЛрдк рдореИрдкрд░рд╛рдЗрдб рдХреЛ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред

рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдХрд╛рд░реНрдп рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдбрд┐рдмрдЧрд░ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛ рдЗрд╕ рддрдереНрдп рд╕реЗ рдЬрдЯрд┐рд▓ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рдиреЛрдб рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреЗ рдЗрд╕ рдпрд╛ рдЙрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдЧрд╛, рдФрд░ рд╣рдо рдЕрдкрдиреЗ рдбрд┐рдмрдЧрд░ рдХреЛ рдЕрдЧреНрд░рд┐рдо рд░реВрдк рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдк рд╕рдордп-
System.out.println("message")
рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЗрди рдиреЛрдбреНрд╕ рдореЗрдВ рдмрд┐рдЦрд░реЗ рд╣реБрдП
System.out.println("message")
рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреИрд╕реЗ рдХрд░реЗрдВ?
рд╣рдо рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдорд╛рдирдХ рддреНрд░реБрдЯрд┐ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдм рдХреБрдЫ stdout рдпрд╛ stderr рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ,
рдЙрдкрдпреБрдХреНрдд рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдкрд░ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд╛рд░реНрдп рд╕реВрдЪрдирд╛ рд╡реЗрдм рдкреЗрдЬ рдкрд░ рдпрд╛ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╣рдо рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЯреВрд▓ рднреА рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХрд╛рд░реНрдп рд╕реНрдерд┐рддрд┐ рд╕рдВрджреЗрд╢ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдкрджрд╛ рдХреЗ рдкреИрдорд╛рдиреЗ рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рд╣рдорд╛рд░реА рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рдХрд╛рдЙрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
Hadoop MapReduce рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЙрди рд╕рднреА рддреАрди рддрд░реАрдХреЛрдВ рд╕реЗ рдбреАрдмрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ Hadoop рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
- рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди
- рдЫрджреНрдо рд╡рд┐рддрд░рд┐рдд рдореЛрдб
- рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рддрд░рд┐рдд
рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╣рдо рдкрд╣рд▓реЗ рджреЛ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВрдЧреЗред
рдЫрджреНрдо рд╡рд┐рддрд░рд┐рдд рдореЛрдб
рдЫрджреНрдо-рд╡рд┐рддрд░рд┐рдд рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдЙрддреНрдкрд╛рджрдХ рдХреЗ рдХрд░реАрдмред рдЗрд╕ рдореЛрдб рдореЗрдВ, рд╕рднреА Hadoop рдбреЗрдорди рдПрдХ рдиреЛрдб рдкрд░ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ!
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рджреЗрд╡ рд╕рд░реНрд╡рд░ рдпрд╛ рдЕрдиреНрдп рд╕реИрдВрдбрдмреЙрдХреНрд╕ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдиреБрдХреВрд▓рд┐рдд рд╡рд┐рдХрд╛рд╕ рдХреЗ рдорд╛рд╣реМрд▓ рдХреЗ рд╕рд╛рде рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди, рдЬреИрд╕реЗ рдХрд┐ рдПрдЪрдбреАрдкреАрдЖрд░ рдХреЗ рд╕рд╛рде рд╣реЙрд░реНрдЯрдирд╡рд░реНрдХреНрд╕ рд╕реИрдирдмреЙрдХреНрд╕), рддреЛ рдЖрдк рд░рд┐рдореЛрдЯ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдбреАрдмрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдбрд┐рдмрдЧрд┐рдВрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХрд╛ рдорд╛рди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
YARN_OPTS
ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдк startWordCount.sh рдлрд╝рд╛рдЗрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдм, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдирд╛
`./startWordCount.sh`
, рд╣рдо рдПрдХ рд╕рдВрджреЗрд╢ рджреЗрдЦреЗрдВрдЧреЗ
Listening for transport dt_socket at address: 6000
рдпрд╣ рджреВрд░рд╕реНрде рдбреАрдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП IDE рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИред рдореИрдВ intellij IDEA рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореЗрдиреВ рдкрд░ рдЬрд╛рдПрдВ рд░рди -> рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ ... рдПрдХ рдирдпрд╛
Remote
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЬреЛрдбрд╝реЗрдВред

рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рдХреЛ рдореЗрди рдФрд░ рд░рди рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВред

рдпрд╣реА рд╣реИ, рдЕрдм рд╣рдо рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдбрд┐рдмрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЪреЗрддрд╛рд╡рдиреАред рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЖрдк рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдЕрдВрддрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдбрд┐рдмрдЧрд░ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
Hadoop рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдЧ рдХреА рдЖрдкреВрд░реНрддрд┐ рдХреА рдЧрдИ рдереА рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рдЕрд╕рдлрд▓ рдХрд╛рд░реНрдп рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рдерд╛ - рдЖрдЗрд╕реЛрд▓реЗрд╢рдирд░рдирд░ред рд╡рд┐рдлрд▓рддрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреЛ Hadoop рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ mapred.local.dir рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрддреЗ рдкрд░ рдбрд┐рд╕реНрдХ рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рдерд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, Hadoop рдХреЗ рд╣рд╛рд▓ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, рдпрд╣ рд╡рд░реНрдЧ рдЕрдм рдЖрдкреВрд░реНрддрд┐ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди (рд╕реНрдерд╛рдиреАрдп рд╢реБрд░реБрдЖрдд)
рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдПрдХ рдорд╛рдирдХ рд╡рд┐рдзрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдбреЛрдк рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдбреАрдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ рдЬрд╣рд╛рдВ рдПрдЪрдбреАрдПрдлрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕реЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд╕рд╛рде, рдЖрдк рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдореЛрдб рдЖрдорддреМрд░ рдкрд░ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рд╣реИрдбреЛрдк рдореЛрдб рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рднреА рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдк рдбрд┐рдмрдЧрд┐рдВрдЧ рдЯреВрд▓ рдХреЛ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд╛рдЙрдВрдЯрд░ред рдХрд╛рдЙрдВрдЯрд░реЛрдВ рдХреЛ рдЬрд╛рд╡рд╛
рдПрдирдо рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЧрдгрдирд╛ рдирд╛рдо рд╕рдореВрд╣ рдХреЗ рдирд╛рдо рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЧрдгрдирд╛ рдХреНрд╖реЗрддреНрд░ рдХрд╛рдЙрдВрдЯрд░реЛрдВ рдХреЗ рдирд╛рдо рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рдЙрдВрдЯрд░ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ,
рдФрд░ рдбрд┐рдмрдЧ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдШреЛрд╖рдгрд╛ рдФрд░ рдХрд╛рдЙрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ:
package ru.rt.example; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Mapper; public class Map extends Mapper<LongWritable, Text, Text, IntWritable> { private Text word = new Text(); enum Word { TOTAL_WORD_COUNT, } @Override public void map(LongWritable key, Text value, Context context) { String[] stringArr = value.toString().split("\\s+"); for (String str : stringArr) { word.set(str); context.getCounter(Word.TOTAL_WORD_COUNT).increment(1); } } } }
рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрддрди
increment(1)
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
... context.getCounter(Word.TOTAL_WORD_COUNT).increment(1); ...
MapReduce рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░реНрдг рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдХрд╛рд░реНрдп рдЕрдВрдд рдореЗрдВ рдХрд╛рдЙрдВрдЯрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
Shuffle Errors BAD_ID=0 CONNECTION=0 IO_ERROR=0 WRONG_LENGTH=0 WRONG_MAP=0 WRONG_REDUCE=0 ru.rt.example.Map$Word TOTAL_WORD_COUNT=655
рддреНрд░реБрдЯрд┐рдкреВрд░реНрдг рдбреЗрдЯрд╛ рдХреЛ stderr рдпрд╛ stdout рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдЖрдЧреЗ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП
MultipleOutputs
рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ hdfs рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдореЛрдб рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЗрдирдкреБрдЯ рдкрд░ рдпрд╛ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрддреЗ рд╕рдордп рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
Hadoop рдореЗрдВ MRUnit рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ (рдЬреИрд╕реЗ JUnit) рдХреЗ рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрддреЗ рд╕рдордп, рд╣рдо рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред рд╣рдо MRDnit рдкреИрдХреЗрдЬ рд╕реЗ MapDriver рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдЧреБрдгреЛрдВ рдореЗрдВ рд╣рдо рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рд╡рд░реНрдЧ рдХреЛ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
withMapper()
рд╡рд┐рдзрд┐, рдЗрдирдкреБрдЯ рдорд╛рди
withInputValue()
рдФрд░ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо
withOutput()
рдпрд╛
withMultiOutput()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдпрджрд┐ рдПрдХрд╛рдзрд┐рдХ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣рд╛рдБ рд╣рдорд╛рд░реА рдкрд░реАрдХреНрд╖рд╛ рд╣реИред
package ru.rt.example; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mrunit.mapreduce.MapDriver; import org.apache.hadoop.mrunit.types.Pair; import org.junit.Before; import org.junit.Test; import java.io.IOException; public class TestWordCount { private MapDriver<Object, Text, Text, IntWritable> mapDriver; @Before public void setUp() { Map mapper = new Map(); mapDriver.setMapper(mapper) } @Test public void mapperTest() throws IOException { mapDriver.withInput(new LongWritable(0), new Text("msg1")); mapDriver.withOutput(new Pair<Text, IntWritable>(new Text("msg1"), new IntWritable(1))); mapDriver.runTest(); } }
рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдореЛрдб
рдЬреИрд╕рд╛ рдХрд┐ рдирд╛рдо рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рдРрд╕реА рд╡рд┐рдзрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдбрдкреЙрдк рдХреА рд╕рднреА рд╢рдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ MapReduce рдкреНрд░реЛрдЧреНрд░рд╛рдо 1000 рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИред MapReduce рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдбреАрдмрдЧ рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рдХрдард┐рди рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рд╡рд╛рд▓реЗ рд╡рд┐рднрд┐рдиреНрди рдорд╢реАрдиреЛрдВ рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдореИрдкрд░ рд╣реЛрддреЗ рд╣реИрдВред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛, MapReduce рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдЙрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИред
MapReduce рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рд╕рдордп рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдКрдкрд░ рд╕реВрдЪреАрдмрджреНрдз рд╕рднреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдореИрдВ рд╕рднреА рдХреЛ рдЙрдиреНрд╣реЗрдВ рднреА рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдпрд╣ рдмрдбрд╝реЗ рдкреНрд░рддрд┐рд╖реНрдард╛рдиреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд░реЛрд╕реНрдЯреЗрд▓рдХреЙрдо рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗред