рд▓реЗрдЦ рдХреЗ
рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдЧрдИ рдереАред
рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд╣реБрдЖ, рдЖрдЧреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ? рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбреНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдЦреЛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд╣рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдСрдкрд░реЗрд╢рди рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХрд┐рдП рдЧрдП рдереЗ рдФрд░ рдХреМрди рд╕реЗ рдирд╣реАрдВ рдереЗред рдпрджрд┐ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рд╕рднреА рдСрдкрд░реЗрд╢рди рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ (
idempotent ), рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдзреНрд╡рдЬ рдХреА рд╕реНрдерд╛рдкрдирд╛, рддреЛ рдЖрдк рдмрд╕ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рддреВрдлрд╛рди рд▓реЗрдирджреЗрди рддрдВрддреНрд░ рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрддреЗ рд╣реИрдВред
рд▓реЗрдирджреЗрди рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╕рдордп,
ACID рд╢рдмреНрдж рддреБрд░рдВрдд рдкреЙрдк рдЕрдк рд╣реЛрддрд╛ рд╣реИ:
- рдПрдХ рдЯреЛрдорд┐рд╕рд┐рдЯреА (рдкрд░рдорд╛рдгреБ)ред рд▓реЗрди-рджреЗрди рдХреЗ рджреМрд░рд╛рди рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХрд┐рдП рдЧрдП рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рдпрд╛ рддреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ рдпрд╛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред
- рд╕реА рдУрдиреНрд╕рд┐рд╕реНрдЯреЗрдВрд╕реАред рд▓реЗрди-рджреЗрди рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдПрдХ рд╕реБрд╕рдВрдЧрдд рд╕реНрдерд┐рддрд┐ рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
- рдореИрдВ рд╡рд┐рд▓рд╛рдк (рдЕрд▓рдЧрд╛рд╡)ред рд╕рдорд╡рд░реНрддреА рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд▓реЗрдирджреЗрди рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рдХрд╛рдо рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
- рдбреА рдпреВрд░реЗрдмрд┐рд▓рд┐рдЯреА (рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛)ред рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдмрдиреЗ рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЗрди-рджреЗрди рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЧрд╛рд░рдВрдЯреА рджреА рдЬрд╛рддреА рд╣реИред
рд╕рдВрдЧрддрд┐ рдФрд░ рд╕реНрдерд╛рдпрд┐рддреНрд╡ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред рд╣рдо рдПрдЯрдореЙрд╕рд┐рдЯреА рдФрд░ рдЕрд▓рдЧрд╛рд╡ рдореЗрдВ рд░реБрдЪрд┐ рд▓реЗрдВрдЧреЗред
0.8.0 рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рд╕реНрдЯреЙрд░реНрдо рдиреЗ
рдЯреНрд░рд╛рдЗрдбреЗрдВрдЯ рд╕рдмрд╕рд┐рд╕реНрдЯрдо -
рдЕрдкрд╛рдЪреЗ рд╕реБрдЕрд░ рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рдкреЗрд╢ рдХрд┐рдпрд╛ред
рдЯреНрд░рд╛рдВрд╕реЗрдХреНрд╢рдирд▓ рдЯреЛрдкреЛрд▓реЙрдЬреА рдлрдВрдХреНрд╢рдирд▓ рдиреЗ рдЗрд╕реЗ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд┐рдпрд╛ред
рддреВрдлрд╛рди рдореЗрдВ рд▓реЗрдирджреЗрди
рдПрдХ рдЯреЛрдорд┐рд╕рд┐рдЯреА
рдЯреЛрдкреЛрд▓реЙрдЬреА рдПрдХ рдРрд╕реА рд╡рд╕реНрддреБ рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ
рд░рд╛рдЬреНрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛ рдЕрдВрдЬрд╛рдо рджреЗрддрд╛ рд╣реИред рдЯреЛрдВрдЯреА рдореЗрдВ рдЗрдирдкреБрдЯ рдХреЛ рдЯрдкрд▓ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдмреИрдЪ рдкреИрдХреЗрдЯ рдореЗрдВ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмреИрдЪ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рд▓реЗрдирджреЗрди рдЖрдИрдбреА рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдЯрдкрд▓ рдмрдирд╛рдиреЗ рд╡рд╛рд▓реЗ рдмреИрдЪ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдЕрдВрдд рдореЗрдВ, рдПрдХрд▓ рд▓реЗрди-рджреЗрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЯрдкрд▓ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдХреНрд▓рд╛рд╕рдпреВ рдХреЗ
рдЕрдкрдбреЗрдЯрд╕реНрдЯреИрдЯ рд╡рд┐рдзрд┐ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ
рд╕реНрдЯреЗрдЯрдЕрдкрдбреЗрдЯрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ
рдХрд░рддрд╛ рд╣реИ , рдЬреЛ рд░рд╛рдЬреНрдп
рдХреЗ рд╕рдВрд╢реЛрдзрди рдХрд╛
рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИ ред рд╕рдлрд▓ рд╕рдорд╛рдкрди рдкрд░, рдЯреЛрдВрдЯреА рдмреИрдЪ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рд╕рдлрд▓рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЯреЛрдВрдЯреА рдХреЛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдкреВрд░реЗ рдмреИрдЪ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬрдорд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕реНрдЯреЙрд░реНрдо рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдмреИрдЪ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рд╣реЛрдЧрд╛ред
рдореИрдВ рд╡рд┐рд▓рд╛рдк рдХрд░рддрд╛ рд╣реВрдВ
рд╕реНрдЯреЙрд░реНрдо рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЯреНрд░рд╛рдВрдЬреИрдХреНрд╢рди рдЖрдИрдбреА рдХреЗ рдЖрд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ рдмреИрдЪ рдХреЛ рд╕реНрдЯреЗрдЯрдпреВрдкреЗрдбрд░ рдореЗрдВ рд╕рдЦреНрддреА рд╕реЗ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╛рдиреА рдмреИрдЪ # 1 рдХреЗ рд╕рдлрд▓ рдирд┐рд░реНрдзрд╛рд░рдг рдХреЗ рдмрд╛рдж рд╣реА рдмреИрдЪ # 2 рддрдп рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдПрдХ рдЯреНрд░рд╛рдВрдЬреЗрдХреНрд╢рдирд▓
рд╕реНрдкрд╛рдЙрдЯ рдХреЛ
ICommitterTridentSpout <TransactionMetadata> рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред TransactionMetadata - рдХреЛрдИ рднреА рд╡рд░реНрдЧ рдЬрд┐рд╕рдореЗрдВ рдмреИрдЪ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдирджреЗрди рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╣реЛрддрд╛ рд╣реИ:
TxMeta ред
рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рдаpublic class TxMeta { private int start; private int count; public TxMeta(int start, int count) { this.start = start; this.count = count; }
рд╡рд╣ рд╡рд░реНрдЧ рдЬреЛ
ITridentSpout.BatchCoordinator <TransactionMetadata> рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрди-рджреЗрди рдмрдирд╛рддреЗ рд╕рдордп TransactionMetadata рдХреЛ рдЖрд░рдВрдн рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдиреБрд░реЛрдз рдХрд╛ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдбреЗрдЯрд╛ рдЕрдЧрд▓реЗ рд▓реЗрдирджреЗрди рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ -
TridentTxSpout ред рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рдЯреЛрдкреЛрд▓реЙрдЬреА рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдкреНрд░рддрд┐ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда static class BCoordinator implements BatchCoordinator<TxMeta> { private static final int TRANSACTION_COUNT = 5; private static final int TRANSACTION_ELEMENT_COUNT = 5;
рд╡рд╣ рд╡рд░реНрдЧ рдЬреЛ
ICommitterTridentSpout.Emitter рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдПрдХ рдмреИрдЪ рдмрдирд╛рддрд╛ рд╣реИред рдмреИрдЪ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдлрд┐рд░ рд╕реЗ рдмреИрдЪ рдмрдирд╛рддрд╛ рд╣реИред
рдорд╣рддреНрд╡рдкреВрд░реНрдг - рдПрдХ рдкреБрдирд░реНрдирд┐рд░реНрдорд┐рдд рдмрд┐рд▓реНрдЯ рдореЗрдВ рдореВрд▓ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рдЯрдкрд▓ рд╕реЗрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда static class BEmitter implements Emitter {
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ
рд░рд╛рдЬреНрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╡рд░реНрдЧ, рдбреЗрдЯрд╛рдмреЗрд╕ рдбреНрд░рд╛рдЗрд╡рд░:
TxDatabase ред
рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда public class TxDatabase implements State {
BaseStateUpdater рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ
рдорд┐рд▓рд╛ рд╡рд░реНрдЧ
<S рд░рд╛рдЬреНрдп рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рд░рд╛рдЬреНрдп рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддрд╛ рд╣реИ (DB):
TxDatabaseUpdaterрдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда public class TxDatabaseUpdater extends BaseStateUpdater<TxDatabase> { int count;
рдПрдХ рд╡рд░реНрдЧ рдЬреЛ
рд╕реНрдЯреЗрдЯрдлреИрдХреНрдЯрд░реА рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рд╡рд╣
рд╕реНрдЯреЗрдЯ рдХреЛ
рддреНрд╡рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ:
TxDatabaseFactory ред
рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде
рд░рдЦрдХрд░ TridentTransactionApp :
public class TridentTransactionApp { public static void main( String[] args ) throws Throwable { Logger.getRootLogger().setLevel(Level.ERROR);
рдиреЙрдЯреНрд░рд┐рд╡рд┐рдЕрд▓ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдиреЗ рдкрд░ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рджреВрд╕рд░реЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЙрд░реНрдо рдХреА рдЯреНрд░рд╛рдВрдЬреЗрдХреНрд╢рдирд▓ рдХреНрд╖рдорддрд╛рдПрдВ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдлрд╛рдЗрд▓реЗрдВ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рддреВрдлрд╛рди рдЙрдиреНрд╣реЗрдВ рд░рд┐рдХреЙрд░реНрдб рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЧрд╛рд░рдВрдЯреА рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рдЯрд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛рдПрдЧрд╛ рдФрд░ рджреЛ рдмрд╛рд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдкреБрдирд╢реНрдЪред рд▓реЗрдЦреЛрдВ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рддреВрдлрд╛рди рдХреА рд╕рднреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдкреНрд░рдХрдЯ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдкреВрд░реА рдХрд┐рддрд╛рдм рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕рд╛рдордЧреНрд░реА рд╣реИред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд░реВрдкрд░реЗрдЦрд╛ рдХреА рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ рдЗрд╕рдХреЗ рдЖрд╡реЗрджрди рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред
рдХреНрд▓рд╕реНрдЯрд░ рдХреА рддреИрдирд╛рддреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдореИрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ
рд▓реЗрдЦ рдкрд░ рдЖрдпрд╛ рд╣реВрдВред рдореБрдЭреЗ рдЦреБрдж рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рджрд┐рдЦрддрд╛ред рдЙрддреНрдкрд╛рджрди рдореЗрдВ рддреВрдлрд╛рди рдХреЛ рддреИрдирд╛рдд рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╕рд╛рди рд╣реИред
рдкреА рдкреА рдПрд╕ред Hadoop рдореЗрдВ, Storm рдХреЗ рдСрди-рд▓рд╛рдЗрди рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИ -
Hadoop Streaming , рд▓реЗрдХрд┐рди Storm рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ рд▓реЗрдирджреЗрди рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред