±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½éÉÜÁË
СÃ×Á÷ʽƽ̨·¢Õ¹ÀúÊ·¡¢»ùÓÚ Flink µÄʵʱÊý²ÖÒÔ¼°Î´À´¹æ»®
±¾ÎÄÀ´×Ô΢ÐÅ Flink ÖÐÎÄÉçÇø£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼¡¢ÍƼö¡£ |
|
±³¾°½éÉÜ
СÃ×Á÷ʽƽ̨µÄÔ¸¾°ÊÇΪСÃ×ËùÓеÄÒµÎñÏßÌṩÁ÷ʽÊý¾ÝµÄÒ»Ì廯¡¢Æ½Ì¨»¯½â¾ö·½°¸¡£¾ßÌåÀ´½²°üÀ¨ÒÔÏÂÈý¸ö·½Ã棺
Á÷ʽÊý¾Ý´æ´¢£ºÁ÷ʽÊý¾Ý´æ´¢Ö¸µÄÊÇÏûÏ¢¶ÓÁУ¬Ð¡Ã׿ª·¢ÁËÒ»Ì××Ô¼ºµÄÏûÏ¢¶ÓÁУ¬ÆäÀàËÆÓÚ Apache kafka£¬µ«ËüÓÐ×Ô¼ºµÄÌØµã£¬Ð¡Ã×Á÷ʽƽ̨ÌṩÏûÏ¢¶ÓÁеĴ洢¹¦ÄÜ£»
Á÷ʽÊý¾Ý½ÓÈëºÍת´¢£ºÓÐÁËÏûÏ¢¶ÓÁÐÀ´×öÁ÷ʽÊý¾ÝµÄ»º´æÇøÖ®ºó£¬¼Ì¶øÐèÒªÌṩÁ÷ʽÊý¾Ý½ÓÈëºÍת´¢µÄ¹¦ÄÜ£»
Á÷ʽÊý¾Ý´¦Àí£ºÖ¸µÄÊÇÆ½Ì¨»ùÓÚ Flink¡¢Spark Streaming ºÍ Storm µÈ¼ÆËãÒýÇæ¶ÔÁ÷ʽÊý¾Ý½øÐд¦ÀíµÄ¹ý³Ì¡£

ÏÂͼչʾÁËÁ÷ʽƽ̨µÄÕûÌå¼Ü¹¹¡£´Ó×óµ½ÓÒµÚÒ»ÁгÈÉ«²¿·ÖÊÇÊý¾ÝÔ´£¬°üº¬Á½²¿·Ö£¬¼´ User ºÍ Database¡£
User Ö¸µÄÊÇÓû§¸÷ÖÖ¸÷ÑùµÄÂñµãÊý¾Ý£¬ÈçÓû§ APP ºÍ WebServer µÄÈÕÖ¾£¬Æä´ÎÊÇ Database
Êý¾Ý£¬Èç MySQL¡¢HBase ºÍÆäËûµÄ RDS Êý¾Ý¡£
ÖмäÀ¶É«²¿·ÖÊÇÁ÷ʽƽ̨µÄ¾ßÌåÄÚÈÝ£¬ÆäÖÐ Talos ÊÇСÃ×ʵÏÖµÄÏûÏ¢¶ÓÁУ¬ÆäÉϲã°üº¬ Consumer
SDK ºÍ Producer SDK¡£
´ËÍâСÃ×»¹ÊµÏÖÁËÒ»Ì×ÍêÕûµÄ Talos Source£¬Ö÷ÒªÓÃÓÚÊÕ¼¯¸Õ²ÅÌáµ½µÄÓû§ºÍÊý¾Ý¿âµÄÈ«³¡¾°µÄÊý¾Ý¡£
Talos Sink ºÍ Source ¹²Í¬×éºÏ³ÉÒ»¸öÊý¾ÝÁ÷·þÎñ£¬Ö÷Òª¸ºÔ𽫠Talos µÄÊý¾ÝÒÔ¼«µÍµÄÑÓ³Ùת´¢µ½ÆäËûϵͳÖУ»Sink
ÊÇÒ»Ì×±ê×¼»¯µÄ·þÎñ£¬µ«Æä²»¹»¶¨ÖÆ»¯£¬ºóÐø»á»ùÓÚ Flink SQL ÖØ¹¹ Talos Sink Ä£¿é¡£ 
ÏÂͼչʾÁËСÃ×µÄÒµÎñ¹æÄ£¡£ÔÚ´æ´¢²ãÃæÐ¡Ã×ÿÌì´ó¸ÅÓÐ 1.2 ÍòÒÚÌõÏûÏ¢£¬·åÖµÁ÷Á¿¿ÉÒÔ´ïµ½ 4300
ÍòÌõÿÃ롣ת´¢Ä£¿é½ö Talos Sink ÿÌìת´¢µÄÊý¾ÝÁ¿¾Í¸ß´ï 1.6 PB£¬×ª´¢×÷ҵĿǰ½«½üÓÐ
1.5 Íò¸ö¡£Ã¿ÌìµÄÁ÷ʽ¼ÆËã×÷Òµ³¬¹ý 800 ¸ö£¬Flink ×÷Òµ³¬¹ý 200 ¸ö£¬Flink ÿÌì´¦ÀíµÄÏûÏ¢Á¿¿ÉÒÔ´ïµ½
7000 ÒÚÌõ£¬Êý¾ÝÁ¿ÔÚ 1 PB ÒÔÉÏ¡£

СÃ×Á÷ʽƽ̨·¢Õ¹ÀúÊ·
СÃ×Á÷ʽƽ̨·¢Õ¹ÀúÊ··ÖΪÈçÏÂÈý¸ö½×¶Î£º
Streaming Platform 1.0£ºÐ¡Ã×Á÷ʽƽ̨µÄ 1.0 °æ±¾¹¹½¨ÓÚ 2010 Ä꣬Æä×î³õʹÓõÄÊÇ
Scribe¡¢Kafka ºÍ Storm£¬ÆäÖÐ Scribe ÊÇÒ»Ì×½â¾öÊý¾ÝÊÕ¼¯ºÍÊý¾Ýת´¢µÄ·þÎñ¡£
Streaming Platform 2.0£ºÓÉÓÚ 1.0 °æ±¾´æÔÚµÄÖÖÖÖÎÊÌ⣬ÎÒÃÇ×ÔÑÐÁËСÃ××Ô¼ºµÄÏûÏ¢¶ÓÁÐ
Talos£¬»¹°üÀ¨ Talos Source¡¢Talos Sink£¬²¢½ÓÈëÁË Spark Streaming¡£
Streaming Platform 3.0£º¸Ã°æ±¾ÔÚÉÏÒ»¸ö°æ±¾µÄ»ù´¡ÉÏÔö¼ÓÁË Schema µÄÖ§³Ö£¬»¹ÒýÈëÁË
Flink ºÍ Stream SQL¡£

Streaming Platform 1.0 ÕûÌåÊÇÒ»¸ö¼¶ÁªµÄ·þÎñ£¬Ç°Ãæ°üÀ¨ Scribe Agent
ºÍ Scribe Server µÄ¶à¼¶¼¶Áª£¬Ö÷ÒªÓÃÓÚÊÕ¼¯Êý¾Ý£¬È»ºóÂú×ãÀëÏß¼ÆËãºÍʵʱ¼ÆËãµÄ³¡¾°¡£ÀëÏß¼ÆËãʹÓõÄÊÇ
HDFS ºÍ Hive£¬ÊµÊ±¼ÆËãʹÓõÄÊÇ Kafka ºÍ Storm¡£ËäÈ»ÕâÖÖÀëÏß¼ÓʵʱµÄ·½Ê½¿ÉÒÔ»ù±¾Âú×ãСÃ×µ±Ê±µÄÒµÎñÐèÇ󣬵«Ò²´æÔÚһϵÁеÄÎÊÌâ¡£
Ê×ÏÈÊÇ Scribe Agent ¹ý¶à£¬¶øÅäÖúͰü¹ÜÀí»úÖÆÈ±·¦£¬µ¼ÖÂά»¤³É±¾·Ç³£¸ß£»
Scribe ²ÉÓÃµÄ Push ¼Ü¹¹£¬Òì³£Çé¿öÏÂÎÞ·¨ÓÐЧ»º´æÊý¾Ý£¬Í¬Ê± HDFS / Kafka
Êý¾ÝÏ໥ӰÏ죻
×îºóÊý¾ÝÁ´¼¶Áª±È½Ï³¤µÄʱºò£¬Õû¸öÈ«Á´Â·Êý¾ÝºÚºÐ£¬È±·¦¼à¿ØºÍÊý¾Ý¼ìÑé»úÖÆ¡£

ΪÁ˽â¾ö Streaming Platform 1.0 µÄÎÊÌ⣬СÃ×ÍÆ³öÁË Streaming Platform
2.0 °æ±¾¡£¸Ã°æ±¾ÒýÈëÁË Talos£¬½«Æä×÷ΪÊý¾Ý»º´æÇøÀ´½øÐÐÁ÷ʽÊý¾ÝµÄ´æ´¢£¬×ó²àÊǶàÖÖ¶àÑùµÄÊý¾ÝÔ´£¬ÓÒ²àÊǶàÖÖ¶àÑùµÄ
Sink£¬¼´½«Ô±¾µÄ¼¶Áª¼Ü¹¹×ª»»³ÉÐÇÐͼܹ¹£¬ÓŵãÊÇ·½±ãµØÀ©Õ¹¡£
ÓÉÓÚ Agent ×ÔÉíÊýÁ¿¼°¹ÜÀíµÄÁ÷½Ï¶à£¨¾ßÌåÊý¾Ý¾ùÔÚÍò¼¶±ð£©£¬Îª´Ë¸Ã°æ±¾ÊµÏÖÁËÒ»Ì×ÅäÖùÜÀíºÍ°ü¹ÜÀíϵͳ£¬¿ÉÒÔÖ§³Ö
Agent Ò»´ÎÅäÖÃÖ®ºóµÄ×Ô¶¯¸üкÍÖØÆôµÈ¡£
´ËÍ⣬СÃ×»¹ÊµÏÖÁËÈ¥ÖÐÐÄ»¯µÄÅäÖ÷þÎñ£¬ÅäÖÃÎļþÉ趨ºÃºó¿ÉÒÔ×Ô¶¯µØ·Ö·¢µ½·Ö²¼Ê½½áµãÉÏÈ¥¡£
×îºó£¬¸Ã°æ±¾»¹ÊµÏÖÁËÊý¾ÝµÄ¶Ëµ½¶Ë¼à¿Ø£¬Í¨¹ýÂñµãÀ´¼à¿ØÊý¾ÝÔÚÕû¸öÁ´Â·ÉϵÄÊý¾Ý¶ªÊ§Çé¿öºÍÊý¾Ý´«ÊäÑÓ³ÙÇé¿öµÈ¡£

Streaming Platform 2.0 µÄÓÅÊÆÖ÷ÒªÓУº
ÒýÈëÁË Multi Source & Multi Sink£¬Ö®Ç°Á½¸öϵͳ֮¼äµ¼Êý¾ÝÐèÒªÖ±½ÓÁ¬½Ó£¬ÏÖÔڵļܹ¹½«ÏµÍ³¼¯³É¸´ÔÓ¶ÈÓÉÔÀ´µÄ
O(M*N) ½µµÍΪ O(M+N)£»
ÒýÈëÅäÖùÜÀíºÍ°ü¹ÜÀí»úÖÆ£¬³¹µ×½â¾öϵͳÉý¼¶¡¢Ð޸ĺÍÉÏÏßµÈһϵÁÐÎÊÌ⣬½µµÍÔËάµÄѹÁ¦£»
ÒýÈë¶Ëµ½¶ËÊý¾Ý¼à¿Ø»úÖÆ£¬ÊµÏÖÈ«Á´Â·Êý¾Ý¼à¿Ø£¬Á¿»¯È«Á´Â·Êý¾ÝÖÊÁ¿£»
²úÆ·»¯½â¾ö·½°¸£¬±ÜÃâÖØ¸´½¨É裬½â¾öÒµÎñÔËάÎÊÌâ¡£

ÏÂͼÏêϸ½éÉÜһϠMySQL ͬ²½µÄ°¸Àý£¬³¡¾°Êǽ« MySQL µÄÒ»¸ö±íͨ¹ýÉÏÊöµÄ»úÖÆÍ¬²½µ½ÏûÏ¢¶ÓÁÐ
Talos¡£¾ßÌåÁ÷³ÌÊÇ Binlog ·þÎñαװ³É MySQL µÄ Slave£¬Ïò MySQL ·¢ËÍ
Dump binlog ÇëÇó£»MySQL ÊÕµ½ Dump ÇëÇóºó£¬¿ªÊ¼Íƶ¯ Binlog ¸ø Binlog
·þÎñ£»Binlog ·þÎñ½« binlog ÒÔÑϸñÓÐÐòµÄÐÎʽת´¢µ½ Talos¡£Ö®ºó»á½ÓÈë Spark
Streaming ×÷Òµ£¬¶Ô binlog ½øÐнâÎö£¬½âÎö½á¹ûдÈëµ½ Kudu ±íÖС£Ä¿Ç°Æ½Ì¨Ö§³ÖдÈëµ½
Kudu ÖеıíµÄÊýÁ¿¼¶³¬¹ý 3000 ¸ö¡£ 
Agent Source µÄ¹¦ÄÜÄ£¿éÈçÏÂͼËùʾ¡£ÆäÖ§³Ö RPC¡¢Http ÐÒ飬²¢¿ÉÒÔͨ¹ý File
À´¼àÌý±¾µØÎļþ£¬ÊµÏÖÄÚ´æºÍÎļþË«»º´æ£¬±£Ö¤Êý¾ÝµÄ¸ß¿É¿¿¡£Æ½Ì¨»ùÓÚ RPC ÐÒéʵÏÖÁË Logger
Appender ºÍ RPC ÐÒéµÄ SDK£»¶ÔÓÚ Http ÐÒéʵÏÖÁË HttpClient£»¶ÔÓÚÎļþʵÏÖÁË
File Watcher À´¶Ô±¾µØÎļþ½øÐÐ×Ô¶¯µØ·¢ÏÖºÍɨÃ裬Offset Manager ×Ô¶¯¼Ç¼
offset£»Agent »úÖÆÓë K8S »·¾³Éî¶ÈÕûºÏ£¬¿ÉÒÔºÜÈÝÒ׵غͺó¶ËµÄÁ÷ʽ¼ÆËãµÈÏà½áºÏ¡£ 
ÏÂͼÊÇ Talos Sink µÄÂß¼Á÷³Ìͼ£¬Æä»ùÓÚ Spark Streaming À´ÊµÏÖһϵÁÐÁ÷³Ì¡£×î×ó²àÊÇһϵÁÐ
Talos Topic µÄ Partition ·ÖƬ£¬»ùÓÚÿ¸ö batch ³éÏ󹫹²Âß¼£¬Èç startProcessBatch()
ºÍ stopProcessBatch()£¬²»Í¬ Sink Ö»ÐèҪʵÏÖ Write Âß¼£»²»Í¬µÄ Sink
¶ÀÁ¢Îª²»Í¬µÄ×÷Òµ£¬±ÜÃâÏ໥ӰÏ죻Sink ÔÚ Spark Streaming »ù´¡ÉϽøÐÐÁËÓÅ»¯£¬ÊµÏÖÁ˸ù¾Ý
Topic Á÷Á¿½øÐж¯Ì¬×ÊÔ´µ÷¶È£¬±£Ö¤ÏµÍ³ÑÓ³ÙµÄǰÌáÏÂ×î´óÏ޶ȽÚÊ¡×ÊÔ´¡£ 
ÏÂͼÊÇÆ½Ì¨ÊµÏֵĶ˵½¶ËÊý¾Ý¼à¿Ø»úÖÆ¡£¾ßÌåʵÏÖÊÇΪÿ¸öÏûÏ¢¶¼ÓÐÒ»¸öʱ¼ä´Á EventTime£¬±íʾÕâ¸öÏûÏ¢ÕæÕýÉú³ÉµÄʱ¼ä£¬¸ù¾Ý
EventTime À´»®·Öʱ¼ä´°¿Ú£¬´°¿Ú´óСΪһ·ÖÖÓ£¬Êý¾Ý´«ÊäµÄÃ¿Ò»ÌøÍ³¼Æµ±Ç°Ê±¼ä´°¿ÚÄÚ½ÓÊܵ½µÄÏûÏ¢ÊýÁ¿£¬×îºóͳ¼Æ³öÏûÏ¢µÄÍêÕû¶È¡£ÑÓ³ÙÊǼÆËãÄ³Ò»Ìø
ProcessTime ºÍ EventTime Ö®¼äµÄ²îÖµ¡£ 
Streaming Platform 2.0 ĿǰµÄÎÊÌâÖ÷ÒªÓÐÈýµã£º
Talos Êý¾Ýȱ·¦ Schema ¹ÜÀí£¬Talos ¶ÔÓÚ´«ÈëµÄÊý¾ÝÊDz»Àí½âµÄ£¬ÕâÖÖÇé¿öÏÂÎÞ·¨Ê¹ÓÃ
SQL À´Ïû·Ñ Talos µÄÊý¾Ý£»
Talos Sink Ä£¿é²»Ö§³Ö¶¨ÖÆ»¯ÐèÇó£¬ÀýÈç´Ó Talos ½«Êý¾Ý´«Êäµ½ Kudu ÖУ¬Talos
ÖÐÓÐÊ®¸ö×ֶΣ¬µ« Kudu ÖÐÖ»ÐèÒª 5 ¸ö×ֶΣ¬¸Ã¹¦ÄÜĿǰÎÞ·¨ºÜºÃµØÖ§³Ö£»
Spark Streaming ×ÔÉíÎÊÌ⣬²»Ö§³Ö Event Time£¬¶Ëµ½¶Ë Exactly Once
ÓïÒå¡£ 
»ùÓÚ Flink µÄʵʱÊý²Ö
ΪÁ˽â¾ö Streaming Platform 2.0 µÄÉÏÊöÎÊÌ⣬СÃ×½øÐÐÁË´óÁ¿µ÷ÑУ¬Ò²ºÍ°¢ÀïµÄʵʱ¼ÆËãÍŶÓ×öÁËһϵÁйµÍ¨ºÍ½»Á÷£¬×îÖÕ¾ö¶¨½«Ê¹ÓÃ
Flink À´¸ÄÔìÆ½Ì¨µ±Ç°µÄÁ÷³Ì£¬ÏÂÃæ¾ßÌå½éÉÜСÃ×Á÷ʽ¼ÆËãÆ½Ì¨»ùÓÚFlinkµÄʵ¼ù¡£
ʹÓà Flink ¶Ôƽ̨½øÐиÄÔìµÄÉè¼ÆÀíÄîÈçÏ£º
È«Á´Â· Schema Ö§³Ö£¬ÕâÀïµÄÈ«Á´Â·²»½ö°üº¬ Talos µ½ Flink µÄ½×¶Î£¬¶øÊÇ´Ó×ʼµÄÊý¾ÝÊÕ¼¯½×¶ÎÒ»Ö±µ½ºó¶ËµÄ¼ÆËã´¦Àí¡£ÐèҪʵÏÖÊý¾ÝУÑé»úÖÆ£¬±ÜÃâÊý¾ÝÎÛȾ£»×ֶαä¸üºÍ¼æÈÝÐÔ¼ì²é»úÖÆ£¬ÔÚ´óÊý¾Ý³¡¾°Ï£¬Schema
±ä¸üƵ·±£¬¼æÈÝÐÔ¼ì²éºÜÓбØÒª£¬½è¼ø Kafka µÄ¾Ñ飬ÔÚ Schema ÒýÈëÏòǰ¡¢Ïòºó»òÈ«¼æÈݼì²é»úÖÆ¡£
½èÖú Flink ÉçÇøµÄÁ¦Á¿È«ÃæÍƽø Flink ÔÚСÃ×µÄÂ䵨£¬Ò»·½Ãæ Streaming ʵʱ¼ÆËãµÄ×÷ÒµÖð½¥´Ó
Spark¡¢Storm Ç¨ÒÆµ½ Flink£¬±£Ö¤Ô±¾µÄÑÓ³ÙºÍ×ÊÔ´½ÚÊ¡£¬Ä¿Ç°Ð¡Ã×ÒѾÔËÐÐÁ˳¬¹ý 200
¸ö Flink ×÷Òµ£»ÁíÒ»·½ÃæÆÚÍûÓà Flink ¸ÄÔì Sink µÄÁ÷³Ì£¬ÌáÉýÔËÐÐЧÂʵÄͬʱ£¬Ö§³Ö
ETL£¬ÔÚ´Ë»ù´¡ÉÏ´óÁ¦Íƽø Streaming SQL£»
ʵÏÖ Streaming ²úÆ·»¯£¬ÒýÈë Streaming Job ºÍ Streaming SQL
µÄƽ̨»¯¹ÜÀí£»
»ùÓÚ Flink SQL ¸ÄÔì Talos Sink£¬Ö§³ÖÒµÎñÂß¼¶¨ÖÆ»¯

ÏÂͼÊÇ Streaming Platform 3.0 °æ±¾µÄ¼Ü¹¹Í¼£¬Óë 2.0 °æ±¾µÄ¼Ü¹¹Éè¼ÆÀàËÆ£¬Ö»ÊDZí´ïµÄ½Ç¶È²»Í¬¡£¾ßÌå°üº¬ÒÔϼ¸¸öÄ£¿é£º
³éÏó Table£º¸Ã°æ±¾Öи÷Öִ洢ϵͳÈç MySQL ºÍ Hive µÈ¶¼»á³éÏó³É Table£¬Îª
SQL »¯×ö×¼±¸¡£
Job ¹ÜÀí£ºÌṩ Streaming ×÷ÒµµÄ¹ÜÀíÖ§³Ö£¬°üÀ¨¶à°æ±¾Ö§³Ö¡¢ÅäÖÃÓëJar·ÖÀë¡¢±àÒ벿ÊðºÍ×÷ҵ״̬¹ÜÀíµÈ³£¼ûµÄ¹¦ÄÜ¡£
SQL ¹ÜÀí£ºSQL ×îÖÕҪת»»ÎªÒ»¸ö Data Stream ×÷Òµ£¬¸Ã²¿·Ö¹¦ÄÜÖ÷ÒªÓÐ Web IDE
Ö§³Ö¡¢Schema ̽²é¡¢UDF/ά±í Join¡¢SQL ±àÒë¡¢×Ô¶¯¹¹½¨ DDL ºÍ SQL ´æ´¢µÈ¡£
Talos Sink£º¸ÃÄ£¿é»ùÓÚ SQL ¹ÜÀí¶Ô 2.0 °æ±¾µÄ Sink ÖØ¹¹£¬°üº¬µÄ¹¦ÄÜÖ÷ÒªÓÐÒ»¼ü½¨±í¡¢Sink
¸ñʽ×Ô¶¯¸üС¢×Ö¶ÎÓ³Éä¡¢×÷ÒµºÏ²¢¡¢¼òµ¥ SQL ºÍÅäÖùÜÀíµÈ¡£Ç°ÃæÌáµ½µÄ³¡¾°ÖУ¬»ùÓÚ Spark Streaming
½« Message ´Ó Talos ¶ÁÈ¡³öÀ´£¬²¢Ô·â²»¶¯µØ×ªµ½ HDFS ÖÐ×öÀëÏßÊý²ÖµÄ·ÖÎö£¬´Ëʱ¿ÉÒÔÖ±½ÓÓÃ
SQL ±í´ïºÜ·½±ãµØÊµÏÖ¡£Î´À´Ï£ÍûʵÏÖ¸ÃÄ£¿éÓëСÃ×ÄÚ²¿µÄÆäËûϵͳÈç ElasticSearch ºÍ
Kudu µÈ½øÐÐÉî¶ÈÕûºÏ£¬¾ßÌåµÄ³¡¾°ÊǼÙÉèÒÑÓÐ Talos Schema£¬»ùÓÚ Talos Topic
Schema ×Ô¶¯°ïÖúÓû§´´½¨ Kudu ±í¡£
ƽ̨»¯£ºÎªÓû§ÌṩһÌ廯¡¢Æ½Ì¨»¯µÄ½â¾ö·½°¸£¬°üÀ¨µ÷ÊÔ¿ª·¢¡¢¼à¿Ø±¨¾¯ºÍÔËάµÈ¡£ 
Job ¹ÜÀí
Job ¹ÜÀíÌṩ Job È«ÉúÃüÖÜÆÚ¹ÜÀí¡¢Job ȨÏÞ¹ÜÀíºÍ Job ±êÇ©¹ÜÀíµÈ¹¦ÄÜ£»Ö§³ÖJob ÔËÐÐÀúʷչʾ£¬·½±ãÓû§×·ËÝ£»Ö§³Ö
Job ״̬ÓëÑÓ³Ù¼à¿Ø£¬¿ÉÒÔʵÏÖʧ°Ü×÷Òµ×Ô¶¯ÀÆð¡£

SQL ¹ÜÀí
Ö÷Òª°üÀ¨ÒÔÏÂËĸö»·½Ú£º
½«Íⲿ±íת»»Îª SQL DDL£¬¶ÔÓ¦ Flink 1.9 Öбê×¼µÄ DDL Óï¾ä£¬Ö÷Òª°üº¬ Table
Schema¡¢Table Format ºÍ Connector Properities¡£
»ùÓÚÍêÕû¶¨ÒåµÄÍⲿ SQL ±í£¬Ôö¼Ó SQL Óï¾ä£¬¼È¿ÉÒԵõ½Íê³ÉµÄ±í´ïÓû§µÄÐèÇó¡£¼´ SQL Config
±íʾÍêÕûµÄÓû§Ô¤¼Æ±í´ï£¬ÓÉ Source Table DDL¡¢Sink Table DDL ºÍ SQL
DMLÓï¾ä×é³É¡£
½« SQL Config ת»»³É Job Config£¬¼´×ª»»Îª Stream Job µÄ±íÏÖÐÎʽ¡£
½« Job Config ת»»Îª JobGraph£¬ÓÃÓÚÌá½» Flink Job¡£ 
Íⲿ±íת»»³É SQL DDL µÄÁ÷³ÌÈçÏÂͼËùʾ¡£
Ê×Ïȸù¾ÝÍⲿ±í»ñÈ¡ Table Schema ºÍ Table Format ÐÅÏ¢£¬ºóÕßÓÃÓÚ·´½âÊý¾Ý£¬Èç¶ÔÓÚ
Hive Êý¾Ý·´ÐòÁл¯£»
È»ºóÔÙºó¶ËÉú³ÉĬÈ쵀 Connector ÅäÖ㬸ÃÅäÖÃÖ÷Òª·ÖΪÈý²¿·Ö£¬¼´²»¿ÉÐ޸ĵġ¢´øÄ¬ÈÏÖµµÄÓû§¿ÉÐ޸ĵġ¢²»´øÄ¬ÈÏÖµµÄÓû§±ØÐëÅäÖõġ£
²»¿ÉÐ޸ĵÄÅäÖÃÇé¿öÊǼÙÉèÏû·ÑµÄÊÇ Talos ×é¼þ£¬ÄÇô connector.type Ò»¶¨ÊÇ talos£¬Ôò¸ÃÅäÖò»ÐèÒª¸Ä£»¶øÄ¬ÈÏÖµÊÇ´Ó
Topic Í·²¿¿ªÊ¼Ïû·Ñ£¬µ«Óû§¿ÉÒÔÉèÖôÓβ²¿¿ªÊ¼Ïû·Ñ£¬ÕâÖÖÇé¿öÊôÓÚ´øÄ¬ÈÏÖµµ«ÊÇÓû§¿ÉÐ޸ĵÄÅäÖã»¶øÒ»Ð©È¨ÏÞÐÅÏ¢ÊÇÓû§±ØÐëÅäÖõġ£
Ö®ËùÒÔ×öÈý²ãÅäÖùÜÀí£¬ÊÇΪÁ˾¡¿ÉÄܼõÉÙÓû§ÅäÖõĸ´ÔÓ¶È¡£Table Schema¡¢Table Format
ºÍ Connector 1 ÆäËûÅäÖÃÐÅÏ¢£¬×é³ÉÁËSQL DDL¡£½« SQL Config ·µ»Ø¸øÓû§Ö®ºó£¬¶ÔÓÚ¿ÉÐ޸ĵÄÐèÒªÓû§Ìîд£¬ÕâÑù±ã¿ÉÒÔÍê³É´ÓÍⲿ±íµ½
SQL DDL µÄת»»£¬ºìÉ«×ÖÌå±íʾµÄÊÇÓû§Ð޸ĵÄÐÅÏ¢¡£ 
SQL ¹ÜÀíÒýÈëÁËÒ»¸ö External Table µÄÌØÐÔ¡£¼ÙÉèÓû§ÔÚÆ½Ì¨ÉÏÑ¡ÔñÏû·Ñij¸ö Topic
µÄʱºò£¬¸ÃÌØÐÔ»á×Ô¶¯µØ»ñÈ¡ÉÏÃæÌáµ½µÄ Table µÄ Schema ºÍ Format ÐÅÏ¢£¬²¢ÇÒÏÔʾȥµôÁË×¢²á
Flink Table µÄÂß¼£»»ñÈ¡ Schema ʱ£¬¸ÃÌØÐԻὫÍⲿ±í×Ö¶ÎÀàÐÍ×Ô¶¯×ª»»Îª Flink
Table ×Ö¶ÎÀàÐÍ£¬²¢×Ô¶¯×¢²áΪ Flink Tab ÁË¡£Í¬Ê±½« Connector Properties
·Ö³ÉÈýÀ࣬²ÎÊý´øÄ¬ÈÏÖµ£¬Ö»ÓбØÐëÏîÒªÇóÓû§Ìîд£»ËùÓвÎÊý¾ù²ÉÓà Map<string,string>
µÄÐÎʽ±í´ï£¬·Ç³£±ãÓÚºóÐø×ª»¯Îª Flink ÄÚ²¿µÄ TableDescriptor¡£ 
ÉÏÃæ½éÉÜÁË SQL DDL µÄ´´½¨¹ý³Ì£¬ÔÚÒѾ´´½¨µÄ SQL DDL µÄ»ù´¡ÉÏ£¬Èç Source SQL
DDL ºÍ Sink SQL DDL£¬ÒªÇóÓû§Ìîд SQL query ²¢·µ»Ø¸øºó¶Ë£¬ºó¶Ë»á¶Ô SQL
½øÐÐÑéÖ¤£¬È»ºó»áÉú³ÉÒ»¸ö SQL Config£¬¼´Ò»¸ö SQL Óï¾äµÄÍêÕû±í´ï¡£ 
SQL Config ת»»Îª Job Config µÄÁ÷³ÌÈçÏÂͼËùʾ¡£
Ê×ÏÈÔÚ SQL Config µÄ»ù´¡ÉÏÔö¼Ó×÷ÒµËùÐèÒªµÄ×ÊÔ´¡¢Job µÄÏà¹ØÅäÖã¨Flink µÄ state
²ÎÊýµÈ£©£»
È»ºó½« SQLConfig ±àÒë³ÉÒ»¸ö Job Descriptor£¬¼´ Job Config µÄÃèÊö£¬Èç
Job µÄ Jar °üµØÖ·¡¢MainClass ºÍ MainArgs µÈ¡£

ÏÂͼչʾÁË Job Config ת»»Îª Job Graph µÄ¹ý³Ì¡£¶ÔÓÚ DDL ÖÐµÄ Schema¡¢Format
ºÍ Property ÊÇºÍ Flink ÖÐµÄ Table Descriptor ÊÇÒ»Ò»¶ÔÓ¦µÄ£¬ÕâÖÖÇé¿öÏÂÖ»ÐèÒªµ÷ÓÃ
Flink µÄÏà¹ØÄÚÖýӿھͿÉÒԺܷ½±ãµØ½«ÐÅϢת»»Îª Table Descriptor£¬Èç CreateTableSource()¡¢RegistorTableSource()
µÈ¡£Í¨¹ýÉÏÊö¹ý³Ì£¬DDL ±ã¿ÉÒÔ×¢²áµ½ Flink ϵͳÖÐÖ±½ÓʹÓ᣶ÔÓÚ SQL Óï¾ä£¬¿ÉÒÔÖ±½ÓʹÓÃ
TableEnv µÄ sqlUpdate() ¿ÉÒÔÍê³Éת»»¡£ 
SQL Config ת»»ÎªÒ»¸ö Template Job µÄÁ÷³ÌÈçÏÂËùʾ¡£Ç°ÃæÌîдµÄ Jar °üµØÖ·¼´¸Ã
Template µÄ Jar µØÖ·£¬MainClass ÊǸà Template Job¡£¼ÙÉèÒѾÓÐÁË
SQL DDL£¬¿ÉÒÔÖ±½Óת»»³É Table Descriptor£¬È»ºóͨ¹ý TableFactorUtil
µÄ findAndCreateTableSource() ·½·¨µÃµ½Ò»¸ö Table Source£¬Table
Sink µÄת»»¹ý³ÌÀàËÆ¡£Íê³ÉǰÁ½²½²Ù×÷ºó£¬×îºó½øÐÐ sqlUpdate() ²Ù×÷¡£ÕâÑù±ã¿ÉÒÔ½«Ò»¸ö
SQL Job ת»»Îª×îºó¿ÉÖ´ÐÐµÄ Job Graph Ìá½»µ½¼¯ÈºÉÏÔËÐС£ 
Talos Sink ²ÉÓÃÁËÏÂͼËùʾµÄÈýÖÖģʽ£º
Row£ºTalos µÄÊý¾ÝÔ·â²»¶¯µØ¹àµ½Ä¿±êϵͳÖУ¬ÕâÖÖģʽµÄºÃ´¦ÊÇÊý¾Ý¶ÁÈ¡ºÍдÈëµÄʱºòÎÞÐè½øÐÐÐòÁл¯ºÍ·´ÐòÁл¯£¬Ð§Âʽϸߣ»
ID mapping£º¼´×óÓÒÁ½±ß×ֶνøÐÐ mapping£¬name ¶ÔÓ¦ field_name£¬timestamp
¶ÔÓ¦ timestamp£¬ÆäÖÐ Region µÄ×ֶ檵ô£»
SQL£ºÍ¨¹ý SQL ±í´ïÀ´±íʾÂß¼ÉϵĴ¦Àí¡£

δÀ´¹æ»®
СÃ×Á÷ʽƽ̨δÀ´µÄ¼Æ»®Ö÷ÒªÓÐÒÔϼ¸µã£º
ÔÚ Flink Â䵨µÄʱºò³ÖÐøÍÆ½ø Streaming Job ºÍƽ̨»¯½¨É裻
ʹÓà Flink SQL ͳһÀëÏßÊý²ÖºÍʵʱÊý²Ö£»
ÔÚ Schema µÄ»ù´¡ÉÏÊý¾ÝѪԵ·ÖÎöºÍչʾ£¬°üÀ¨Êý¾ÝÖÎÀí·½ÃæµÄÄÚÈÝ£»
³ÖÐø²ÎÓë Flink ÉçÇøµÄ½¨Éè¡£ 
|