PHP рдореЗрдВ 1000 рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рдХреА рдЯреЗрд░рд╛рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИ - Hadoop / MapReduce

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░!

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

рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдореИрдВ рдкреАрдПрдЪрдкреА рдореЗрдВ 1000 = рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рдХреИрд╕реЗ = = рдЯреЗрд░рд╛рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рд╣реИрдВрдбрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рд╕рд╛рде рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рд╡реНрдпрдВрдЬрдиреЛрдВ рдФрд░ рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рддрд╛рдХрд┐ рдЖрдк рд╕рдордп рдмрд░реНрдмрд╛рдж рдХрд┐рдП рдмрд┐рдирд╛ рдФрд░ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд╕рд┐рд░ рдХреЛ рджрдмрд╛рдП рдмрд┐рдирд╛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд▓реЗ рдФрд░ рд╣рд▓ рдХрд░ рд╕рдХреЗрдВред

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



рдЬреИрд╕рд╛ рдХрд┐ рдЖрдорддреМрд░ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ



рд╡реЗрдм рдкрд░ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ред рдЬрдм рддрдХ рдпрд╣ рдлрдЯ рди рдЬрд╛рдП рддрдм рддрдХ рдбреЗрдЯрд╛ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред рдпрджрд┐ рдпрд╣ рдлрдЯ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ MySQL рд╢рд╛рд░реНрдкрд┐рдВрдЧ, рдкрд╛рд░реНрдЯрд┐рд╢рдирд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рддрдЪреАрдд, рд░реИрдо рдореЗрдВ рдорд▓реНрдЯреА-рдорд╛рд╕реНрдЯрд░ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╛рдж рд░рдЦреЗрдВред

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

рдЕрд╡рдЪреЗрддрди рд░реВрдк рд╕реЗ, рдЧрдгрдирд╛ рдкреНрд░рдЧрддрд┐ рдкрд░ рд╣реИ - рдЗрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдлрд┐рд░ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВред рдФрд░ рдпрд╣ рдЕрдХреНрд╕рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдореЗрд╢рд╛ рдирд╣реАрдВ ... рдФрд░ рдпрд╣ "рд╣рдореЗрд╢рд╛ рдирд╣реАрдВ" рдЖрдо рд╣реЛрддрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рдФрд░ рднреА рдЕрдзрд┐рдХ рдбреЗрдЯрд╛, рдСрдирд▓рд╛рдЗрди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ



рд╡реНрдпрд╡рд╕рд╛рдп рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдирд╛ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ - рдПрдХ рджрд┐рди рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ, рд▓реЙрдЧ / рдбреЗрдЯрд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ рдФрд░ рдЕрдВрдХ рджреЗрдВред рд▓рд╛рдЗрд╡ рддреАрд░ рдХреЗ рд╕рд╛рде рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╕рд╛рдп рдХреЗ рд▓рд┐рдП рдСрдирд▓рд╛рдЗрди рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рд╣реЛрдирд╛ рдЕрдХреНрд╕рд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрддрд╛ рд╣реИред


рдкрд╛рдпрд▓рдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реЛрдЯрд▓ рдореЗрдВ рджрд┐рди рдореЗрдВ рдПрдХ рдмрд╛рд░ рдХрд╛рд▓реЗ рдмрдХреНрд╕реЗ рдореЗрдВ рджрд░реНрдЬ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдХреЗ рдПрдХ рд╣рд╡рд╛рдИ рдЬрд╣рд╛рдЬ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рдбрд░рд╛рд╡рдирд╛ рд╣реИред :-)



рдЬрдм рдбреЗрдЯрд╛ рдкреНрд░рд╡рд╛рд╣ рдФрд░ рднреА рдЕрдзрд┐рдХ рддреАрд╡реНрд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдкрд░ рд╡рд░реНрддрдорд╛рди рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕реЗ рдЕрднреА рддрдХ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ... рддреЛ рд╣рдо "рд╕реНрдЯреНрд░реАрдо рд╡рд┐рд╢реНрд▓реЗрд╖рдг" рдЬреИрд╕реЗ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
1) рдкрд┐рдирдмрд╛
2) рдЕрдореЗрдЬрд╝рди Kinesis
3) nginx / ragel рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реНрдЯреНрд░реАрдо рдкрд╛рд░реНрд╕рд░

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


рдореИрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реЗрдЯрдЕрдк рдореЗрдВ рдЖрд╕рд╛рдиреА рдФрд░ рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рдЖрд╕рд╛рдиреА рдФрд░ рдиреНрдпреВрдирддрдо рднрд╛рд░ рдХреЗ рд▓рд┐рдП рдкрд┐рдирдмрд╛ рдХреЛ рд╕рд┐рдВрдЧрд▓ рдЖрдЙрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ ред Js рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЯрд╛рдЗрдорд┐рдВрдЧ рдПрдкреАрдЖрдИ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдиреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП - 30 рд▓рд╛рдЗрдиреЛрдВ рдкрд░ PHP рдореЗрдВ 2 рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

рдбреЗрдЯрд╛ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг



рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ, рдорд╛рди рд▓реЗрдВ рдХрд┐ рдпреЗ s3 рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдЖрдкрдХреЗ рдкрд╛рд╕ рд▓рд╛рдЦреЛрдВ рд╣реИрдВред рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рд╣рдо рдХреНрд▓рд╛рдЙрдб рдкрд░ рдХреИрд╕реЗ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рд╕рдордп-рд╕рдордп рдкрд░ рдЗрди рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рджреВрд╕рд░реЗ рдХреНрд▓рд╛рдЙрдб / рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЬрд╛рддреА рд╣реИ, рд╕рдВрдкреАрдбрд╝рд┐рдд рд╣реЛрддреА рд╣реИ, рдЕрдиреНрдп рдСрдкрд░реЗрд╢рди рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдХреЙрдкреА рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдкреНрд░рдХреГрддрд┐ рдореЗрдВ рдХрдИ рд╕рдорд╛рди рдХрд╛рд░реНрдп рд╣реИрдВ:


рдпреЗ рдХрд╛рд░реНрдп рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рднрд╛рдЬрди рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЖрддреЗ рд╣реИрдВ рдФрд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдЬреАрддрддреЗ рд╣реИрдВ:
- рд╣рдо рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ
- рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рднрд╛рдЧ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдФрд░ рдЕрдиреНрдп рднрд╛рдЧреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ
- рдПрдХрддреНрд░реАрдХрд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░рд┐рдгрд╛рдо рдЧрдардмрдВрдзрди


PHP рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ RabbitMQ рдФрд░ / рдпрд╛ Gearman рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ - рд▓реЗрдХрд┐рди рдЕрд╕рд╛рдзрд╛рд░рдг рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рд╕реБрд▓рдЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдмрд╣реБрдд рдкрд░реЗрд╢рд╛рди рдХрд░рдирд╛ рдкрдбрд╝реЗрдЧрд╛, рдПрдХ рдЖрдо рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рддреЗрдЬ рдХрд░рдирд╛, 20 рд╕рд░реНрд╡рд░ рдкрд░ рдХреНрд▓рд╕реНрдЯрд░рд┐рдВрдЧ рдХрд░рдирд╛, рдЖрджрд┐ред

рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХрд╛ рдХрд╛рд░реНрдп рдПрдХ рд╕рд░реНрд╡рд░ рдкрд░ 30 PHP рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рд╕реВрдЪреАрдмрджреНрдз рдЙрдкрдХрд░рдг рдЖрдорддреМрд░ рдкрд░ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдЖрдк "рдмрджрдХрд┐рд╕реНрдордд" рд╣реИрдВ рдФрд░ рдПрдХ рдШрдВрдЯреЗ рдореЗрдВ рдХреБрдЫ рдЯреЗрд░рд╛рдмрд╛рдЗрдЯреНрд╕ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рд▓реЛрд╣реЗ рдХреЛ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдХрд┐рддрдирд╛ рд▓реЗрддреЗ рд╣реИрдВ, рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ :-)

рд╣рд╛рдВ, рд╣рд╛рдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рд╣реИрдбреЛрдк рд╣реИ , рдЬреЛ рдКрдкрд░ рдХреА рд▓рдбрд╝рдХрд┐рдпреЛрдВ рдХреЗ рдлреЛрдЯреЛ рдХреЗ рд╕рд╛рде рдкрд░рд╕реНрдкрд░ рд╕рдВрдмрдВрдзрд┐рдд рдореИрдкрд░реЗрдбреНрдпреВрд╕ рдкреНрд░рддрд┐рдорд╛рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ; ;-)

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

рдЖрдкрдХреЛ bucket1 s3 рд╕реЗ bucket2 s3 рдореЗрдВ 10 рдорд┐рд▓рд┐рдпрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рдиреЗ, рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдФрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рд╕рд░реНрд╡рд░ рдкрд░ PHP рдЯреВрд▓реНрд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЕрдзрд┐рдХрддрдо 20-30 PHP рдереНрд░реЗрдбреНрд╕ рдХрд╛рдВрдЯрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЕрдкрдиреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ред рдФрд░ рдЗрд╕рдореЗрдВ рдХрдИ рд╕рдкреНрддрд╛рд╣ рд▓рдЧреЗрдВрдЧреЗред рдФрд░ рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдмрдврд╝ рд░рд╣реА рд╣реИ рдФрд░ рдПрдХ рд╕рд┐рд╕реНрдЯрдо рд╕рдорд╛рдзрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк Hadoop рдХреЗ рд╕рд╛рде рднреА рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХрд╛рд░реНрдп рдПрдХ рдШрдВрдЯреЗ рдореЗрдВ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд▓реЛрд╣реЗ рдХреЗ рдЯреБрдХрдбрд╝реЛрдВ рдкрд░ред рдпрджрд┐ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдкрд░ 15 рдереНрд░реЗрдбреНрд╕ рдХреЗ рд╕рд╛рде рд▓реЛрд╣реЗ рдХреЗ рдЯреБрдХрдбрд╝реЛрдВ рдХреА рдПрдХ рдЙрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдЪреБрдирддреЗ рд╣реИрдВ, рддреЛ рдЖрдк 2 рджрд┐рди рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╛рдиреА рдпрджрд┐ рдЫрд╣ рдорд╣реАрдиреЗ рдореЗрдВ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 10 рдорд┐рд▓рд┐рдпрди рд╕реЗ 50 рдорд┐рд▓рд┐рдпрди рддрдХ рдмрдврд╝ рдЬрд╛рддреА рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рд▓реЛрд╣реЗ рдХреЗ рдЯреБрдХрдбрд╝реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХрд░рддреЗ рд╣реБрдП, Hadoop рдХреНрд▓рд╕реНрдЯрд░ рд▓реЙрдиреНрдЪ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдЕрдВрдХ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдХреНрдпрд╛ рдпрд╣ рд╕реБрдВрджрд░ рдФрд░ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ? :-)


Hadoop



рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рдПрдХ рдмрдбрд╝рд╛ рдЙрддреНрдкрд╛рдж рд╣реИ рдФрд░ рд╢рд╛рдпрдж 24/7 рд╕рдкреНрддрд╛рд╣ рддрдХ рдореИрдиреБрдЕрд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ - рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╣рдо рдЖрдкрдХреЛ рдФрд░ рд╣рдорд╛рд░реЗ рд╕рдордп рдХреА рдмрдЪрдд рдХрд░рддреЗ рд╣реБрдП рдХреБрд╢рд▓рддрд╛рдкреВрд░реНрд╡рдХ рдФрд░ рддреЗрдЬрд╝реА рд╕реЗ рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реАрдЦреЗрдВрдЧреЗред

рд╕реНрдерд╛рдкрдирд╛


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

рдирдХреНрд╢рд╛ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдо рдХрд░рдирд╛


рдпрд╣рд╛рдБ рдкреЛрд╕реНрдЯ рдореЗрдВ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред Hadoop рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ - рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ bash рдореЗрдВ рд╕реЙрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ рдпрд╛ PHP / Python / Perl рдореЗрдВ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддрд╛ рд╣реИред

рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рдорд╛рдирдХ рдЗрдирдкреБрдЯ рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдорд╛рдирдХ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЦреИрд░, рдХреНрдпрд╛ рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

2 рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░реНрд╕ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП: рдореИрдкрд░, рд░реЗрдбреНрдпреВрд╕рд░ред

рдпрджрд┐ рдЖрдкрдХреЛ рдПрди рд╕рд░реНрд╡рд░ рдкрд░ рдХрд╛рд░реНрдп рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рддреЛ рдмрд╕ рдПрдХ рдореИрдкрд░ рд▓рд┐рдЦреЗрдВред

рдореИрдкрд░ рдЙрджрд╛рд╣рд░рдг


#!/usr/bin/php <?php error_reporting(-1); set_time_limit(0); ini_set('memory_limit', '2048M'); gc_enable(); require '/usr/share/php/aws.phar'; $fp=fopen("php://stdin","r"); while (true) { $line=stream_get_line($fp,65535,"\n"); //    : , , ,  ... } echo "s3 copied direct\t".$copy_count."\n"; echo "s3 copied precond\t".$copy_precond_count ."\n"; echo "s3 src not found\t".$s3_src_not_found ."\n"; 


рдпрджрд┐ рдПрдХрддреНрд░рд┐рдд рдЖрдВрдХрдбрд╝реЛрдВ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рджреВрд╕рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ reducer рд▓рд┐рдЦреЗрдВ:

Reducer рдЙрджрд╛рд╣рд░рдг


 #!/usr/bin/php <?php error_reporting(-1); ini_set('memory_limit', '1024M'); set_time_limit(0); gc_enable(); $ar_reduce = array(); while (($line = fgets(STDIN)) !== false) { $line = str_replace("\n","",$line); $ar_line = explode("\t", $line); if ( !isset($ar_reduce[$ar_line[0]]) ) $ar_reduce[$ar_line[0]] = 0; $ar_reduce[$ar_line[0]] += intval($ar_line[1]); } foreach ($ar_reduce as $key=>$value) { echo $key."\t".$value."\n"; } ?> 


рдХреНрд▓рд╕реНрдЯрд░ рд╕рд░реНрд╡рд░ рдкреНрд░рд╛рд░рдВрдн


рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ PHP рдореЗрдВ рд╣реИрдВ, рдЖрдкрдХреЛ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕рд░реНрд╡рд░ рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реА рдПрдХ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 sudo apt-get -y update sudo apt-get -y install libssh2-php sudo apt-get -y install php5-curl sudo rm -f /etc/php5/cli/conf.d/suhosin.ini sudo mkdir -p /usr/share/php cd /usr/share/php sudo wget https://github.com/aws/aws-sdk-php/releases/download/2.5.0/aws.phar ... 


PHP рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдХреНрд▓рд╛рдЙрдб (s3) рдХреЛ рдмреИрд╢ рдХрд░реЗрдВ


 for FILE in bkp_s3_folder_hadoop_bootstrap.sh bkp_s3_folder_hadoop_mapper.php bkp_s3_folder_hadoop_reducer.php; do s3cmd -c /root/.s3cfg-key put /home/project/cron_jobs/$FILE s3://# #/code/ done 


рдПрд╕ 3 рдореЗрдВ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ


рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, s3cmd рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо s3 рдореЗрдВ рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдбреЗрдЯрд╛ рдЕрдкрд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдбреЗрдЯрд╛ рдЕрдкрдиреЗ рдЖрдк рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдмрд╛рд╣рд░ рдлреИрд▓ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рдЬрд┐рддрдирд╛ рдЪрд╛рд╣реЗрдВ рдЙрддрдирд╛ рдбреЗрдЯрд╛ рдЕрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рдЙрдирдХреЗ рд╕рд╛рде рдкреАрдбрд╝рд┐рдд рд╣реЛрдиреЗ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред

рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╢реБрд░реВ рдХрд░рдирд╛


рдФрд░ рдЕрдВрдд рдореЗрдВ, рдРрд╕рд╛ рд╕реНрд╡рд╛рджрд┐рд╖реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ - рд╣рдо рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВред

 D=$(date +"%Y-%m-%d_%H-%M-%S") /opt/aws/emr/elastic-mapreduce --create --stream \ --name myproject_$D \ --step-name step_$D \ --with-termination-protection \ --step-action CANCEL_AND_WAIT \ --ami-version '2.4.2' \ --bootstrap-action '#    , . #' \ --bootstrap-action 's3://elasticmapreduce/bootstrap-actions/configure-hadoop' \ --args "-m,mapred.map.max.attempts=20,-m,mapred.tasktracker.map.tasks.maximum=15,-m,mapred.task.timeout=600000" \ --input 's3://#     #/input/' \ --mapper 's3://# #/code/# mapper#.php' \ --reducer 's3://# #/code/# reducer#.php' \ --output 's3://#  #/output_'$D \ --log-uri 's3://#  #/logs/' \ --num-instances 5 \ --master-instance-type m1.small \ --slave-instance-type m1.xlarge \ --key-pair 'myproject_mapreduce' 


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

рдХреНрд▓рд╕реНрдЯрд░ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рд▓реЙрдЧ рдореЗрдВ рдПрдХрддреНрд░рд┐рдд рдЖрдВрдХрдбрд╝реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЙрдЧ рднреА s3 рдкрд░ рдЕрдкрд▓реЛрдб рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред

рдЖрдорддреМрд░ рдкрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЧрддрд┐, рдЬреЛ рдкрд╣рд▓реЗ рд╣рдлреНрддреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЕрдЬрд╝реЗрд╕ рдХреЛ рдкреНрд░реЗрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдИрдЯреА-рдирд┐рд░рдВрддрд░рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдЧрд░реВрдХрддрд╛ рдХреЗ рдПрдХ рдирдП рд╕реНрддрд░ рдкрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ "300 рд╕реНрдкрд╛рд░реНрдЯрдиреНрд╕" :-) рдХреЗ рдЕрдВрддрд┐рдо рднрд╛рдЧ рд╕реЗ рднреА рдмрджрддрд░ рдирд╣реАрдВ рд╣реИред :-)


рдкрд░рд┐рдгрд╛рдо



рдирддреАрдЬрддрди, рдЖрдкрдХреЗ рдкрд╛рд╕ 2 PHP рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдмрдВрдзрд┐рдд рдПрдХ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЙрдкрдХрд░рдг рд╣реИред рд╕рд░реНрд╡рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ (--num-instances 5) рд╕реАрдзреЗ рд▓реЛрдб рдбреЗрдЯрд╛ рд╕рд░рдгреА рдХреА рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЧрддрд┐ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдХреЛрдИ рднреА 10 рдереНрд░реЗрдбреНрд╕ рдХреЗ рд╕рд╛рде 100 рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдордирд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдбреЗрдЯрд╛ рдХрддрд╛рд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдиреМрдХрд░реА рдХреА рдХрддрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХрд▓ рд╕рд░реНрд╡рд░ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рд╕рд░рд▓ рдФрд░ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рддрд░реАрдХреЗ рд╕реЗ, рд╣рдорд╛рд░реА рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ , рд╣рдордиреЗ s3 рдореЗрдВ рд▓рд╛рдЦреЛрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕рдордп рдХреЛ 2 рд╕рдкреНрддрд╛рд╣ рд╕реЗ рдШрдЯрд╛рдХрд░ 2 рджрд┐рди рдХрд░ рджрд┐рдпрд╛ред

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

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


All Articles