Hadoop рднрд╛рдЧ 3: рд╕реБрдЕрд░, рдбрд╛рдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ

des-48-5

рдкрд┐рдЫрд▓реЗ рдкреНрд░рдХрд╛рд╢рди рдореЗрдВ, рд╣рдордиреЗ рд╡рд┐рд╢реЗрд╖ рдлрд╝реНрд▓реЗрдо рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЬрд╛рдБрдЪ рдХреАред рд▓реЗрдХрд┐рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ: рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдФрд░ рдЙрдкрдпреЛрдЧреА рдХреБрдЫ рд╕реЗ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

Hadoop рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП MapReduce рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред


MapReduce рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА



рдХрд╣рд╛рдиреА



Hadoop рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг MapReduce рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рддрдХрдиреАрдХ рдореВрд▓ рд░реВрдк рд╕реЗ 2004 рдореЗрдВ Google рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХреА рдЧрдИ рдереАред

2004 рдореЗрдВ, Google рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЬреЗрдлрд░реА рдбреАрди рдФрд░ рд╕рдВрдЬрдп рдЧреЗрдорд╛рд╡рдд рдиреЗ рдПрдХ рд▓реЗрдЦ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ "рдХрдЪреНрдЪреЗ" рдбреЗрдЯрд╛ (рдЕрдиреБрдХреНрд░рдорд┐рдд рджрд╕реНрддрд╛рд╡реЗрдЬрд╝, рдХреНрд╡реЗрд░реА рд▓реЙрдЧ рдЗрддреНрдпрд╛рджрд┐) рдХреЗ рдмрдбрд╝реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджрд┐рдпрд╛: рдЬрд╛рдирдХрд╛рд░реА рдХреА рдПрдХ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдХреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрди рднрд╛рдЧреЛрдВ рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╕рд░реНрд╡рд░ рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдбреЗрдЯрд╛ рдХреЛ рдЙрд╕реА рд╕рд░реНрд╡рд░ рдкрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЗрд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдФрд░ рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдкрд░рд┐рдгрд╛рдо рдПрдХ рдкреВрд░реЗ рдореЗрдВ рд╕рдВрдпреБрдХреНрдд рд╣реЛрддреЗ рд╣реИрдВред

рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦрд┐рдд рдЖрд▓реЗрдЦ рдореЗрдВ Google рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдиреЗ рдЦреБрдж рдХреЛ рдореВрд▓ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд╡рд┐рд╡рд░рдг рддрдХ рд╕реАрдорд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдгреЛрдВ рдкрд░ рдирд┐рд╡рд╛рд╕ рдирд╣реАрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА Hadoop Developers рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ MapReduce рдврд╛рдВрдЪрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдереАред

рдЖрдЬ рдпрд╣ рдХрдИ рдкреНрд░рд╕рд┐рджреНрдз рд╡реЗрдм рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдпрд╛рд╣реВ!, рдлреЗрд╕рдмреБрдХ, рд▓рд╛рд╕реНрдЯ.рдлреИрдо рдФрд░ рдЕрдиреНрдпред
Hadoop MapRedus рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдФрд░ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдФрд░ рдХрд╛рдо рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд



MapReduce рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ "рдорд╛рд╕реНрдЯрд░ - рдЕрдзреАрдирд╕реНрдереЛрдВ" (рдорд╛рд╕реНрдЯрд░ - рд╢реНрд░рдорд┐рдХреЛрдВ) рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред JobTracker рд╕рд░реНрд╡рд░ рдореБрдЦреНрдп рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдЕрдзреАрдирд╕реНрде рдиреЛрдбреНрд╕ рдХреЛ рдХрд╛рд░реНрдп рд╡рд┐рддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдирдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред

рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдФрд░ рдХрд╛рдо рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд

рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд░рдгреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
  1. рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд▓реЙрдиреНрдЪ: рдЖрд╡реЗрджрди рдХреЛрдб рдХреЛ рдореБрдЦреНрдп (рдорд╛рд╕реНрдЯрд░) рдФрд░ рдЕрдзреАрдирд╕реНрде рдиреЛрдбреНрд╕ (рд╢реНрд░рдорд┐рдХреЛрдВ) рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛;
  2. рд╡рд┐рдЬрд╝рд╛рд░реНрдб рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп (рдореИрдк рдпрд╛ рд░рд┐рдбреНрдпреВрд╕) рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдиреЛрдбреНрд╕ (рд╢реНрд░рдорд┐рдХреЛрдВ) рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ;
  3. рдореИрдк рдиреЛрдбреНрд╕ рдЙрдиреНрд╣реЗрдВ рд╕реМрдВрдкреЗ рдЧрдП рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ;
  4. рдорд╛рдирдЪрд┐рддреНрд░ рдиреЛрдбреНрд╕ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдордзреНрдпрд╡рд░реНрддреА рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ: рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рд╕реНрдерд╛рдиреАрдп рдбрд┐рд╕реНрдХ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдмрдЪрд╛рддрд╛ рд╣реИ;
  5. рдореИрдк рдиреЛрдбреНрд╕ рд╕реЗ рдордзреНрдпрд╡рд░реНрддреА рдбреЗрдЯрд╛ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЛрдбреНрд╕ рдХреЛ рдХрдо рдХрд░реЗрдВ рдФрд░ рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЛ рдХрдо рдХрд░реЗрдВ;
  6. рдиреЛрдбреНрд╕ рдХрдо рдХрд░реЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо, рдЖрдорддреМрд░ рдкрд░ рдПрдЪрдбреАрдПрдлрдПрд╕ рдореЗрдВред


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

рд╕реВрдЕрд░


рд╕реБрдЕрд░ рдХреЗ рджреЛ рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВ:


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

рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рд╕реБрдЕрд░ рдХреЛ рдХрдВрд╕реЛрд▓ (рдЧреНрд░рдВрдЯ рд╢реЗрд▓) рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХреНрд▓рд╛рдЙрдбрд░рд╛ рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рд╕реБрдЕрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдПрдХ рд╕рд░рд▓ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реНрдпреВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ http: // [node_with_hue_installed_name]: 8888 / pig / рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ

рд╕реВрдЕрд░

рд╡реЗрдм рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рдПрдХ рдкреВрд░реНрдг рд╕рдВрдкрд╛рджрдХ рд╢рд╛рдорд┐рд▓ рд╣реИ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рдСрдЯреЛ-рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рднреА рд╣реИ) рдФрд░ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рдмрдВрдзрдХред рдЗрд╕рдХреЗ рд╕рд╛рде, рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕реАрдзреЗ Hue рдореЗрдВ рд╕реЗрд╡ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд░рдирд┐рдВрдЧ рдЯрд╛рд╕реНрдХ, рд░рд┐рдЬрд▓реНрдЯ рдФрд░ рд▓реЙрдиреНрдЪ рд▓реЙрдЧ рдХреА рдПрдХ рд╕реВрдЪреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдп


рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдп рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рджрд┐рди (рджрд┐рди) рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рднрдВрдбрд╛рд░рдг рдХреА рдкрд╣реБрдВрдЪ рд▓реЙрдЧ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░реЗрдВрдЧреЗред рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ:

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬреЛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддреА рд╣реИред рдпрд╣ рддреБрд░рдВрдд рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рд╕реБрдЕрд░ рдХреА рд╕рднреА рд▓рд┐рдкрд┐рдпреЛрдВ рдХреА рддрд░рд╣) рд▓рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЧрдИ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╣реИред рд╕реБрдЕрд░ рд╕рдВрдХрд▓рдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдбреЗрдЯрд╛ рдзрд╛рд░рд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╕рдВрдХрд▓рди рдЕрдВрдд рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд STORE рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рдеред рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рдж рдХреЛрдИ рдХрдорд╛рдВрдб рдирд╣реАрдВ рд╣реИ, рдХреЛрдИ рдХрд╛рд░реНрдп рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдбреЗрдЯрд╛ рд╕реНрд╡рдпрдВ рднреА рдирд╣реАрдВ рдкрдврд╝рд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдЖрдкрдХреЛ рдПрдХ рдордирдорд╛рдирд╛ рд░реВрдк рдореЗрдВ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЕрдиреБрдХреВрд▓рди рдкрд░ рд╕рднреА рдХрд╛рдо, рдирд┐рд╖реНрдкрд╛рджрди рдЖрджреЗрд╢ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдФрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд╛рд░реНрдп рд╕реБрдЕрд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдкреВрд░реА рд╕реВрдЪреА рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:
  рд░рд┐рдХреЙрд░реНрдбреНрд╕ = LOAD '/ рд▓реЙрдЧ / рдлреНрд▓реВрдо / рдЗрд╡реЗрдВрдЯ / 14-02-20 /' USing PigStorage ('\ t')
 рдХреЗ рд░реВрдк рдореЗрдВ (
 рджрд┐рдирд╛рдВрдХ:
 рдХреНрд▓рд╛рдпрдВрдЯрд┐рдк: рдЪрд╛рд░рд░реНрд░реЗ,
 рдЧреНрд░рд╛рд╣рдХ:
 рдкреНрд░реЛрдЯреЛ: рдЪрд╛рд░рд░реНрд░реЗ,
 рд╕реНрдерд┐рддрд┐ рдХреЛрдб: int,
 рдмрд╛рдЗрдЯреНрд╕: int,
 рд╡рд░реНрдЧ: рдХрд░реИрд░рд╛,
 bq: рдХрд░рд╛рд░рд╛,
 рдЕрдиреБрд░реЛрдз: chararray);

 count_total = FOREACH (рдЧреНрд░реБрдк рд░рд┐рдХреЙрд░реНрдбреНрд╕ рдСрд▓) рдЬреЗрдирд░реЗрдЯ COUNT (рд░рд┐рдХреЙрд░реНрдбреНрд╕);

 count_ip = FOREACH (рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЧреНрд░реБрдк рд░рд┐рдХреЙрд░реНрдб) рдЬрдирд░реЗрдЯ рдЧреНрд░реБрдк AS ip, COUNT (рд░рд┐рдХреЙрд░реНрдб) AS cnt;
 top_ip = ORDER count_ip BY cnt DESC;

 рдлрд╝рд┐рд▓реНрдЯрд░реНрдб_рд░реЗрдХ = рд╕реНрдерд┐рддрд┐ рд░рд┐рдХреЙрд░реНрдб рджреНрд╡рд╛рд░рд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░реЗрдВ == 200 рдпрд╛ рд╕реНрдерд┐рддрд┐ рдХреЛрдб == реирежрем;
 count_req = FOREACH (рдЕрдиреБрд░реЛрдз рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЧреНрд░реБрдк рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛) рд╕рд╛рдорд╛рдиреНрдп рд╕рдореВрд╣ AS req, COUNT (рдлрд╝рд┐рд▓реНрдЯрд░реНрдб_req) AS cnt, SUM (filtered_req.bytes) AS рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ;
 top_req = ORDER count_req BY рдмрд╛рдЗрдЯреНрд╕ DESC;

 % рдШреЛрд╖рд┐рдд рдбреАрдЯреА `рддрд┐рдерд┐ +% y% m% dT% H% M`
 STORE count_total INTO '$ DT / count_total';
 STORE top_ip INTO '$ DT / top_ip';
 STORE top_req INTO '$ DT / top_req'; 


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

рдЖрдЗрдП рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рд▓рджрд╛рди


  рд░рд┐рдХреЙрд░реНрдбреНрд╕ = LOAD '/ рд▓реЙрдЧ / рдлреНрд▓реВрдо / рдЗрд╡реЗрдВрдЯ / 14-02-20 /' USing PigStorage ('\ t')
 рдХреЗ рд░реВрдк рдореЗрдВ (
 рджрд┐рдирд╛рдВрдХ:
 рдХреНрд▓рд╛рдпрдВрдЯрд┐рдк: рдЪрд╛рд░рд░реНрд░реЗ,
 рдЧреНрд░рд╛рд╣рдХ:
 рдкреНрд░реЛрдЯреЛ: рдЪрд╛рд░рд░реНрд░реЗ,
 рд╕реНрдерд┐рддрд┐ рдХреЛрдб: int,
 рдмрд╛рдЗрдЯреНрд╕: int,
 рд╡рд░реНрдЧ: рдХрд░реИрд░рд╛,
 bq: рдХрд░рд╛рд░рд╛,
 рдЕрдиреБрд░реЛрдз: chararray); 


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

  07 / рджрд┐рд╕рдВрдмрд░ / 2013: 20: 05: 13 95.153.193.56 37877 http 200 1492030 0 0 GET / 745dbda3-894e-43aa-9146-607f19fe442828 HTTP/ 1.1
 08 / рджрд┐рд╕рдВрдмрд░ / 2013: 15: 00: 28 178.88.91.180 13600 http 200 4798 0 0 GET /public/cars/bmw7l/down.png HTTP / 1.1
 08 / рджрд┐рд╕рдВрдмрд░ / 2013: 15: 00: 29 193.110.115.45 64318 http 200 1594 0 0 GET /K1/img/top-nav-bg-default.jpg HTTP / 1.1 


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдФрд░ рд╢рдмреНрджрд╛рд╡рд▓реА рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдкрд┐рдЧ рд▓реИрдЯрд┐рди рдореЗрдВ рдореБрдЦреНрдп рд╡рд╕реНрддреБ " рд░рд╡реИрдпрд╛ " рд╣реИред рдпрд╣ рдРрд╕реЗ рд╕рдВрдмрдВрдз рд╣реИрдВ, рдЬрд┐рдирдХреЗ рд╕рд╛рде рд╕рднреА рднрд╛рд╖рд╛ рдСрдкрд░реЗрдЯрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рд╕рдВрдмрдВрдзреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ, рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдбреЗрдЯрд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдмрдВрдз рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИ - " рдЯреБрдкрд▓реНрд╕ " (рдЯреБрдкрд▓реНрд╕)ред рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдирд╛рд▓реЙрдЧреНрд╕: рдПрдХ рдЯреНрдпреВрдкрд▓ рдПрдХ рдкрдВрдХреНрддрд┐ рд╣реИ, рдПрдХ рд╕рдВрдмрдВрдз рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реИред

Tuples, рдХреНрд░рдорд╢рдГ, рдЧрд┐рдиреЗ рдпрд╛ рдирд╛рдорд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд╕реЗ рдорд┐рд▓рдХрд░ рдмрдирддрд╛ рд╣реИ - " рдлрд╝реАрд▓реНрдб ", рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рдкреНрд░рдХрд╛рд░ (рд╕рдВрдЦреНрдпрд╛, рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдмреВрд▓рд┐рдпрди рдЪрд░, рдЖрджрд┐)ред

рддреЛ, рдкрд┐рдЧ рд▓реИрдЯрд┐рди рдореЗрдВ, рдХрд┐рд╕реА рднреА рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдПрдХ рд╕рдВрдмрдВрдз рд╣реИ, рдЬреЛ рдЯреНрдпреВрдкрд▓реНрд╕ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИред
LOAD рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ '' рдкрд┐рдЧрд╕реНрдЯреЛрд░реАрдЬ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рд╣рдо рдпрд╣ рднреА рд╕рдВрдХреЗрдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реАрдорд╛рдВрдХрдХ рдЯреИрдм рд╡рд░реНрдг 't' рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА / рд▓реЙрдЧ / рдлреНрд▓реВрдо / рдИрд╡реЗрдВрдЯреНрд╕ / 14-02-20 / 'рд╕реЗ рдПрдЪрдбреАрдПрдлрдПрд╕ рдореЗрдВ рдлрд╛рдЗрд▓реЛрдВ рд╕реЗ рд░рд┐рд▓реЗрд╢рди рдмрдирд╛рддрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рд╕рдВрдмрдВрдз рдореЗрдВ рдПрдХ рдЯрдкрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред рдПрдПрд╕ рдЕрдиреБрднрд╛рдЧ рдЯреБрдкрд▓ рдореЗрдВ рдЦреЗрддреЛрдВ рдХреЛ рдкреНрд░рдХрд╛рд░ рдФрд░ рдирд╛рдо рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЙрдиреНрд╣реЗрдВ рдПрдХреНрд╕реЗрд╕ рдХрд░рдирд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛ред

рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг


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

  count_total = FOREACH (рдЧреНрд░реБрдк рд░рд┐рдХреЙрд░реНрдбреНрд╕ рдСрд▓) рдЬреЗрдирд░реЗрдЯ COUNT (рд░рд┐рдХреЙрд░реНрдбреНрд╕);
 count_ip = FOREACH (рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЧреНрд░реБрдк рд░рд┐рдХреЙрд░реНрдб) рдЬрдирд░реЗрдЯ рдЧреНрд░реБрдк AS ip, COUNT (рд░рд┐рдХреЙрд░реНрдб) AS cnt;
 top_ip = ORDER count_ip BY cnt DESC; 


рдкрд┐рдЧ рд▓реИрдЯрд┐рди рд╕реЗ рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛ рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд, рдЙрдкрд░реЛрдХреНрдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ: рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рдХреЙрд░реНрдб (FOREACH) рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд╛рде рд╕рдореВрд╣реАрдХреГрдд рдХрд┐рдП рдЧрдП рд░рд┐рдХреЙрд░реНрдб (GROUP ALL) рд╕реЗ, рд░рд┐рдХреЙрд░реНрдб рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб (рд╕рд╛рдорд╛рдиреНрдп COUNT)ред

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


рдЕрдЧрд▓рд╛, рд╣рдо рдПрдХ рдЕрдиреНрдп рдЯреЙрдк_рдЖрдИрдкреА рд╕рдВрдмрдВрдз рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдХрд╛рдЙрдВрдЯ_рдЖрдИрдкреА рдХреЗ рд╕рдорд╛рди рдбреЗрдЯрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди ORDER рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде cnt рдлрд╝реАрд▓реНрдб рджреНрд╡рд╛рд░рд╛ рд╕реЙрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, top_ip рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рдЖрдИрдкреА рдкрддреЗ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реЛрдЧреА рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдЕрдиреБрд░реЛрдз рдЕрдХреНрд╕рд░ рдХрд┐рдП рдЧрдП рдереЗред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рд╣рдо рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ GEO-IP рд╕реЗ рдмрд╛рдБрдз рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░рд╛ рднрдВрдбрд╛рд░рдг рдХрд┐рди рд╢рд╣рд░реЛрдВ рдФрд░ рджреЗрд╢реЛрдВ рдореЗрдВ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИ =)

  рдлрд╝рд┐рд▓реНрдЯрд░реНрдб_рд░реЗрдХ = рд╕реНрдерд┐рддрд┐ рд░рд┐рдХреЙрд░реНрдб рджреНрд╡рд╛рд░рд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░реЗрдВ == 200 рдпрд╛ рд╕реНрдерд┐рддрд┐ рдХреЛрдб == реирежрем;
 count_req = FOREACH (рдЕрдиреБрд░реЛрдз рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЧреНрд░реБрдк рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛) рд╕рд╛рдорд╛рдиреНрдп рд╕рдореВрд╣ AS req, COUNT (рдлрд╝рд┐рд▓реНрдЯрд░реНрдб_req) AS cnt, SUM (filtered_req.bytes) AS рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ;
 top_req = ORDER count_req BY рдмрд╛рдЗрдЯреНрд╕ DESC; 


рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ URL рдХреЗ рд▓рд┐рдП рд╕рдлрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рд╕рд╛рде рд╣реА рдкреНрд░рддреНрдпреЗрдХ URL рдХреЗ рд▓рд┐рдП рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреА рдХреБрд▓ рдорд╛рддреНрд░рд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ HTTP рдлрд╝рд┐рд▓реНрдЯрд░ 200 рдУрдХреЗ рдФрд░ 206 рдЖрдВрд╢рд┐рдХ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдХреЗрд╡рд▓ рд╕рдлрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реБрдП, рдлрд╝рд┐рд▓реНрдЯрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрд╣ рдХрдерди рд╕реНрдЯреЗрдЯрд╕рдХреЛрдб рдлрд╝реАрд▓реНрдб рджреНрд╡рд╛рд░рд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдХреЗ рд░рд┐рдХреЙрд░реНрдб рд░рд┐рд▓реЗрд╢рди рд╕реЗ рдирдП рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдП рдЧрдП_рд░реИрдХ рд╕рдВрдмрдВрдз рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдЕрдЧрд▓рд╛, рдЖрдИрдкреА рдкрддреЗ рдХреА рдЧрд┐рдирддреА рдХреЗ рд╕рдорд╛рди, рд╣рдо рдЕрдиреБрд░реЛрдз рдлрд╝реАрд▓реНрдб рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдореВрд╣реАрдХреГрдд рдХрд░рддреЗ рд╣реБрдП, рдЕрджреНрд╡рд┐рддреАрдп URL рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдкреНрд░рддреНрдпреЗрдХ URL рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдбреЗрдЯрд╛ рдореЗрдВ рднреА рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ: рдЗрд╕рдХреА рдЧрдгрдирд╛ SUM рдСрдкрд░реЗрдЯрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдЬреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдП рдЧрдП_рд░реЗрдХ рд╕рдВрдмрдВрдз рдХреЗ рд╕рдореВрд╣реАрдХреГрдд рд░рд┐рдХреЙрд░реНрдб рдореЗрдВ рдмрд╛рдЗрдЯ рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝рддрд╛ рд╣реИред

рдЕрдм рдПрдХ рдирдП рдЯреЙрдк_рд░реЗрдХ рд░рд┐рд▓реЗрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реБрдП рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЫрд╛рдБрдЯреЗрдВред

рдкрд░рд┐рдгрд╛рдо рд╕рд╣реЗрдЬ рд░рд╣рд╛ рд╣реИ



  % рдШреЛрд╖рд┐рдд рдбреАрдЯреА `рддрд┐рдерд┐ +% y% m% dT% H% M`
 STORE count_total INTO '$ DT / count_total';
 STORE top_ip INTO '$ DT / top_ip';
 STORE top_req INTO '$ DT / top_req'; 


рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рд╣реЗрдЬрдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдирд╛рдо рдирд┐рд╖реНрдкрд╛рджрди рдХреА рддрд╛рд░реАрдЦ рдФрд░ рд╕рдордп рд╢рд╛рдорд┐рд▓ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реАрдзреЗ рдПрдХ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд╢реЗрд▓ рдХрдорд╛рдВрдб рдХреЛ рдкрд┐рдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЖрдкрдХреЛ рдЗрд╕реЗ рдмреИрдХрдХреНрд╡рд╛рдЯрд░ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рджрд┐рдирд╛рдВрдХ рдЖрджреЗрд╢ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдбреАрдЯреА рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░реЗрдЬ рдкрде рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдо рдХреЛ STORE рдХрдорд╛рдВрдб рд╕реЗ рд╕реЗрд╡ рдХрд░реЗрдВ: рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рд▓реЗрд╢рди рдЕрдкрдиреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╣реИред

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

рдлрд╝рд╛рдЗрд▓ рдмреНрд░рд╛рдЙрдЬрд╝рд░

рдХрд╛рд░реНрдп рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╕реБрдЕрд░ рд▓реЙрдЧ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рдПрдЧреА:
  http: // cdh3: 8888 / pig / # рд▓реЙрдЧ / 1100715
 рдЗрдирдкреБрдЯ:
 184442722 рд░рд┐рдХреЙрд░реНрдбреНрд╕ (32427523128 рдмрд╛рдЗрдЯреНрд╕) рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкрдврд╝реЗрдВ: "/ рд▓реЙрдЧ / рдлрд╝реНрд▓реБрдо / рдИрд╡реЗрдВрдЯ / рдкрд╛рд░реНрдЯ 1/2/201

 рдЖрдЙрдЯрдкреБрдЯ:
 рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ 1 рд░рд┐рдХреЙрд░реНрдб (10 рдмрд╛рдЗрдЯреНрд╕) рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд: "hdfs: // cdh3: 8020 / user / admin / 140225T1205 / count_total"
 рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдВрдЧреНрд░рд╣реАрдд 8168550 рд░рд┐рдХреЙрд░реНрдб (1406880284 рдмрд╛рдЗрдЯреНрд╕) рдореЗрдВ: "hdfs: // cdh3: 8020 / user / admin / 140225T1205 / top_req"
 2944212 рд░рд┐рдХреЙрд░реНрдбреНрд╕ (49039769 рдмрд╛рдЗрдЯреНрд╕) рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЧрдпрд╛: "hdfs: // cdh3: 8020 / user / admin / 140225T1205 / top_ip"

 рдХрд╛рдЙрдВрдЯрд░:
 рдХреБрд▓ рд░рд┐рдХреЙрд░реНрдб рд▓рд┐рдЦрд╛: 11112763
 рдХреБрд▓ рдмрд╛рдЗрдЯреНрд╕ рд▓рд┐рдЦрд╛: 1455920063 


рдУрдЬреА рд╕реЗ рд░рд┐рдкреЛрд░реНрдЯ:

  рдЕрдВрддрд┐рдо рд╕рдВрд╢реЛрдзрд┐рдд рдордВрдЧрд▓, 25 рдлрд░рд╡рд░реА 2014 00:22:00
 рдкреНрд░рд╛рд░рдВрдн рд╕рдордп рдордВрдЧрд▓, 25 рдлрд░рд╡рд░реА 2014 00:05:16
 рдирд┐рд░реНрдорд┐рдд рд╕рдордп рдордВрдЧрд▓, 25 рдлрд░рд╡рд░реА 2014 00:05:15
 рдПрдВрдб рдЯрд╛рдЗрдо рдЯреНрдпреВ, 25 рдлрд░рд╡рд░реА 2014 00:22:00 


рджрд┐рдП рдЧрдП рд▓реЙрдЧ рд╕реЗ рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╕рдордп, 180 рдорд┐рд▓рд┐рдпрди рд╕реЗ рдЕрдзрд┐рдХ рд░рд┐рдХреЙрд░реНрдб 32 рдЬреАрдмреА рд╕реЗ рдЕрдзрд┐рдХ рдХреА рдХреБрд▓ рдорд╛рддреНрд░рд╛ рдХреЗ рд╕рд╛рде рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдЧрдП рдереЗред рдкреВрд░реА рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд▓рдЧрднрдЧ 15 рдорд┐рдирдЯ рд▓рдЧреЗред

рдореИрдк рдХреЗ рд╕рдХреНрд░рд┐рдп рдЪрд░рдг рдХреЗ рджреМрд░рд╛рди, 22 рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдФрд░ 91 рдЬреАрдмреА рд░реИрдо рд╢рд╛рдорд┐рд▓ рдереЗред рдкрд╛рдВрдЪ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рддреАрди рд╕рд░реНрд╡рд░реЛрдВ рд╡рд╛рд▓реЗ рдПрдХ рдЫреЛрдЯреЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣ рдКрдкрд░ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рд╕реБрдЕрд░ MapReduce рдХрд╛рд░реНрдп рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ MR рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рднреЗрдЬрддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреНрд▓рд╛рдЙрдб рдкреНрд░рдмрдВрдзрдХ рдкреНрд░рдмрдВрдзрдХ рдкреИрдирд▓ рдореЗрдВ рдЖрдБрдХрдбрд╝реЗ рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рджрд┐рдЦрд╛рдИ рдЧрдИ рд╣реИ:

рдШрд░ - рдХреНрд▓рд╛рдКрдбрд╛ рдкреНрд░рдмрдВрдзрдХ 1

рдЧрддрд┐рд╡рд┐рдзрд┐рдпрд╛рдБ: mapreduce1

  1. рдорд╛рдирдЪрд┐рддреНрд░ рдЪрд░рдг: рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдкрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдФрд░ рдбрд┐рд╕реНрдХ рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рднрд╛рдЧреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╡реНрдпрд╕реНрдд рд╣реИрдВред
  2. рдЪрд░рдг рдХрдо рдХрд░реЗрдВ: рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдкрд░рд┐рдгрд╛рдо рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╕рдВрдЪрд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рд╕рдВрдпреБрдХреНрдд рд╣реЛрддреЗ рд╣реИрдВред
  3. рддреАрд╕рд░реЗ рдЪрд░рдг рдореЗрдВ, рдкрд░рд┐рдгрд╛рдо рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕рд╣реЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВ (рдЧреНрд░рд╛рдлрд╝ рдПрдЪрдбреАрдПрдлрдПрд╕ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдореЗрдВ рдПрдХ рдХреВрдж рджрд┐рдЦрд╛рддрд╛ рд╣реИ)ред


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

рдирд┐рд╖реНрдХрд░реНрд╖


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

рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдо Hadoop рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рдЕрдЧрд▓рд╛ рдкреНрд░рдХрд╛рд╢рди рдЗрдореНрдкрд╛рд▓рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реЛрдЧрд╛ред

рдЬреЛ рдкрд╛рдардХ рд╣рдмреЗрд░рд╛ рдХреА рдкреЛрд╕реНрдЯ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИрдВ, рдЙрдирдХрд╛ рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдкрд░ рд╕реНрд╡рд╛рдЧрдд рд╣реИред

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


All Articles