Solr over HDFS调优建议
操作场景
该操作指导MRS集群管理员在使用Solr over HDFS相关功能时,对环境配置进行调优。
前提条件
- 已成功安装HDFS、Solr、Yarn服务,且Manager页面内Solr服务的服务配置参数“INDEX_STORED_ON_HDFS”为“TRUE”。
- 完成使用Solr over HDFS的准备工作,参见Solr over HDFS。
操作步骤
使用Solr over HDFS时,可以选择从以下几个方面进行调优配置:
- 磁盘和网络规划
- 磁盘划分的时候要注意,ZooKeeper单独占用一个磁盘或一个磁盘分区,否则当数据量过大,如果和HDFS共磁盘,频繁的数据访问和配置集访问,会导致ZooKeeper停止响应。
- HDFS采用多块单盘或者多个RAID0分别挂载多个数据目录,Mapreduce任务处理数据量很大时磁盘IO会成为瓶颈。
- 网络组网模式,通常环境为多网卡绑定模式bond0,网络组网模式可根据实际情况而定,不一定要求为多网卡绑定模式。
- 操作系统优化
由于Solr在执行读取HDFS时,会生成很多个临时端口。执行netstat -anp | grep DataNode Port | wc -l命令,结果大于4096时,会出现TIME_WAIT,最终导致任务失败,为避免此种情况,需要如下设置:
登录Manager,选择“集群 > 待操作集群的名称 > 服务 > HDFS > 配置”,查看“dfs.datanode.port”参数,其值即为“DataNode Port”。
- 以root用户登录每个DataNode节点,执行以下命令:
vi /etc/sysctl.conf
添加以下内容:
net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_timestamps = 1
- 保存退出后,执行sysctl -p命令载入配置文件。
- 以root用户登录每个DataNode节点,执行以下命令:
- Solr实例部署
索引存放到HDFS上时,确保所有Solr实例同DataNode部署在相同的节点上。
Solr使用“HDFSDirectoryFactory”索引方式读写HDFS上的索引文件时,从Solr作为HDFS的Client方面的配置进行调优。如果Solr和其他组件要部署在相同的节点上,建议每个节点上只部署一个Solr实例。
- 对Solr提交的MapReduce任务的性能优化
请参考节点配置调优。
参考如下建议,设置Yarn服务的配置参数,然后重启Yarn服务:
- “mapreduce.task.timeout”:1800000(默认值为60000,处理大数据量时可以适当调大)。
- “yarn.nodemanager.resource.cpu-vcores”:24(默认值为8,该值在处理大数量时可设置为当前节点总的CPU个数的1~2倍)。
- “yarn.nodemanager.resource.memory-mb”:该参数需要对每个NodeManager分别配置,查看主机界面每个节点的内存使用率,每个NodeManager该参数配置为:空闲的内存数减去8GB,或者为总内存的75%。
- 调整HDFS缓存提高索引性能
Solr中HDFS相关缓存,通常分配系统上可用内存量的10%~20%。
例如,在有128GB内存的主机上运行HDFS和Solr时,通常分配12.8GB~25.6GB的内存作为HDFS相关缓存。随着索引大小的增加,需要调整此参数以保持最佳性能。该参数可通过修改“solrconfig.xml”文件进行配置。
请按照以下步骤,调整分配的缓存大小:
- 以root用户登录Solr客户端所在节点,进入Solr客户端所在目录,执行以下命令:
source bigdata_env
kinit solr
- 执行以下命令获取配置文件集,并打开“solrconfig.xml”文件:
solrctl confset --get confWithSchema /home/solr/
vi /home/solr/conf/solrconfig.xml
- 以root用户登录Solr客户端所在节点,进入Solr客户端所在目录,执行以下命令: