在EMR中实现 Running Solr on S3

前言:在工作中遇到的问题,由于网上几乎没有相关文章,所以记录下来。感谢 博客[1] 中的作者

@tcahill提供了宝贵经验。

环境: emr-6.3.0  solr-8.6.0 

根据 [1] 中的描述得知 Solr 自带了 hadoop 相关 jar 包。由于 EMR 中的 hadoop jar 包是针对 AWS 优化过的,所以我们使用 EMR 自带的 hadoop jar 。

(以下操作均在 master 节点执行)


一、 将 Solr 自带的 hadoop 相关 jar 包删除;

rm -rf  ~./solr-8.6.0/server/solr-webapp/webapp/WEB-INF/lib/hadoop*

二、 将 EMR 中 /usr/lib/hadoop/ 下的 hadoop-annotations-3.2.1-amzn-3.jar  hadoop-auth-3.2.1-amzn-3.jar  hadoop-aws-3.2.1-amzn-3.jar  hadoop-common-3.2.1-amzn-3.jar  拷贝到 Solr lib 下;
 

cp /usr/lib/hadoop/hadoop-annotations-3.2.1-amzn-3.jar  ~./solr-8.6.0/server/solr-webapp/webapp/WEB-INF/lib/
cp /usr/lib/hadoop/hadoop-auth-3.2.1-amzn-3.jar  ~./solr-8.6.0/server/solr-webapp/webapp/WEB-INF/lib/
cp /usr/lib/hadoop/hadoop-aws-3.2.1-amzn-3.jar  ~./solr-8.6.0/server/solr-webapp/webapp/WEB-INF/lib/
cp /usr/lib/hadoop/hadoop-common-3.2.1-amzn-3.jar  ~./solr-8.6.0/server/solr-webapp/webapp/WEB-INF/lib/

三、 将 EMR 中 /usr/lib/hadoop-hdfs/ 下的 hadoop-hdfs-3.2.1-amzn-3.jar hadoop-hdfs-client-3.2.1-amzn-3.jar拷贝到 Solr lib 下;;

cp /usr/lib/hadoop-hdfs/hadoop-hdfs-3.2.1-amzn-3.jar  ~./solr-8.6.0/server/solr-webapp/webapp/WEB-INF/lib/                (可有可无)
cp /usr/lib/hadoop-hdfs/hadoop-hdfs-client-3.2.1-amzn-3.jar  ~./solr-8.6.0/server/solr-webapp/webapp/WEB-INF/lib/   (必须)

四、 根据 [2] 中的指引"S3A depends upon two JARs, alongside hadoop-common and its dependencies.",hadoop 使用 S3 还需要 aws-java-sdk-bundle ,所以同样我们将这个包也拷贝到 Solr lib 下;

 cp /usr/share/aws/aws-java-sdk/aws-java-sdk-bundle-1.11.977.jar  ~./solr-8.6.0/server/solr-webapp/webapp/WEB-INF/lib/

五、 EMR 中对 HDFS 的实现做了新的优化,即 EMRFS [3] 。所以我们需要将 EMRFS 相关 jar 也放在 Solr lib 下;

cp /usr/share/aws/emr/emrfs/lib/*  ~./solr-8.6.0/server/solr-webapp/webapp/WEB-INF/lib/
rm ~./solr-8.6.0/server/solr-webapp/webapp/WEB-INF/lib/slf4j-api-1.7.21.jar

(请注意这里不可以将 emrfs/lib 内的 slf4j-api-1.7.21.jar 拷过去,会发生 jar 包冲突,导致 Solr Server 无法正常启动)

六、 至此,Solr 所需的 jar 包环境已经准备完毕。根据 [2] 中的指引“S3 Buckets are hosted in different “regions”, the default being “US-East”. The S3A client talks to this region by default, issuing HTTP requests to the server s3.amazonaws.com  .” 这句话代表在默认情况下 S3A 的请求会发往 Global Region,所以我们需要为 S3A 指定 Region;
参考 [4] 中的指引,为 core-site.xml 增加两条配置(这里以指定北京区为例):
{"classification":"core-site", "properties":{"fs.s3a.endpoint.region":"cn-north-1", "fs.s3a.endpoint":"s3.cn-north-1.amazonaws.com.cn   "}

在执行完第六步后请增加如下操作:

[hadoop@ip-10-0-13-246 solr-8.6.0]$ sudo mkdir /etc/solr 
[hadoop@ip-10-0-13-246 solr-8.6.0]$ sudo mkdir /etc/solr/conf 
[hadoop@ip-10-0-13-246 solr-8.6.0]$ sudo cp /etc/hadoop/conf/* /etc/solr/conf/ 
[hadoop@ip-10-0-13-246 solr-8.6.0]$ sudo cp /usr/share/aws/emr/emrfs/conf/* /etc/solr/conf/

这里增加了 emrfs 在 EMR 上默认的配置文件。这些配置文件对 EMRFS 做了优化。 您可以使用 -Dsolr.hdfs.confdir=/etc/solr/conf 来指定让 solr 使用这里的配置。

七、  至此,Running Solr on S3 的全部修改已完成。


以下是根据 Solr 文档中的入门练习 [5] 验证是否可以 Work :

1.  启动 on s3 的 solr cloud ;

bin/solr start -e cloud  -Dsolr.directoryFactory=HdfsDirectoryFactory -Dsolr.lock.type=hdfs -Dsolr.hdfs.home=s3a://YourBucketName/YourSolrHomeDirName -Dsolr.hdfs.confdir=/etc/solr/conf

2.  根据 [5] 中的指引创建名为 techproducts 的 collection ;

3.  加载官方示例数据;

/home/hadoop/solr-8.6.0/bin/post -c techproducts example/exampledocs/*

4.  访问 http://host:8983/solr   查看数据,成功查询到示例数据。查询结果如图:  

5. 查看 S3 Solr 工作目录:                                                                                                                                               

[1]  https://community.sw.siemens.com/s/question/0D54O000061xk9aSAA/running-solr-on-s3  
[2]  https://hadoop.apache.org/docs/stable/hadoop-aws/tools/hadoop-aws/index.html  
[3]  https://docs.amazonaws.cn/emr/latest/ReleaseGuide/emr-fs.html  
[4]  https://docs.amazonaws.cn/emr/latest/ReleaseGuide/emr-configure-apps-running-cluster.html#emr-configure-apps-running-cluster-console
[5]  https://solr.apache.org/guide/8_6/solr-tutorial.html#exercise-1  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QiaoLiar

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值