рд╕реНрдЯреЙрд░реНрдо рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реАрдЦрдирд╛ред рднрд╛рдЧ III

рд▓реЗрдЦ рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдЧрдИ рдереАред

рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд╣реБрдЖ, рдЖрдЧреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ? рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбреНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдЦреЛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд╣рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдСрдкрд░реЗрд╢рди рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХрд┐рдП рдЧрдП рдереЗ рдФрд░ рдХреМрди рд╕реЗ рдирд╣реАрдВ рдереЗред рдпрджрд┐ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рд╕рднреА рдСрдкрд░реЗрд╢рди рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ ( 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; } // Skipped getters } 


рд╡рд╣ рд╡рд░реНрдЧ рдЬреЛ 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; //TxMeta -    @Override public TxMeta initializeTransaction(long l, TxMeta txMeta) { if(txMeta != null) { System.out.println(String.format("Initializing transaction id: %08d, " + "start: %04d, count: %04d", l, txMeta.getStart() + txMeta.getCount(), txMeta.getCount())); return new TxMeta(txMeta.getStart() + txMeta.getCount(), TRANSACTION_ELEMENT_COUNT); } else { return new TxMeta(0, TRANSACTION_ELEMENT_COUNT); } } //       @Override public boolean isReady(long l) { if(l <= TRANSACTION_COUNT) { System.out.println("ISREADY " + l); return true; } return false; } } 


рд╡рд╣ рд╡рд░реНрдЧ рдЬреЛ ICommitterTridentSpout.Emitter рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдПрдХ рдмреИрдЪ рдмрдирд╛рддрд╛ рд╣реИред рдмреИрдЪ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдлрд┐рд░ рд╕реЗ рдмреИрдЪ рдмрдирд╛рддрд╛ рд╣реИред
рдорд╣рддреНрд╡рдкреВрд░реНрдг - рдПрдХ рдкреБрдирд░реНрдирд┐рд░реНрдорд┐рдд рдмрд┐рд▓реНрдЯ рдореЗрдВ рдореВрд▓ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рдЯрдкрд▓ рд╕реЗрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда
 static class BEmitter implements Emitter { //  Batch    TransactionMetadata @Override public void emitBatch(TransactionAttempt transactionAttempt, Object coordinatorMeta, TridentCollector tridentCollector) { TxMeta txMeta = (TxMeta) coordinatorMeta; System.out.println("Emitting transaction id: " + transactionAttempt.getTransactionId() + " attempt:" + transactionAttempt.getAttemptId() ); for(int i = 0; i < txMeta.getCount(); ++i) { tridentCollector.emit(new Values("TRANS [" + transactionAttempt.getAttemptId() + "] [" + (txMeta.getStart() + i) + "]") ); } } //     State @Override public void success(TransactionAttempt transactionAttempt) { System.out.println("BEmitter:Transaction success id:" + transactionAttempt.getTransactionId()); } //     State @Override public void commit(TransactionAttempt transactionAttempt) { System.out.println("BEmitter:Transaction commit id:" + transactionAttempt.getTransactionId()); } } 


рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд░рд╛рдЬреНрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╡рд░реНрдЧ, рдбреЗрдЯрд╛рдмреЗрд╕ рдбреНрд░рд╛рдЗрд╡рд░: TxDatabase ред
рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда
 public class TxDatabase implements State { //       @Override public void beginCommit(Long txId) { System.out.println("beginCommit [" + Thread.currentThread().getId() + "] " + txId); } //       @Override public void commit(Long txId) { System.out.println("commit [" + Thread.currentThread().getId() + "] " + txId); } } 


BaseStateUpdater рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╡рд░реНрдЧ <S рд░рд╛рдЬреНрдп рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рд░рд╛рдЬреНрдп рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддрд╛ рд╣реИ (DB): TxDatabaseUpdater
рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рда
 public class TxDatabaseUpdater extends BaseStateUpdater<TxDatabase> { int count; //     @Override public void updateState(TxDatabase txDatabase, List<TridentTuple> tridentTuples, TridentCollector tridentCollector) { //    if(++count == 2) throw new FailedException("YYYY"); for(TridentTuple t: tridentTuples) { System.out.println("Updating: " + t.getString(0)); } } } 


рдПрдХ рд╡рд░реНрдЧ рдЬреЛ рд╕реНрдЯреЗрдЯрдлреИрдХреНрдЯрд░реА рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рд╡рд╣ рд╕реНрдЯреЗрдЯ рдХреЛ рддреНрд╡рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ: TxDatabaseFactory ред

рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде рд░рдЦрдХрд░ TridentTransactionApp :
 public class TridentTransactionApp { public static void main( String[] args ) throws Throwable { Logger.getRootLogger().setLevel(Level.ERROR); //   TridentTopology tridentTopology = new TridentTopology(); //   Spout tridentTopology.newStream("TridentTxSpout", new TridentTxSpout()). //  Tuple   - OpPrintout    shuffle().each(new Fields("msg"), new OpPrintout()). parallelismHint(2). //        global(). //    State () partitionPersist(new TxDatabaseFactory(), new Fields("msg"), new TxDatabaseUpdater()); // Skipped LocalCluster cluster = new LocalCluster(); cluster.submitTopology("T2", config, tridentTopology.build()); Thread.sleep(1000*100); cluster.shutdown(); } } 

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

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

рдкреА рдкреА рдПрд╕ред Hadoop рдореЗрдВ, Storm рдХреЗ рдСрди-рд▓рд╛рдЗрди рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИ - Hadoop Streaming , рд▓реЗрдХрд┐рди Storm рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ рд▓реЗрдирджреЗрди рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

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


All Articles