这篇文章主要记录一下CentOS 7.1下安装配置Elasticsearch和Storm。
安装Oracle JDK,这个可以参照我之前写的文章。
安装Elasticsearch
到https://www.elastic.co/downloads/elasticsearch下载Elasticsearch,最新版本是2.3.1。解压之后放到/opt目录下面。命令为:
tar zxvf elasticsearch-2.3.1.tar.gzmv elasticsearch-2.3.1 /opt/
现在,可在elasticsearch的bin目录下运行elasticsearch。我的目录为/opt/elasticsearch-2.3.1/bin;不要使用root用户启动elasticsearch。
./elasticsearch
对于elasticsearch的配置,可以在/opt/elasticsearch-2.3.1/config下修改elasticsearch.yml文件。
接下来安装elasticsearch-head,这个是elasticsearch集群的管理工具。在elasticsearch的目录下运行如下命令即可:
./plugin install mobz/elasticsearch-head
安装Marvel
因为众所周知的原因,在这里只能采用离线安装Marvel等相关插件。
首先,下载相关的安装文件,命令如下:
wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/plugin/license/2.3.1/license-2.3.1.zip --no-check-certificatewget https://download.elastic.co/elasticsearch/release/org/elasticsearch/plugin/marvel-agent/2.3.1/marvel-agent-2.3.1.zip --no-check-certificatewget https://download.elasticsearch.org/elasticsearch/marvel/marvel-2.3.1.tar.gz --no-check-certificate
因为后面要用到kibana,所以先在这里安装kibana,官网上有相关安装教程:https://www.elastic.co/guide/en/kibana/current/setup.html。我还是把kibana安装在/opt目录下面,具体安装步骤就不说了。
./plugin install file:///home/hiccup/Downloads/license-2.3.1.zip./plugin install file:///home/hiccup/Downloads/marvel-agent-2.3.1.zip./kibana plugin --install marvel --url file:///home/hiccup/Downloads/marvel-2.3.1.tar.gz
接下来开始安装Marvel。
运行elasticsearch,再运行kibana,可以再看一下elasticsearch的状态,有一些变化了。
接下来安装Storm,这个比较复杂,容易遇到各种问题,要有耐心。
安装zookeeper
我选择的版本是zookeeper-3.4.8。解压放到/opt目录下:命令如下:
mv zookeeper-3.4.8 /opt/
定位到conf目录下,将zoo_sample.cfg文件更名为zoo.cfg文件,然后进行配置。我在Documents文件夹下,建了一个zookeeper文件夹,再分别建了data和logs文件夹。后面配置要用到。在zoo.cfg配置文件中配置一下dataDir和dataLogDir的位置。我的如下所示:
dataDir=/home/hiccup/Documents/zookeeper/datadataLogDir=/home/hiccup/Documents/zookeeper/logs
运行zookeeper进程的命令如下:./zkServer.sh start
可用客户端连接服务器:./zkCli.sh -server zookeeper:2181
停止zookeeper进程的命令如下:./zkServer.sh stop
安装zeromq
在/home/hiccup/Downloads/zeromq-4.1.4目录下编译安装:
首先运行autogen.sh这个脚本,第一次./configure的时候,会出现如下的问题:
configure: error: Package requirements (libsodium) were not met:No package 'libsodium' foundConsider adjusting the PKG_CONFIG_PATH environment variable if youinstalled software in a non-standard prefix.Alternatively, you may set the environment variables sodium_CFLAGSand sodium_LIBS to avoid the need to call pkg-config.See the pkg-config man page for more details.
在configure之前,要编译安装libsodium,这是一个加密库。可在https://download.libsodium.org/libsodium/releases/下载该库文件,然后进行编译安装。
./autogen.sh./configuremakemake install
安装完成之后,在zeromq目录下执行如下命令,注意其中的参数:
./configure PKG_CONFIG_PATH="/usr/local/lib/pkgconfig"
其中的PKG_CONFIG_PATH中的路径是libsodium的路径。可以用whereis libsodium查看一下。
然后接着
makemake installldconfig
安装JZMQ
下载:
git clone git://github.com/zeromq/jzmq.git
定位到jzmq/jzmq-jni目录下。然后执行如下命令:
./autogen.sh./configure
可能会出现如下错误:
checking for javac... javac
checking for javah... no
configure: error: cannot find javah
解决方法如下:
找到安装的jdk所在目录,我本地jdk所在位置为/opt/jdk1.8.0_77。输入如下几个命令:
export JAVA_HOME=/opt/jdk1.8.0_77export JAVAH=/opt/jdk1.8.0_77/bin/javahexport JAR=/opt/jdk1.8.0_77/bin/jarsource ~/.bashrc
再次运行如下命令即可:
./configuremakemake install
安装lein
将https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein链接下的内容保存为lein文件,将lein文件移到/usr/bin/目录下。
mv lein /usr/bin/leincd /usr/binchmod a+x leinlein (不要在root下运行)
安装Storm
我这里安装的是最新版apache-storm-1.0.0
解压缩之后,移到到/opt目录下面。在/opt/apache-storm-1.0.0/conf下配置storm.yaml文件。因为暂时在单机伪storm集群运行,所有配置如下:(集群配置后续补充上来)
######### These MUST be filled in for a storm configurationstorm.zookeeper.servers:- "localhost"
# - "server2"
#nimbus.host: "localhost"
# nimbus.seeds: ["host1", "host2", "host3"]##storm.local.dir: "/home/smurf/storm"
接下来运行storm的一些命令:
nohup ./storm nimbus & (启动storm控制进程)nohup ./storm ui & (启动storm的ui监控界面,ui界面进程必须与控制进程在同一台机器)nohup ./storm supervisor & (启动storm的工作进程)
通过http://localhost:8080/可以直接访问Storm UI。如下图所示:
干掉nimbus相关进程:
kill `ps aux | egrep '(daemon.nimbus)|(storm.ui.core)' | fgrep -v egrep | awk '{print $2}'`
干掉supervisor上所有storm进程:
kill `ps aux | fgrep storm | fgrep -v 'fgrep' | awk '{print $2}'`
这样,基本是就安装好了。
注意,在这里启动elasticsearch之后,会发现本机可以访问,局域网中的其他机器没法访问。因为是CentOS,所有可以在终端执行iptables –F。然后就可以在局域网中其他机器访问elasticsearch所在的机器了。