±à¼ÍƼö: |
±¾ÎĽéÉÜÁË´óÊý¾ÝÒýÇæGreenplumµÄ¼Ü¹¹ºÍ²¿·Ö¼¼ÊõÌØµã£¬´ÓGPDB»ù±¾±³¾°¿ªÊ¼£¬Ôڼܹ¹µÄ²ãÃæÉϽ²½âGPDBϵͳÄÚ²¿¸÷¸öÄ£¿éµÄ¸Åò£¬È»ºóÎ§ÈÆGPDBµÄ×ÔÉíÌØÐÔ£¬²¢ÐÐÖ´ÐкÍÔËάµÈ¼¼Êõϸ½Ú£¬²ûÊöÁËΪʲôѡÔñʹÓÃGreenplum×÷ΪÏÂÒ»´úµÄ²éѯÒýÇæ½â¾ö·½°¸¡£
±¾ÎÄ×÷ÕßÖÜÀ×𩣬À´×Ô¡¶³ÌÐòÔ±¡·3Ô¼¼Êõ°åÔ´´Í¶¸å£¬ÓÉ»ðÁú¹ûÈí¼þLinda±à¼¡¢ÍƼö¡£ |
|
GreenplumµÄMPP¼Ü¹¹
Greenplum£¨ÒÔϼò³ÆGPDB£©ÊÇÒ»¿î¿ªÔ´Êý¾Ý²Ö¿â¡£»ùÓÚ¿ªÔ´µÄPostgreSQL¸ÄÔ죬Ö÷ÒªÓÃÀ´´¦Àí´ó¹æÄ£Êý¾Ý·ÖÎöÈÎÎñ£¬Ïà±ÈHadoop£¬Greenplum¸üÊʺÏ×ö´óÊý¾ÝµÄ´æ´¢¡¢¼ÆËãºÍ·ÖÎöÒýÇæ¡£
GPDBÊǵäÐ͵ÄMaster/Slave¼Ü¹¹£¬ÔÚGreenplum¼¯ÈºÖУ¬´æÔÚÒ»¸öMaster½ÚµãºÍ¶à¸öSegment½Úµã£¬ÆäÖÐÿ¸ö½ÚµãÉÏ¿ÉÒÔÔËÐжà¸öÊý¾Ý¿â¡£Greenplum²ÉÓÃshared
nothing¼Ü¹¹£¨MPP£©¡£µäÐ͵ÄShared Nothingϵͳ»á¼¯Êý¾Ý¿â¡¢ÄÚ´æCacheµÈ´æ´¢×´Ì¬µÄÐÅÏ¢£»¶ø²»ÔÚ½ÚµãÉϱ£´æ×´Ì¬µÄÐÅÏ¢¡£½ÚµãÖ®¼äµÄÐÅÏ¢½»»¥¶¼ÊÇͨ¹ý½Úµã»¥ÁªÍøÂçʵÏÖ¡£Í¨¹ý½«Êý¾Ý·Ö²¼µ½¶à¸ö½ÚµãÉÏÀ´ÊµÏÖ¹æÄ£Êý¾ÝµÄ´æ´¢£¬Í¨¹ý²¢Ðвéѯ´¦ÀíÀ´Ìá¸ß²éѯÐÔÄÜ¡£Ã¿¸ö½Úµã½ö²éѯ×Ô¼ºµÄÊý¾Ý¡£ËùµÃµ½µÄ½á¹ûÔÙ¾¹ýÖ÷½Úµã´¦ÀíµÃµ½×îÖÕ½á¹û¡£Í¨¹ýÔö¼Ó½ÚµãÊýÄ¿´ïµ½ÏµÍ³ÏßÐÔÀ©Õ¹¡£

ͼ1 GPDBµÄ»ù±¾¼Ü¹¹
ÈçÉÏͼ1ΪGPDBµÄ»ù±¾¼Ü¹¹£¬¿Í»§¶Ëͨ¹ýÍøÂçÁ¬½Óµ½gpdb£¬ÆäÖÐMaster HostÊÇGPµÄÖ÷½Úµã£¨¿Í»§¶ËµÄ½ÓÈëµã£©£¬Segment
HostÊÇ×ӽڵ㣨Á¬½Ó²¢Ìá½»SQLÓï¾äµÄ½Ó¿Ú£©£¬Ö÷½ÚµãÊDz»´æ´¢Óû§Êý¾ÝµÄ£¬×Ó½Úµã´æ´¢Êý¾Ý²¢¸ºÔðSQL²éѯ£¬Ö÷½Úµã¸ºÔðÏàÓ¦¿Í»§¶ËÇëÇó²¢½«ÇëÇóµÄSQLÓï¾ä½øÐÐת»»£¬×ª»»Ö®ºóµ÷¶Èºǫ́µÄ×Ó½Úµã½øÐвéѯ£¬²¢½«²éѯ½á¹û·µ»Ø¿Í»§¶Ë¡£
Greenplum Master
MasterÖ»´æ´¢ÏµÍ³ÔªÊý¾Ý£¬ÒµÎñÊý¾ÝÈ«²¿·Ö²¼ÔÚSegmentsÉÏ¡£Æä×÷ΪÕû¸öÊý¾Ý¿âϵͳµÄÈë¿Ú£¬¸ºÔð½¨Á¢Óë¿Í»§¶ËµÄÁ¬½Ó£¬SQLµÄ½âÎö²¢ÐγÉÖ´Ðмƻ®£¬·Ö·¢ÈÎÎñ¸øSegmentʵÀý£¬²¢ÇÒÊÕ¼¯SegmentµÄÖ´Ðнá¹û¡£ÕýÒòΪMaster²»¸ºÔð¼ÆË㣬ËùÒÔMaster²»»á³ÉΪϵͳµÄÆ¿¾±¡£
Master½ÚµãµÄ¸ß¿ÉÓã¨Í¼2£©£¬ÀàËÆÓÚHadoopµÄNameNode HA£¬ÈçÏÂͼ£¬Standby
Masterͨ¹ýsynchronization process£¬±£³ÖÓëPrimary MasterµÄcatalogºÍÊÂÎñÈÕÖ¾Ò»Ö£¬µ±Primary
Master³öÏÖ¹ÊÕÏʱ£¬Standby Master³Ðµ£MasterµÄÈ«²¿¹¤×÷¡£

ͼ2 Master½ÚµãµÄ¸ß¿ÉÓÃ
Segments
GreenplumÖпÉÒÔ´æÔÚ¶à¸öSegment£¬SegmentÖ÷Òª¸ºÔðÒµÎñÊý¾ÝµÄ´æ´¢ºÍ´æÈ¡£¨Í¼3£©£¬Óû§²éѯSQLµÄÖ´ÐУ¬Ã¿¸öSegment´æ·ÅÒ»²¿·ÖÓû§Êý¾Ý£¬µ«ÊÇÓû§²»ÄÜÖ±½Ó·ÃÎÊSegment£¬ËùÓжÔSegmentµÄ·ÃÎʶ¼±ØÐë¾¹ýMaster¡£½øÐÐÊý¾Ý·ÃÎÊʱ£¬ËùÓеÄSegmentÏȲ¢Ðд¦ÀíÓë×Ô¼ºÓйصÄÊý¾Ý£¬Èç¹ûÐèÒª¹ØÁª´¦ÀíÆäËûSegmentÉϵÄÊý¾Ý£¬Segment¿ÉÒÔͨ¹ýInterconnect½øÐÐÊý¾ÝµÄ´«Êä¡£Segment½ÚµãÔ½¶à£¬Êý¾Ý¾Í»á´òµÄԽɢ£¬´¦ÀíËٶȾÍÔ½¿ì¡£Òò´ËÓëShare
AllÊý¾Ý¿â¼¯Èº²»Í¬£¬Í¨¹ýÔö¼ÓSegment½Úµã·þÎñÆ÷µÄÊýÁ¿£¬GreenplumµÄÐÔÄÜ»á³ÉÏßÐÔÔö³¤¡£

ͼ3 Segment¸ºÔðÒµÎñÊý¾ÝµÄ´æÈ¡
ÿ¸öSegmentµÄÊý¾ÝÈßÓà´æ·ÅÔÚÁíÒ»¸öSegmentÉÏ£¬Êý¾Ýʵʱͬ²½£¬µ±Primary SegmentʧЧʱ£¬Mirror
Segment½«×Ô¶¯Ìṩ·þÎñ£¬µ±Primary Segment»Ö¸´Õý³£ºó£¬¿ÉÒԺܷ½±ãµÄʹÓÃgprecoverseg
-F¹¤¾ßÀ´Í¬²½Êý¾Ý¡£
Interconnect
InterconnectÊÇGreenplum¼Ü¹¹ÖеÄÍøÂç²ã£¨Í¼4£©£¬ÊÇGPDBϵͳµÄÖ÷Òª×é¼þ£¬Ä¬ÈÏÇé¿öÏ£¬Ê¹ÓÃUDPÐÒ飬µ«ÊÇGreenplum»á¶ÔÊý¾Ý°ü½øÐÐУÑ飬Òò´Ë¿É¿¿ÐÔµÈͬÓÚTCP£¬µ«ÊÇÐÔÄÜÉÏ»á¸üºÃ¡£ÔÚʹÓÃTCPÐÒéµÄÇé¿öÏ£¬SegmentµÄʵÀý²»Äܳ¬¹ý1000£¬µ«ÊÇʹÓÃUDPÔòûÓÐÕâ¸öÏÞÖÆ¡£

ͼ4 GreenplumÍøÂç²ãInterconnect
Greenplum£¬ÐµĽâ¾ö·½°¸
Ç°Ãæ½éÉÜÁËGPDBµÄ»ù±¾¼Ü¹¹£¬ÈöÁÕß¶ÔGPDBÓÐÁ˳õ²½µÄÁ˽⣬ÏÂÃæ¶ÔGPDBµÄ²¿·ÖÌØÐÔÃèÊö¿ÉÒԺܺõÄÀí½âΪʲôѡÔñGPDB×÷ΪеĽâ¾ö·½°¸¡£
·á¸»µÄ¹¤¾ß°ü£¬ÔËά´Ó´Ë²»ÊÇʶù
¶Ô±È¿ªÔ´ÉçÇøµÄÆäËûÏîÄ¿ÔÚÔËάÉϵÄÀ§ÄÑ£¬GPDBÌṩÁ˷ḻµÄ¹ÜÀí¹¤¾ß£¬Í¼Ðλ¯µÄweb¼à¿ØÒ³Ã棬°ïÖú¹ÜÀíÔ±¸üºÃµÄ¹ÜÀí¼¯Èº£¬¼à¿Ø¼¯Èº±¾ÉíÒÔ¼°ËùÔÚ·þÎñÆ÷µÄÔËÐÐ×´¿ö¡£
×î½üµÄ¹«ÓÐÔÆ¼¯ÈºÇ¨Òƹý³ÌÖУ¬impala×ܲéѯ¶Î´ïµ½100µÄʱºò£¬ÏµÍ³¿ªÊ¼±äµÃ¼«²»Îȶ¨£¬ºóÀ´ÔÚÍâÔ®µÄ°ïÖúÏ·¢ÏÖÊÇϵͳÄں˱¾ÉíµÄÎÊÌ⣬ÔÚ¶ñ²¹ÏµÍ³Äں˲ÎÊýµÄͬʱ£¬·¢ÏÖGPDBµÄ¹¤¾ßÒ²±äÏàµÄÌî³äÁËÎÒÃǵĶ̰壬±ÈÈçÌṩÁËgpcheckºÍgpcheckperfµÈÃüÁÓÃÒÔ¼ì²âGPDBÔËÐÐËùÐèÒªµÄϵͳÅäÖÃÊÇ·ñºÏÀíÒÔ¼°¶ÔÏà¹ØÓ²¼þ×öÐÔÄܲâÊÔ£¬ÈçÏ£¬Ö´ÐÐgpcheckÃüÁîºó£¬¼ì²âsysctl.confÖвÎÊýµÄÉèÖÃÊÇ·ñ·ûºÏÒªÇó£¬Èç¹û¶Ô²ÎÊýµÄº¬Òå¸ÐÐËȤ£¬¿ÉÒÔ×ÔÐаٶÈѧϰ¡£

ÁíÍ⣬ÔÚ°²×°¹ý³ÌÖУ¬ÓÃÆäÌṩµÄgpssh-exkeysÃüÁî´òͨËùÓлúÆ÷ÃâÃܵǼºó£¬¿ÉÒԺܷ½±ãµÄʹÓÃgpasshÃüÁî¶ÔËùÓеĻúÆ÷ÅúÁ¿²Ù×÷£¬ÈçÏÂͼÑÝʾÁËÔÚmasterÖ÷»úÉÏÖ´ÐÐgpsshÃüÁîºó£¬ÔÚ¼¯ÈºµÄÎą̊»úÆ÷ÉÏÅúÁ¿Ö´ÐÐpwdÃüÁî¡£

ÖîÈçÉÏÊöµÄ¹¤¾ßGPDB»¹ÌṩÁ˺ܶ࣬±ÈÈç»Ö¸´segment½ÚµãµÄgprecoversegÃüÁ±ÈÈçÇл»Ö÷±¸½ÚµãµÄgpactivatestandbyÃüÁµÈµÈ¡£ÕâÀ๤¾ßµÄÌṩÈü¯ÈºµÄά»¤±äµÃºÜ¼òµ¥£¬µ±È»ÎÒÃÇÒ²¿ÉÒÔ»ùÓÚÇ¿´óµÄ¹¤¾ß°ü¿ª·¢×Ô¼ºµÄ¹ÜÀíºǫ́£¬Èü¯ÈºµÄά»¤¸ü¼ÓµÄɵ¹Ï»¯¡£
²éѯ¼Æ»®ºÍ²¢ÐÐÖ´ÐУ¬SQLÓÅ»¯ÀûÆ÷
²éѯ¼Æ»®°üÀ¨ÁËһЩ´«Í³µÄ²Ù×÷£¬±ÈÈ磺ɨ±í¡¢¹ØÁª¡¢¾ÛºÏ¡¢ÅÅÐòµÈ¡£ÁíÍ⣬GPDBÓÐÒ»¸öÌØ¶¨µÄ²Ù×÷£ºÒƶ¯£¨motion£©¡£Òƶ¯²Ù×÷Éæ¼°µ½²éѯ´¦ÀíÆÚ¼äÔÚSegmentÖ®¼äÒÆ¶¯Êý¾Ý¡£
ÏÂÃæµÄSQLÊÇTPCHÖÐQuery 1µÄ¼ò»¯°æ£¬ÓÃÀ´¼òµ¥ÃèÊö²éѯ¼Æ»®¡£

Ö´Ðмƻ®Ö´ÐдÓÏÂÖÁÉÏ£¬¿ÉÒÔ¿´µ½Ã¿¸ö¼Æ»®½Úµã²Ù×÷µÄ¶îÍâÐÅÏ¢¡£
Segment½ÚµãɨÃè¸÷×ÔËù´æ´¢µÄcustomer±íÊý¾Ý£¬°´ÕÕ¹ýÂËÌõ¼þÉú³É½á¹ûÊý¾Ý£¬²¢½«×Ô¼ºÉú³ÉµÄ½á¹ûÊý¾ÝÒÀ´Î·¢Ë͵½ÆäËûSegment¡£
ÿ¸öSegmentÉÏ£¬orders±íµÄÊý¾ÝºÍÊÕµ½µÄrs×öjoin£¬²¢°Ñ½á¹ûÊý¾Ý·µ»Ø¸ømaster
ÉÏÃæµÄÖ´Ðйý³Ì¿ÉÒÔ¿´³ö£¬GPDBÊǽ«½á¹ûÊý¾Ý¸øÃ¿¸öº¬ÓÐorders±íÊý¾ÝµÄ½Úµã¶¼·¢ÁËÒ»·Ý¡£ÎªÁË×î´óÏ޶ȵÄʵÏÖ²¢Ðл¯´¦Àí£¬GPDB»á½«²éѯ¼Æ»®·Ö³É¶à¸ö´¦Àí²½Öè¡£ÔÚ²éѯִÐÐÆÚ¼ä£¬·Ö·¢µ½SegmentÉϵĸ÷²¿·Ö»á²¢ÐеÄÖ´ÐÐһϵÁеĴ¦Àí¹¤×÷£¬²¢ÇÒÖ»´¦ÀíÊôÓÚ×Ô¼º²¿·ÖµÄ¹¤×÷¡£ÖØÒªµÄÊÇ£¬¿ÉÒÔÔÚͬһ¸öÖ÷»úÉÏÆô¶¯¶à¸öpostgresqlÊý¾Ý¿â½øÐиü¶à±íµÄ¹ØÁªÒÔ¼°¸ü¸´ÔӵIJéѯ²Ù×÷£¬µ¥Ì¨»úÆ÷µÄÐÔÄܵõ½¸ü¼Ó³ä·ÖµÄ·¢»Ó¡£
ÈçºÎ²é¿´Ö´Ðмƻ®£¿
Èç¹ûÒ»¸ö²éѯ±íÏÖ³öºÜ²îµÄÐÔÄÜ£¬¿ÉÒÔͨ¹ý²é¿´Ö´Ðмƻ®ÕÒµ½¿ÉÄܵÄÎÊÌâµã¡£
1 ¼Æ»®ÖÐÊÇ·ñÓÐÒ»¸ö²Ù×÷»¨·Ñʱ¼ä³¬³¤£¿
2 ¹æ»®ÆÚµÄÆÀ¹ÀÊÇ·ñ½Ó½üʵ¼ÊÇé¿ö£¿
3 Ñ¡ÔñÐÔÇ¿µÄÌõ¼þÊÇ·ñ½ÏÔç³öÏÖ£¿
4 ¹æ»®ÆÚÊÇ·ñÑ¡ÔñÁË×î¼ÑµÄ¹ØÁªË³Ðò£¿
5 ¹æ»®ÆäÊÇ·ñÑ¡ÔñÐÔµÄɨÃè·ÖÇø±í£¿
6 ¹æ»®ÆäÊÇ·ñºÏÊʵÄÑ¡ÔñÁËHash¾ÛºÏÓëHash¹ØÁª²Ù×÷£¿
¸ßЧµÄÊý¾Ýµ¼È룬ÅúÁ¿²»ÔÙÊÇÆ¿¾±
Ç°ÃæÌáµ½£¬GreenplumµÄMaster½ÚµãÖ»¸ºÔð¿Í»§¶Ë½»»¥ºÍÆäËûһЩ±ØÒªµÄ¿ØÖÆ£¬¶ø²»³Ðµ£ÈκεļÆËãÈÎÎñ¡£ÔÚ¼ÓÔØÊý¾ÝµÄʱºò£¬»áÏȽøÐÐÊý¾Ý·Ö²¼µÄ´¦Àí¹¤×÷£¬ÎªÃ¿¸ö±íÖ¸¶¨Ò»¸ö·Ö·¢ÁУ¬½ÓÏÂÀ´£¬ËùÓеĽڵãͬʱ¶ÁÈ¡Êý¾Ý£¬¸ù¾ÝÑ¡¶¨µÄHashËã·¨£¬½«µ±Ç°½ÚµãÊý¾ÝÁôÏ£¬ÆäËûÊý¾Ýͨ¹ýinterconnect´«Êäµ½ÆäËû½ÚµãÉÏÈ¥£¬±£Ö¤Á˸ßÐÔÄܵÄÊý¾Ýµ¼È롣ͨ¹ý½áºÏÍⲿ±íºÍgpfdist·þÎñ£¬GPDB¿ÉÒÔ×öµ½Ã¿Ð¡Ê±µ¼Èë2TBÊý¾Ý£¬ÔÚ²»¸Ä±äETLÁ÷³ÌµÄÇé¿öÏ£¬¿ÉÒÔ´Óimpala¿ìËٵĵ¼Èë¼ÆËãºÃµÄÊý¾ÝΪÏû·ÑÌṩ·þÎñ¡£
ʹÓÃgpfdistµÄÓÅÊÆÔÚÓÚÆä¿ÉÒÔÈ·±£ÔÙ¶ÈÈ¥Íⲿ±íµÄÎļþʱ£¬GPDBϵͳµÄËùÓÐSegment¿ÉÒÔÍêÈ«±»ÀûÓÃÆðÀ´£¬µ«ÊÇÐèҪȷ±£ËùÓÐSegmentÖ÷»ú¿ÉÒÔ¾ßÓзÃÎÊgpfdistµÄÍøÂç¡£
ÆäËû
GPDBÖ§³ÖLDAPÈÏÖ¤£¬ÕâÒ»ÌØÐÔµÄÖ§³Ö£¬ÈÃÎÒÃÇ¿ÉÒÔ°ÑĿǰImpalaµÄ½ÇɫȨÏÞ¿ØÖÆÎÞ·ìµÄÇ¨ÒÆµ½GPDB¡£
GPDB»ùÓÚPostgresql 8.2¿ª·¢£¬Í¨¹ýpsqlÃüÁîÐй¤¾ß¿ÉÒÔ·ÃÎÊGPDBÊý¾Ý¿âµÄËùÓй¦ÄÜ£¬ÁíÍâÖ§³ÖJDBC¡¢ODBCµÈ·ÃÎÊ·½Ê½£¬²úÆ·½Ó¿Ú²ãÖ»ÐèÒª½øÐÐÉÙÁ¿µÄÊÊÅä¼´¿ÉʹÓÃGPDBÌṩ·þÎñ¡£
GPDBÖ§³Ö»ùÓÚ×ÊÔ´¶ÓÁеĹÜÀí£¬¿ÉÒÔΪ²»Í¬ÀàÐ͹¤×÷¸ºÔØ´´½¨×ÊÔ´¶ÀÁ¢µÄ¶ÓÁУ¬²¢ÇÒÓÐЧµÄ¿ØÖÆÓû§µÄ²éѯÒÔ±ÜÃâϵͳ³¬¸ººÉÔËÐС£±ÈÈ磬¿ÉÒÔΪVIPÓû§£¬ETLÉú²ú£¬ÈÎÐÔºÍadhocµÈ´´½¨²»Í¬µÄ×ÊÔ´¶ÓÁС£Í¬Ê±£¬Ö§³ÖÓÅÏȼ¶µÄÉèÖã¬ÔÚ²¢·¢ÕùÓÃ×ÊԴʱ£¬¸ßÓÅÏȼ¶¶ÓÁеÄÓï¾ä½«¿ÉÒÔ»ñµÃ±ÈµÍÓÅÏȼ¶×ÊÔ´¶ÓÁÐÓï¾ä¸ü¶àµÄ×ÊÔ´¡£
×î½üÔÚ¶ÔGPDB×öµ÷ÑкͲâÊÔ£¬¹ý³ÌÖÐÓÃTPCH×öÐÔÄܵIJâÊÔ£¬Í¨¹ýºÍÍøÂçÉÏÆäËû·þÎñµÄ¶Ô±È·¢ÏÖÔÚ5¸ö½ÚµãµÄÇé¿öÏÂÒѾÓÐÁ˺ܸߵIJéѯËÙ¶È£¬µ«ÊÇÓÉÓÚ²âÊÔ»·¾³·þÎñÆ÷ÎÊÌ⣬¾ßÌåµÄÐÔÄÜÊý¾Ý»¹ÒªÔÚ½ÓÏÂÀ´µÄл·¾³Öеóö£¬²»¹ýGPDB»ùÓÚpostgresql¿ª·¢£¬ÌìÉúÖ§³Ö·á¸»µÄͳ¼Æº¯Êý£¬Ö§³ÖºáÏòµÄÏßÐÔÀ©Õ¹£¬ÄÚ²¿ÈÝ´í»úÖÆ£¬Óкܶ๦ÄÜÇ¿´óµÄÔËά¹ÜÀíÃüÁîºÍ´úÂ룬Ïà±Èimpala¶øÑÔ£¬ÏÔÈ»ÔÚSQLµÄÖ§³Ö¡¢ÊµÊ±ÐÔºÍÎȶ¨ÐÔÉϸüʤһ³ï¡£
|