рдкрд░реАрдХреНрд╖рдг рдФрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ MapReduce

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



рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдХрд╛рд░реНрдп рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдбрд┐рдмрдЧрд░ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛ рдЗрд╕ рддрдереНрдп рд╕реЗ рдЬрдЯрд┐рд▓ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рдиреЛрдб рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреЗ рдЗрд╕ рдпрд╛ рдЙрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдЧрд╛, рдФрд░ рд╣рдо рдЕрдкрдиреЗ рдбрд┐рдмрдЧрд░ рдХреЛ рдЕрдЧреНрд░рд┐рдо рд░реВрдк рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдк рд╕рдордп- System.out.println("message") рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЗрди рдиреЛрдбреНрд╕ рдореЗрдВ рдмрд┐рдЦрд░реЗ рд╣реБрдП System.out.println("message") рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреИрд╕реЗ рдХрд░реЗрдВ?

рд╣рдо рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдорд╛рдирдХ рддреНрд░реБрдЯрд┐ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдм рдХреБрдЫ stdout рдпрд╛ stderr рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ,
рдЙрдкрдпреБрдХреНрдд рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдкрд░ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд╛рд░реНрдп рд╕реВрдЪрдирд╛ рд╡реЗрдм рдкреЗрдЬ рдкрд░ рдпрд╛ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╣рдо рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЯреВрд▓ рднреА рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХрд╛рд░реНрдп рд╕реНрдерд┐рддрд┐ рд╕рдВрджреЗрд╢ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдкрджрд╛ рдХреЗ рдкреИрдорд╛рдиреЗ рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рд╣рдорд╛рд░реА рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рдХрд╛рдЙрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

Hadoop MapReduce рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЙрди рд╕рднреА рддреАрди рддрд░реАрдХреЛрдВ рд╕реЗ рдбреАрдмрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ Hadoop рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ:

  • рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди
  • рдЫрджреНрдо рд╡рд┐рддрд░рд┐рдд рдореЛрдб
  • рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рддрд░рд┐рдд

рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╣рдо рдкрд╣рд▓реЗ рджреЛ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВрдЧреЗред

рдЫрджреНрдо рд╡рд┐рддрд░рд┐рдд рдореЛрдб


рдЫрджреНрдо-рд╡рд┐рддрд░рд┐рдд рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдЙрддреНрдкрд╛рджрдХ рдХреЗ рдХрд░реАрдмред рдЗрд╕ рдореЛрдб рдореЗрдВ, рд╕рднреА Hadoop рдбреЗрдорди рдПрдХ рдиреЛрдб рдкрд░ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ!

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рджреЗрд╡ рд╕рд░реНрд╡рд░ рдпрд╛ рдЕрдиреНрдп рд╕реИрдВрдбрдмреЙрдХреНрд╕ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдиреБрдХреВрд▓рд┐рдд рд╡рд┐рдХрд╛рд╕ рдХреЗ рдорд╛рд╣реМрд▓ рдХреЗ рд╕рд╛рде рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди, рдЬреИрд╕реЗ рдХрд┐ рдПрдЪрдбреАрдкреАрдЖрд░ рдХреЗ рд╕рд╛рде рд╣реЙрд░реНрдЯрдирд╡рд░реНрдХреНрд╕ рд╕реИрдирдмреЙрдХреНрд╕), рддреЛ рдЖрдк рд░рд┐рдореЛрдЯ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдбреАрдмрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдбрд┐рдмрдЧрд┐рдВрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХрд╛ рдорд╛рди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: YARN_OPTS ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдк startWordCount.sh рдлрд╝рд╛рдЗрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

 #!/bin/bash source /etc/hadoop/conf/yarn-env.sh export YARN_OPTS='-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=6000 ${YARN_OPTS}' yarn jar wordcount-0.0.1.jar ru.rtc.example.WordCount /input /output 

рдЕрдм, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдирд╛ `./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 рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рд╕рдордп рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдКрдкрд░ рд╕реВрдЪреАрдмрджреНрдз рд╕рднреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдореИрдВ рд╕рднреА рдХреЛ рдЙрдиреНрд╣реЗрдВ рднреА рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдпрд╣ рдмрдбрд╝реЗ рдкреНрд░рддрд┐рд╖реНрдард╛рдиреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд░реЛрд╕реНрдЯреЗрд▓рдХреЙрдо рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗред

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


All Articles