大数据实战之环境搭建(九)

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介:

在上一节我们在配置集群的时候,配置了一个seeds节点在cassandra.yaml文件中。而且集群中的所有节点的seeds配置都是一样的,在Cassandra集群之间有一个协议叫Gossip协议,这是一个称之为端到端的八卦协议。每个Cassandra集群节点都靠这个协议互通信息,Gossip每秒都会向其他节点发送心跳探测,进行信息交换,确定彼此的状态。seeds节点是cassandra中一个比较重要的节点,他负责和集群中的其他节点通讯并获取信息。对于cassandra的写入和读取操作,都是通过seeds节点均衡的请求其它的节点。那么当集群中一个节点Down了,Gossip会探测到,就不会将数据写到这个down的节点上,但是还会继续向这个节点发送心跳探测,只要这个节点恢复正常,会立即加入集群进行工作,分担负载。


那么今天Solr云怎么搭建呢?其实也是很简单的,首先给大家介绍一个网站

http://wiki.apache.org/solr/SolrCloud#schema.xml

专门讲述Solr Cloud的,看懂了,搭建Solr云是比较轻松的。


进入正题,我们看一下CentOS中的Solr Cloud如何搭建

143624601.jpg

首先我们将example复制一份叫example2,如果你是用puty等linux客户端连接工具的话,进入solr目录使用cp -r example example2命令拷贝。

我们看一下example下的东东

144208504.jpg

有一个solr文件夹,内容如下

171915857.jpg

包含MyTest的一个实例,多个SolrCore可以组成Solr的一个collection。那么我们在此再创建一个实例,实现多实例,我们修改后的solr文件夹如下

172714600.jpg

增加了一个MyTest1的实例,并且将solr.xml的文件内容修改如下

1
2
3
4
< cores  adminPath = "/admin/cores"  defaultCoreName = "Bruce"  host = "${host:}"  hostPort = "${jetty.port:8983}"  hostContext = "${hostContext:solr}"  zkClientTimeout = "${zkClientTimeout:15000}" >
   < core  name = "MyTest.UserInfo"  instanceDir = "MyTest"  />
    < core  name = "MyTest.BonusInfo"  instanceDir = "MyTest1"  />
</ cores >

OK,那么我们就实现了多实例的一个SolrCollection。OK,我们浏览一下

181146463.jpg

看到了吧,这就是在一个IP地址一个端口下多实例的实现,那么在这里我模拟一个简单的业务,一个是用户信息,一个是资金信息,这两个共同组成一个用户的一个资金管理业务。但是这种部署方式是省事了,也很简单,占用的机器也少,但是如果说这个192.168.192.128的机器因自然灾害被毁,那么辛苦经营的数据岂不是付之东流。所以目前大多数的用户在使用Solr的时候,都是采用云部署,从而实现分布式搜索,通过简单的拓扑结构,就可以避免部分机器over,导致整个数据的不完整或者无法使用。那么下来我们就看一下传说中的Solr Cloud。


首先,我们在上面提到的Solr-4.3.0目录下有example和example2,两个是完全一样的复制品,首先我们要确保example/solr/MyTest/data下面是空的,没有数据和索引文件。我么要实现的是下面的集群

184818104.jpg


接着进入到example命令,执行如下的命令

1
java -Djetty.port=8983 -Dbootstrap_confdir=. /solr/MyTest/conf  -Dcollection.configName=myconf-DzkRun -DnumShards=2 -jar

到这一步没有错误算是启动成功

185113408.jpg

在这里我们可以看到集群的一些信息。

那么上面的这个命令是什么意思呢?在此解释一下

-Djetty.port=8983是设置jetty的启动端口,jetty和Tomcat以及Jboss号称三大web主流容器。

-DzkRun是触发嵌入在SolrServer中的zookeeper运行

-Dbootstrap_confdir=./solr/MyTest/conf是将Solr的config上传至zookeeper下,并且文件夹名称为

myconf。我们看一下上传到zookeeper的myconf文件夹及内容

183810413.jpg


看到了吧,在这里已经有了myconf文件夹,内容就是从solr/conf下面上传过来的。-DnumShareds=2意思是我们要将索引划分为几个逻辑分区。在这里设置为2,那么我们的shareds就有两个

184241113.jpg

因为目前我只是启动了一个机器,所以shared2还没有映射的机器,等我再启动一台后,他会映射到shard2。好了我们再启动一台,看是否能映射到shared2。首先我们进入到example2目录下,执行

1
java -Djetty.port= 7574  -DzkHost=localhost: 9983  -jar start.jar

解释一下这段命令

-Djetty的意思是告诉jetty servlet容器使用另外的端口,-DzHost是指出刚才我们运行的一个Solr Server中嵌入的zookeeper的地址,官网解释是zookeeper的端口为solr的端口加上1000,所以在这里是9983。OK我们再看一下Solr云

190526138.jpg

看到了吧,出现了两个分片,那么写数据的时候可能有些数据写在shared1上,有些写在shared2上,但是我们在检索数据的时候,会返回一个完整的结果,这就是一个简单的云部署。

191050427.jpg

那么当我们再启动几台机器会怎么样呢?因为我们指定了只能有两个逻辑分区,那么当我们启动第三台机器的时候,他就作为shard1的复制品,如果再启动一个机器,他就作为shard2的复制品。ok,我们现在来试一下,由于我只有一个虚拟机和一台windows7机器,所以我打算在windows上启动2个solr,那么他们会自动加入shard1和shard2。那到底是不是这样呢?我用同样的命令启动了一个windows上的solr,报错,错误原因至今没找到,或者说压根就是个错误的尝试。那我们再复制两个example,如下

084103877.png

OK,我们用如下的命令在启动一个机器

1
java -Djetty.port=7575 -DzkHost=localhost:9983 -jar start.jar

我们再看一下solr cloud有没有变化,输入http://192.168.192.128:8983/solr/#/~cloud,我们发现shard1多了一个复制品

084307650.png

其拓扑图如下

084359824.png

这个实验验证了我们所说的,第三台机器会作为第一台机器的一个复制品。

我们在启动一台机器,这个节点将作为第二台机器的复制品

084920764.png

其拓扑结构如下

084958754.png

上面的拓扑结构就是我们实现的分区为2,复制品为1的solr 集群

182530922.jpg

OK,如果我们有机器资源的话,只需要在不同的机器上像这样启动,就可以搭建出一个solr cloud。由于本人机器有限,只能用同一个IP给大家做演示。



本文转自 BruceAndLee 51CTO博客,原文链接:http://blog.51cto.com/leelei/1242941,如需转载请自行联系原作者


相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
相关文章
|
4月前
|
SQL 分布式计算 数据可视化
滴滴出行大数据数仓实战
滴滴出行大数据数仓实战
117 0
滴滴出行大数据数仓实战
|
4月前
|
SQL 分布式计算 大数据
【大数据技术Spark】DStream编程操作讲解实战(图文解释 附源码)
【大数据技术Spark】DStream编程操作讲解实战(图文解释 附源码)
39 0
|
4月前
|
安全 大数据 API
elasticsearch|大数据|elasticsearch的api部分实战操作以及用户和密码的管理
elasticsearch|大数据|elasticsearch的api部分实战操作以及用户和密码的管理
63 0
|
12天前
|
机器学习/深度学习 人工智能 安全
Azure Databricks实战:在云上轻松进行大数据分析与AI开发
【4月更文挑战第8天】Databricks在大数据分析和AI开发中表现出色,简化流程并提高效率。文中列举了三个应用场景:数据湖分析、实时流处理和AI机器学习,并阐述了Databricks的一体化平台、云原生弹性及企业级安全优势。博主认为,Databricks提升了研发效能,无缝集成Azure生态,并具有持续创新潜力,是应对大数据挑战和加速AI创新的理想工具。
36 0
|
2月前
|
分布式计算 大数据 Java
Spark 大数据实战:基于 RDD 的大数据处理分析
Spark 大数据实战:基于 RDD 的大数据处理分析
120 0
|
4月前
|
SQL 存储 大数据
手把手教你大数据离线综合实战 ETL+Hive+Mysql+Spark
手把手教你大数据离线综合实战 ETL+Hive+Mysql+Spark
93 0
|
4月前
|
机器学习/深度学习 分布式计算 搜索推荐
【大数据技术】Spark MLlib机器学习协同过滤电影推荐实战(附源码和数据集)
【大数据技术】Spark MLlib机器学习协同过滤电影推荐实战(附源码和数据集)
78 0
|
4月前
|
机器学习/深度学习 分布式计算 前端开发
【大数据技术】Spark MLlib机器学习线性回归、逻辑回归预测胃癌是否转移实战(附源码和数据集)
【大数据技术】Spark MLlib机器学习线性回归、逻辑回归预测胃癌是否转移实战(附源码和数据集)
35 0
|
4月前
|
机器学习/深度学习 分布式计算 大数据
【大数据技术】Spark MLlib机器学习特征抽取 TF-IDF统计词频实战(附源码和数据集)
【大数据技术】Spark MLlib机器学习特征抽取 TF-IDF统计词频实战(附源码和数据集)
27 0
|
4月前
|
消息中间件 分布式计算 大数据
【大数据技术】Spark+Flume+Kafka实现商品实时交易数据统计分析实战(附源码)
【大数据技术】Spark+Flume+Kafka实现商品实时交易数据统计分析实战(附源码)
69 0