分享

不用Cloudera Manager安装Cloudera Search

desehawk 发表于 2015-3-5 17:48:10 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 32267
问题导读

1.什么是Cloudera Search?
2.如何启动Solr?
3.如何验证solr是否成功?







Cloudera Search 用来在 hadoop 基础上建立索引和全文检索,本文主要记录如何安装 CLoudera Search 的过程,其中也包括如何安装和启动 Zookeeper、Solr、MapReduce等工具和服务。

Cloudera Search介绍
Cloudera Search 核心部件包括 Hadoop 和 Solr,后者建立在 Lucene 之上;而 Hadoop 也正是在06年正式成为 Lucene 的一个子项目而发展起来的。

通过 Tika, Cloudera Search 支持大量的被广泛使用的文件格式;除此之外,Cloudera Search 还支持很多其他在Hadoop应用中常用的数据,譬如 Avro, SequenceFile, 日志文件等。

用来建立索引和全文检索的数据可以是来自于 HDFS,譬如日志文件,Hive 或者 HBase 的表等等(通过集成 NGData 的 Lily 项目,对 HBasae 的支持工作也在进行中)。或者通过结合使用 Flume 采集于外部数据源,通过一个新支持的 Flume Sink 直接写到索引库里;同时还可以充分利用 Flume 来对要建立索引的数据进行各种预处理,譬如转换,提取创建元数据等。

建立的索引存储于 HDFS。这给搜索带来了易于扩展,冗余和容错的好处。此外,我们还可以运行 MapReduce 来对我们所需要检索的数据进行索引,提供给 Solr。


环境

操作系统:CentOs6.5
Hadoop:cdh5.3.0


安装 Hadoop集群

其中也包括了一个三节点的 ZooKeeper 集群。该集群包括三个节点:

  1.   192.168.56.121        cdh1     NameNode、Hive、ResourceManager、HBase
  2.     192.168.56.122        cdh2     DataNode、SSNameNode、NodeManager、HBase
  3.     192.168.56.123        cdh3     DataNode、HBase、NodeManager
复制代码


安装 ZooKeeper
Zookeeper 的安装过程,请参考 使用yum安装CDH Hadoop集群


安装 Solr


Zookeeper 启动之后,需要安装 Solr,关于 Solr 的安装,可以参考 Apache SolrCloud安装。

在三个节点上安装 solr-server:

  1. $ sudo yum install solr-server solr solr-doc -y
复制代码


安装 Spark Indexer:
  1. $ sudo yum install solr-crunch
复制代码
安装 MapReduce Tools:
  1. $ sudo yum install solr-mapreduce
复制代码
安装 Lily HBase Indexer:
  1. $ sudo yum install hbase-solr-indexer hbase-solr-doc
复制代码
注意:Lily HBase Indexer和 cdh5 工作的时候,你需要在运行 MapReduce 任务之前运行下面命令:

  1. export HADOOP_CLASSPATH=<Path to hbase-protocol-**.jar>
复制代码


配置 Solr

修改 solr 配置文件 /etc/default/solr 中 ZooKeeper 连接地址:

  1. SOLR_ZK_ENSEMBLE=cdh1:2181,cdh2:2181,cdh3:2181/solr
复制代码


修改 solr 配置文件 /etc/default/solr 中 HDFS 连接地址:
  1. SOLR_HDFS_HOME=hdfs://cdh1:8020/solr
复制代码


设置 HDFS 配置文件目录:
  1. SOLR_HDFS_CONFIG=/etc/hadoop/conf
复制代码
如果你配置了 Kerberos,则在 kerberos 服务器上为每个安装 solr 的节点先生成 solr 的凭证:
  1. kadmin:  addprinc -randkey solr/cdh1@JAVACHEN.COM
  2. kadmin:  xst -norandkey -k solr.keytab solr/cdh1
  3. kadmin:  addprinc -randkey solr/cdh2@JAVACHEN.COM
  4. kadmin:  xst -norandkey -k solr.keytab solr/cdh2
  5. kadmin:  addprinc -randkey solr/cdh3@JAVACHEN.COM
  6. kadmin:  xst -norandkey -k solr.keytab solr/cdh3
复制代码


然后,将 solr.keytab 拷贝到 /etc/solr/conf:
  1. $ sudo mv solr.keytab /etc/solr/conf/
  2. $ sudo chown solr:hadoop /etc/solr/conf/solr.keytab
  3. $ sudo chmod 400 /etc/solr/conf/solr.keytab
复制代码
最后,修改每个安装了 solr 节点的 /etc/default/solr,例如在 cdh1节点上修改为:

  1. SOLR_KERBEROS_ENABLED=true
  2. SOLR_KERBEROS_KEYTAB=/etc/solr/conf/solr.keytab
  3. SOLR_KERBEROS_PRINCIPAL=solr/cdh1@JAVACHEN.COM
复制代码
在 HDFS 中创建 /solr 目录:
  1. $ sudo -u hdfs hadoop fs -mkdir /solr
  2. $ sudo -u hdfs hadoop fs -chown solr /solr
复制代码
如果开启了 kerberos,则先获取 hdfs 服务的凭证在运行:
  1. $ kinit -k -t /etc/hadoop/conf/hdfs.keytab hdfs/cdh1@JAVACHEN.com
  2. $ hadoop fs -mkdir /solr
  3. $ hadoop fs -chown solr /solr
复制代码
集成 Sentry,取消 /etc/default/solr 下面注释:
  1. # SOLR_AUTHORIZATION_SENTRY_SITE=/etc/solr/conf/sentry-site.xml
  2. # SOLR_AUTHORIZATION_SUPERUSER=solr
复制代码


集成 Hue,取消 /etc/default/solr 下面注释:

  1. # SOLR_SECURITY_ALLOWED_PROXYUSERS=hue
  2. # SOLR_SECURITY_PROXYUSER_hue_HOSTS=*
  3. # SOLR_SECURITY_PROXYUSER_hue_GROUPS=*
复制代码


初始化 ZooKeeper Namespace:
  1. $ solrctl init
复制代码
注意:你可以添加 --force 参数强制清空 ZooKeeper 数据,清空之前,请先停止 ZooKeeper 集群。

启动 Solr

在每一个安装了 Solr server 的节点上运行:
  1. $ sudo service solr-server restart
复制代码
通过下面命令查看 Solr 是否启动成功:
  1. $ jps -lm
  2. 28053 org.apache.hadoop.mapreduce.v2.hs.JobHistoryServer
  3. 31710 org.apache.zookeeper.server.quorum.QuorumPeerMain /etc/zookeeper/conf/zoo.cfg
  4. 14479 org.apache.catalina.startup.Bootstrap start
  5. 29994 org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode
  6. 29739 org.apache.hadoop.yarn.server.resourcemanager.ResourceManager
  7. 27298 org.apache.catalina.startup.Bootstrap httpfs start
  8. 30123 org.apache.hadoop.hdfs.server.namenode.NameNode
  9. 21761 sun.tools.jps.Jps -lm
复制代码
上面用到了 solrctl 命令,该命令用来管理 SolrCloud 的部署和配置,其语法如下:
  1. solrctl [options] command [command-arg] [command [command-arg]] ...
复制代码



可选参数有:

--solr:指定 SolrCloud 的 web API,如果在 SolrCloud 集群之外的节点运行命令,就需要指定该参数。
--zk:指定 zk 集群地址。
--help:打印帮助信息。
--quiet:静默模式运行。
command 命令有:

init [--force]:初始化配置。
instancedir:维护实体目录。可选的参数有:
--generate path
--create name path
--update name path
--get name path
--delete name
--list
collection:维护 collections。可选的参数有:
--create name -s <numShards> [-c <collection.configName>] [-r <replicationFactor>] [-m <maxShardsPerNode>] [-n <createNodeSet>]]
--delete name: Deletes a collection.
--reload name: Reloads a collection.
--stat name: Outputs SolrCloud specific run-time information for a collection.
`--list: Lists all collections registered in SolrCloud.
--deletedocs name: Purges all indexed documents from a collection.
core:维护 cores。可选的参数有:
--create name [-p name=value]...]
--reload name: Reloads a core.
--unload name: Unloads a core.
--status name: Prints status of a core.
cluster:维护集群配置信息。可选的参数有:
--get-solrxml file
--put-solrxml file


创建 Solr 运行时配置

在一个节点上(例如 cdh1)生成配置文件:
  1. $ solrctl instancedir --generate $HOME/solr_configs
复制代码
注意:你可以在 /var/lib/solr 创建目录,维护配置文件。

执行完之后,你可以修改 $HOME/solr_configs/conf 目录下的配置文件,其目录下文件如下。
  1. $ ll ~/solr_configs/conf/
  2. total 348
  3. -rw-r--r-- 1 root root  1092 Jun  2 23:10 admin-extra.html
  4. -rw-r--r-- 1 root root   953 Jun  2 23:10 admin-extra.menu-bottom.html
  5. -rw-r--r-- 1 root root   951 Jun  2 23:10 admin-extra.menu-top.html
  6. -rw-r--r-- 1 root root  4041 Jun  2 23:10 currency.xml
  7. -rw-r--r-- 1 root root  1386 Jun  2 23:10 elevate.xml
  8. drwxr-xr-x 2 root root  4096 Jun  2 23:10 lang
  9. -rw-r--r-- 1 root root 82327 Jun  2 23:10 mapping-FoldToASCII.txt
  10. -rw-r--r-- 1 root root  3114 Jun  2 23:10 mapping-ISOLatin1Accent.txt
  11. -rw-r--r-- 1 root root   894 Jun  2 23:10 protwords.txt
  12. -rw-r--r-- 1 root root 59635 Jun  2 23:10 schema.xml
  13. -rw-r--r-- 1 root root   921 Jun  2 23:10 scripts.conf
  14. -rw-r--r-- 1 root root 72219 Jun  2 23:10 solrconfig.xml
  15. -rw-r--r-- 1 root root 73608 Jun  2 23:10 solrconfig.xml.secure
  16. -rw-r--r-- 1 root root    16 Jun  2 23:10 spellings.txt
  17. -rw-r--r-- 1 root root   795 Jun  2 23:10 stopwords.txt
  18. -rw-r--r-- 1 root root  1148 Jun  2 23:10 synonyms.txt
  19. -rw-r--r-- 1 root root  1469 Jun  2 23:10 update-script.js
  20. drwxr-xr-x 2 root root  4096 Jun  2 23:10 velocity
  21. drwxr-xr-x 2 root root  4096 Jun  2 23:10 xslt
复制代码
创建 collection1 实例并将配置文件上传到 zookeeper:
  1. $ solrctl instancedir --create collection1 $HOME/solr_configs
复制代码
你可以通过下面命令查看上传的 instance:
  1. $ solrctl instancedir --list
复制代码
上传到 zookeeper 之后,其他节点就可以从上面下载配置文件。

接下来,还是在 cdh1 节点上创建 collection,因为我的 SolrCloud 集群有三个节点,故这里分片数设为3,并设置副本为1,如果有更多节点,可以将副本设置为更大的一个数:

  1. $ solrctl collection --create collection1 -s 3 -r 1
复制代码
运行成功之后,你可以通过 http://cdh1:8983/solr/#/~cloud、http://cdh2:8983/solr/#/~cloud、http://cdh3:8983/solr/#/~cloud 查看创建的分片。从网页上可以看到,已经自动创建了三个分片,并且三个分片分布在3个节点之上。

配置 hbase-solr-indexer

1)开启 HBase replication

Lily HBase Indexer 的实现依赖于 HBase的replication,故需要开启复制。将 /usr/share/doc/hbase-solr-doc*/demo/hbase-site.xml文件的内容拷贝到 hbase-site.xml,注意:删除掉 replication.replicationsource.implementation 参数配置。

2)将 hbase-solr-indexer 服务指向 hbase 集群

修改 /etc/hbase-solr/conf/hbase-indexer-site.xml,添加如下参数,其值和 hbase-site.xml 中的 hbase.zookeeper.quorum 属性值保持一致(注意添加上端口):

  1. <property>
  2.    <name>hbaseindexer.zookeeper.connectstring</name>
  3.    <value>cdh1:2181,cdh2:2181,cdh3:2181</value>
  4. </property>
复制代码


最后再重启服务:
  1. $ sudo service hbase-solr-indexer restart
复制代码









没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条