ǰÑÔ
±¾Îļòµ¥ÃèÊöSolrCloudµÄÌØÐÔ£¬»ù±¾½á¹¹ºÍÈëÃÅ£¬»ùÓÚSolr4.5°æ±¾¡£
LuceneÊÇÒ»¸öJavaÓïÑÔ±àдµÄÀûÓõ¹ÅÅÔÀíʵÏÖµÄÎı¾¼ìË÷Àà¿â¡£SolrÊÇÒÔLuceneΪ»ù´¡ÊµÏÖµÄÎı¾¼ìË÷Ó¦Ó÷þÎñ¡£
SolrCloudÊÇSolr4.0°æ±¾¿ª·¢³öµÄ¾ßÓпª´´ÒâÒåµÄ»ùÓÚSolrºÍZookeeperµÄ·Ö²¼Ê½ËÑË÷·½°¸£¬»òÕß¿ÉÒÔ˵£¬SolrCloudÊÇSolrµÄÒ»ÖÖ²¿Êð·½Ê½¡£Solr¿ÉÒÔÒÔ¶àÖÖ·½Ê½²¿Êð£¬ÀýÈçµ¥»ú·½Ê½£¬¶à»úMaster-Slaver·½Ê½£¬ÕâЩ·½Ê½²¿ÊðµÄSolr²»¾ßÓÐSolrCloudµÄÌØÉ«¹¦ÄÜ¡£
ÌØÉ«
SolrCloudÓм¸¸öÌØÉ«¹¦ÄÜ£º
1¡¢¼¯ÖÐʽµÄÅäÖÃÐÅÏ¢
ʹÓÃZK½øÐм¯ÖÐÅäÖá£Æô¶¯Ê±¿ÉÒÔÖ¸¶¨°ÑSolrµÄÏà¹ØÅäÖÃÎļþÉÏ´«Zookeeper£¬¶à»úÆ÷¹²Óá£ÕâЩZKÖеÄÅäÖò»»áÔÙÄõ½±¾µØ»º´æ£¬SolrÖ±½Ó¶ÁÈ¡ZKÖеÄÅäÖÃÐÅÏ¢¡£ÅäÖÃÎļþµÄ±ä¶¯£¬ËùÓлúÆ÷¶¼¿ÉÒÔ¸ÐÖªµ½¡£
ÁíÍ⣬SolrµÄһЩÈÎÎñÒ²ÊÇͨ¹ýZK×÷Ϊý½é·¢²¼µÄ¡£Ä¿µÄÊÇΪÁËÈÝ´í¡£½ÓÊÕµ½ÈÎÎñ£¬µ«ÔÚÖ´ÐÐÈÎÎñʱ±ÀÀ£µÄ»úÆ÷£¬ÔÚÖØÆôºó£¬»òÕß¼¯ÈºÑ¡³öºòÑ¡Õßʱ£¬¿ÉÒÔÔÙ´ÎÖ´ÐÐÕâ¸öδÍê³ÉµÄÈÎÎñ¡£
2¡¢×Ô¶¯ÈÝ´í
SolrCloud¶ÔË÷Òý·ÖƬ£¬²¢¶Ôÿ¸ö·ÖƬ´´½¨¶à¸öReplication¡£Ã¿¸öReplication¶¼¿ÉÒÔ¶ÔÍâÌṩ·þÎñ¡£Ò»¸öReplication¹Òµô²»»áÓ°ÏìË÷Òý·þÎñ¡£
¸üÇ¿´óµÄÊÇ£¬Ëü»¹ÄÜ×Ô¶¯µÄÔÚÆäËü»úÆ÷ÉϰïÄã°Ñʧ°Ü»úÆ÷ÉϵÄË÷ÒýReplicationÖØ½¨²¢Í¶ÈëʹÓá£
3¡¢½üʵʱËÑË÷
Á¢¼´ÍÆËÍʽµÄreplication£¨Ò²Ö§³ÖÂýÍÆËÍ£©¡£¿ÉÒÔÔÚÃëÄÚ¼ìË÷µ½Ð¼ÓÈëË÷Òý¡£
4¡¢²éѯʱ×Ô¶¯¸ºÔؾùºâ
SolrCloudË÷ÒýµÄ¶à¸öReplication¿ÉÒÔ·Ö²¼ÔÚ¶ą̀»úÆ÷ÉÏ£¬¾ùºâ²éѯѹÁ¦¡£Èç¹û²éѯѹÁ¦´ó£¬¿ÉÒÔͨ¹ýÀ©Õ¹»úÆ÷£¬Ôö¼ÓReplicationÀ´¼õ»º¡£
5¡¢×Ô¶¯·Ö·¢µÄË÷ÒýºÍË÷Òý·ÖƬ
·¢ËÍÎĵµµ½Èκνڵ㣬Ëü¶¼»áת·¢µ½ÕýÈ·½Úµã¡£
6¡¢ÊÂÎñÈÕÖ¾
ÊÂÎñÈÕ־ȷ±£¸üÐÂÎÞ¶ªÊ§£¬¼´Ê¹ÎĵµÃ»ÓÐË÷Òýµ½´ÅÅÌ¡£
ÆäËüÖµµÃÒ»ÌáµÄ¹¦ÄÜÓУº
1¡¢Ë÷Òý´æ´¢ÔÚHDFSÉÏ
Ë÷ÒýµÄ´óСͨ³£ÔÚGºÍ¼¸Ê®G£¬ÉϰÙGµÄºÜÉÙ£¬ÕâÑùµÄ¹¦ÄÜ»òÐíºÜÄÑʵÓᣵ«ÊÇ£¬Èç¹ûÄãÓÐÉÏÒÚÊý¾ÝÀ´½¨Ë÷ÒýµÄ»°£¬Ò²ÊÇ¿ÉÒÔ¿¼ÂÇһϵġ£ÎÒ¾õµÃÕâ¸ö¹¦ÄÜ×î´óµÄºÃ´¦»òÐí¾ÍÊǺÍÏÂÃæÕâ¸ö¡°Í¨¹ýMRÅúÁ¿´´½¨Ë÷Òý¡±ÁªºÏʵÓá£
2¡¢Í¨¹ýMRÅúÁ¿´´½¨Ë÷Òý
ÓÐÁËÕâ¸ö¹¦ÄÜ£¬Ä㻹µ£ÐÄ´´½¨Ë÷ÒýÂýÂð£¿
3¡¢Ç¿´óµÄRESTful API
ͨ³£ÄãÄÜÏëµ½µÄ¹ÜÀí¹¦ÄÜ£¬¶¼¿ÉÒÔͨ¹ý´ËAPI·½Ê½µ÷Óá£ÕâÑùдһЩά»¤ºÍ¹ÜÀí½Å±¾¾Í·½±ã¶àÁË¡£
4¡¢ÓÅÐãµÄ¹ÜÀí½çÃæ
Ö÷ÒªÐÅϢһĿÁËÈ»£»¿ÉÒÔÇåÎúµÄÒÔͼÐλ¯·½Ê½¿´µ½SolrCloudµÄ²¿Êð·Ö²¼£»µ±È»»¹Óв»¿É»òȱµÄDebug¹¦ÄÜ¡£
¸ÅÄî
Collection£ºÔÚSolrCloud¼¯ÈºÖÐÂß¼ÒâÒåÉϵÄÍêÕûµÄË÷Òý¡£Ëü³£³£±»»®·ÖΪһ¸ö»ò¶à¸öShard£¬ËüÃÇʹÓÃÏàͬµÄConfig
Set¡£Èç¹ûShardÊý³¬¹ýÒ»¸ö£¬Ëü¾ÍÊÇ·Ö²¼Ê½Ë÷Òý£¬SolrCloudÈÃÄãͨ¹ýCollectionÃû³ÆÒýÓÃËü£¬¶ø²»ÐèÒª¹ØÐÄ·Ö²¼Ê½¼ìË÷ʱÐèҪʹÓõĺÍShardÏà¹Ø²ÎÊý¡£
Config Set: Solr CoreÌṩ·þÎñ±ØÐëµÄÒ»×éÅäÖÃÎļþ¡£Ã¿¸öconfig setÓÐÒ»¸öÃû×Ö¡£×îСÐèÒª°üÀ¨solrconfig.xml
(SolrConfigXml)ºÍschema.xml (SchemaXml)£¬³ý´ËÖ®Í⣬ÒÀ¾ÝÕâÁ½¸öÎļþµÄÅäÖÃÄÚÈÝ£¬¿ÉÄÜ»¹ÐèÒª°üº¬ÆäËüÎļþ¡£Ëü´æ´¢ÔÚZookeeperÖС£Config
sets¿ÉÒÔÖØÐÂÉÏ´«»òÕßʹÓÃupconfigÃüÁî¸üУ¬Ê¹ÓÃSolrµÄÆô¶¯²ÎÊýbootstrap_confdirÖ¸¶¨¿ÉÒÔ³õʼ»¯»ò¸üÐÂËü¡£
Core: Ò²¾ÍÊÇSolr Core£¬Ò»¸öSolrÖаüº¬Ò»¸ö»òÕß¶à¸öSolr Core£¬Ã¿¸öSolr
Core¿ÉÒÔ¶ÀÁ¢ÌṩË÷ÒýºÍ²éѯ¹¦ÄÜ£¬Ã¿¸öSolr Core¶ÔÓ¦Ò»¸öË÷Òý»òÕßCollectionµÄShard£¬Solr
CoreµÄÌá³öÊÇΪÁËÔö¼Ó¹ÜÀíÁé»îÐԺ͹²ÓÃ×ÊÔ´¡£ÔÚSolrCloudÖÐÓиö²»Í¬µãÊÇËüʹÓõÄÅäÖÃÊÇÔÚZookeeperÖе쬴«Í³µÄSolr
coreµÄÅäÖÃÎļþÊÇÔÚ´ÅÅÌÉϵÄÅäÖÃĿ¼ÖС£
Leader: Ó®µÃÑ¡¾ÙµÄShard replicas¡£Ã¿¸öShardÓжà¸öReplicas£¬Õ⼸¸öReplicasÐèҪѡ¾ÙÀ´È·¶¨Ò»¸öLeader¡£Ñ¡¾Ù¿ÉÒÔ·¢ÉúÔÚÈκÎʱ¼ä£¬µ«ÊÇͨ³£ËûÃǽöÔÚij¸öSolrʵÀý·¢Éú¹ÊÕÏʱ²Å»á´¥·¢¡£µ±Ë÷Òýdocumentsʱ£¬SolrCloud»á´«µÝËüÃǵ½´ËShard¶ÔÓ¦µÄleader£¬leaderÔÙ·Ö·¢ËüÃǵ½È«²¿ShardµÄreplicas¡£
Replica: ShardµÄÒ»¸ö¿½±´¡£Ã¿¸öReplica´æÔÚÓÚSolrµÄÒ»¸öCoreÖС£Ò»¸öÃüÃûΪ¡°test¡±µÄcollectionÒÔnumShards=1´´½¨£¬²¢ÇÒÖ¸¶¨replicationFactorÉèÖÃΪ2£¬Õâ»á²úÉú2¸öreplicas£¬Ò²¾ÍÊǶÔÓ¦»áÓÐ2¸öCore£¬Ã¿¸öÔÚ²»Í¬µÄ»úÆ÷»òÕßSolrʵÀý¡£Ò»¸ö»á±»ÃüÃûΪtest_shard1_replica1£¬ÁíÒ»¸öÃüÃûΪtest_shard1_replica2¡£ËüÃÇÖеÄÒ»¸ö»á±»Ñ¡¾ÙΪLeader¡£
Shard: CollectionµÄÂß¼·ÖƬ¡£Ã¿¸öShard±»»¯³ÉÒ»¸ö»òÕß¶à¸öreplicas£¬Í¨¹ýÑ¡¾ÙÈ·¶¨ÄĸöÊÇLeader¡£
Zookeeper: ZookeeperÌṩ·Ö²¼Ê½Ëø¹¦ÄÜ£¬¶ÔSolrCloudÊDZØÐëµÄ¡£Ëü´¦ÀíLeaderÑ¡¾Ù¡£Solr¿ÉÒÔÒÔÄÚǶµÄZookeeperÔËÐУ¬µ«Êǽ¨ÒéÓöÀÁ¢µÄ£¬²¢ÇÒ×îºÃÓÐ3¸öÒÔÉϵÄÖ÷»ú¡£
¼Ü¹¹
Ë÷Òý£¨collection£©µÄÂ߼ͼ

Ë÷ÒýºÍSolrʵÌå¶ÔÕÕͼ

´´½¨Ë÷Òý¹ý³Ì

¼ìË÷¹ý³Ì

Shard Splitting

ÈëÃÅ
°²×°ÅäÖÃ
ǰÌᣬÄãÐèÒªÏȰ²×°ºÃJava£¬6.0+¡£ ¼ÙÉèÎÒÃÇÓÐ5̨»úÆ÷Òª°²×°Solr¡£
1.°²×°Íⲿzookeeper
SolrĬÈÏÊÇÓÃÄÚÖõÄZookeeper£¬ÎªÁË·½±ã¹ÜÀíºÍά»¤£¬½¨ÒéʹÓÃÍⲿZookeeper¡£
wget http://apache.dataguru.cn/zookeeper/zookeeper-3.4.3/zookeeper-3.4.3.tar.gz tar -zxvf zookeeper-3.4.3.tar.gz JavaµÄ³ÌÐò½âѹºó¾Í¿ÉÒÔÔËÐУ¬²»ÐèÒª°²×°¡£ Ð޸ĻòÕß´´½¨ÅäÖÃÎļþ$ZOOKEEPER_HOME/conf/zoo.cfg£¬ÄÚÈÝÈçÏ£º # ×¢ÒâÐÞ¸ÄΪÄãµÄÕæÊµÂ·¾¶ dataDir=/home/hadoop/zookeeper-3.4.3/data clientPort=2181 # ±àºÅ´Ó1¿ªÊ¼£¬solr1-3ÿ¸öÊÇһ̨Ö÷»ú£¬¹²3¸ö server.1=solr1:2888:3888 server.2=solr2:2888:3888 server.3=solr3:2888:3888 |
ÔÚ3̨»úÆ÷É϶¼Í¬Ñù°²×°¡£
ÁíÍ⣬»¹ÐèÒªÔÚ$dataDirÖÐÅäÖÃmyid£¬zookeeperÊÇÒÔ´ËÎļþÈ·¶¨±¾»úÉí·Ý¡£
# ×¢Òâÿ̨»úÆ÷ÉϵIJ»Ò»Ñù
echo "1" > myid #ÔÚsolr1ÉÏ echo "2" > myid #ÔÚsolr2ÉÏ echo "3" > myid #ÔÚsolr3ÉÏ |
Æô¶¯£¬ ÐèÒªÔÚ3̨»úÆ÷ÉÏ·Ö±ðÆô¶¯
$ZOOKEEPER_HOME/bin/zkServer.sh start # ²é¿´×´Ì¬£¬È·ÈÏÆô¶¯³É¹¦ $ZOOKEEPER_HOME/bin/zkServer.sh status |
2.Solr°²×°ÏÂÔØ
ÔÚ5̨»úÉÏ×öͬÑù²Ù×÷
wget
http://apache.mirrors.pair.com/lucene/solr/4.5.0/solr-4.5.0.tgz
tar -xzf solr-4.5.0.tgz
cd solr-4.5.0
cp -r example node1
cdo node1 # µÚÒ»Ìõsolr»úÆ÷
java -Dbootstrap_confdir=./solr/collection1/conf
-Dcollection.configName =myconf -DnumShards=2 -DzkHost=solr1:2181,solr2:2181,solr3:2181
-jar start.jar
# ÆäËüsolr»úÆ÷
java -DzkHost=solr1:2181,solr2:2181,solr3:2181 -jar
start.jar |
Æô¶¯³É¹¦ºó£¬Äã¿ÉÒÔͨ¹ýä¯ÀÀÆ÷8983¿´µ½solrµÄWebÒ³Ãæ¡£
3.Ë÷Òý
cd $SOLR_HOME/node1/exampledocs java -Durl=http://solr1:8983/solr/collection1/update -jar post.jar ipod_video.x |
4.¼ìË÷
Äã¿ÉÒÔÔÚweb½çÃæÑ¡¶¨Ò»¸öCore£¬È»ºó²éѯ¡£solrÓвéѯÓï·¨Îĵµ¡£
5.Èç¹ûÒªÏë°ÑÊý¾Ýдµ½HDFS
ÔÚ$SOLR_HOME/node1/solr/collection1/conf/solrconfig.xml
Ôö¼Ó
<directoryFactory name="DirectoryFactory" class="solr.HdfsDirectoryFactory"> <str name="solr.hdfs.home">hdfs://mycluster/solr</str> <bool name="solr.hdfs.blockcache.enabled">true</bool> <int name="solr.hdfs.blockcache.slab.count">1</int> <bool name="solr.hdfs.blockcache.direct.memory.allocation">true</bool> <int name="solr.hdfs.blockcache.blocksperbank">16384</int> <bool name="solr.hdfs.blockcache.read.enabled">true</bool> <bool name="solr.hdfs.blockcache.write.enabled">true</bool> <bool name="solr.hdfs.nrtcachingdirectory.enable">true</bool> <int name="solr.hdfs.nrtcachingdirectory.maxmergesizemb">16</int> <int name="solr.hdfs.nrtcachingdirectory.maxcachedmb">192</int> <str name="solr.hdfs.confdir">${user.home}/local/hadoop/etc/hadoop</int> </directoryFactory> |
ÖØÐÂÆô¶¯
java
-Dsolr.directoryFactory=HdfsDirectoryFactory -Dsolr.lock.type
=hdfs -Dsolr.data.dir=hdfs://mycluster/solr -Dsolr.updatelog=hdfs://mycluster/solrlog
-jar start.jar |
¿ÉÒÔÔö¼ÓÈçϲÎÊýÉ趨ֱ½ÓÄÚ´æ´óС£¬ÓÅ»¯Hdfs¶ÁдËÙ¶È¡£
XX:MaxDirectMemorySize=1g |
ÆäËü
NRT ½üʵʱËÑË÷
SolrµÄ½¨Ë÷ÒýÊý¾ÝÊÇÒªÔÚÌύʱдÈë´ÅÅ̵ģ¬ÕâÊÇÓ²Ìá½»£¬È·±£¼´±ãÊÇÍ£µçÒ²²»»á¶ªÊ§Êý¾Ý£»ÎªÁËÌṩ¸üʵʱµÄ¼ìË÷ÄÜÁ¦£¬SolrÉ趨ÁËÒ»ÖÖÈíÌá½»·½Ê½¡£
ÈíÌá½»£¨soft commit£©£º½ö°ÑÊý¾ÝÌá½»µ½Äڴ棬index¿É¼û£¬´ËʱûÓÐдÈëµ½´ÅÅÌË÷ÒýÎļþÖС£
Ò»¸öͨ³£µÄÓ÷¨ÊÇ£ºÃ¿1-10·ÖÖÓ×Ô¶¯´¥·¢Ó²Ìá½»£¬Ã¿ÃëÖÓ×Ô¶¯´¥·¢ÈíÌá½»¡£
RealTime Get ʵʱ»ñÈ¡
ÔÊÐíͨ¹ýΨһ¼ü²éÕÒÈκÎÎĵµµÄ×îа汾Êý¾Ý£¬²¢ÇÒ²»ÐèÒªÖØÐ´ò¿ªsearcher¡£Õâ¸öÖ÷ÒªÓÃÓÚ°ÑSolr×÷ΪNoSQLÊý¾Ý´æ´¢·þÎñ£¬¶ø²»½ö½öÊÇËÑË÷ÒýÇæ¡£
Realtime Getµ±Ç°ÒÀÀµÊÂÎñÈÕÖ¾£¬Ä¬ÈÏÊÇ¿ªÆôµÄ¡£ÁíÍ⣬¼´±ãÊÇSoft
Commit»òÕßcommitwithin£¬getÒ²Äܵõ½ÕæÊµÊý¾Ý¡£ ×¢£ºcommitwithinÊÇÒ»ÖÖÊý¾ÝÌá½»ÌØÐÔ£¬²»ÊÇÁ¢¿Ì£¬¶øÊÇÒªÇóÔÚÒ»¶¨Ê±¼äÄÚÌá½»Êý¾Ý¡£ |