yudar

 

最近公司业务数据量越来越大,以前的基于消息队列的日志系统越来越难以满足目前的业务量,表现为消息积压,日志延迟,日志存储日期过短,所以,我们开始着手要重新设计这块,业界已经有了比较成熟的流程,即基于流式处理,采用 flume 收集日志,发送到 kafka 队列做缓冲,storm 分布式实时框架进行消费处理,短期数据落地到 hbase、mongo中,长期数据进入 hadoop 中存储。 接下来打算将这其间所遇到的问题、学习到的知识记录整理下,作为备忘,作为分享,带给需要的人。

淘宝开源了许多产品组件,其中包括这鼎鼎有名的 jstorm ,也就是我们采用的分布式实时处理框架,至于为什么,请看《为什么选择Jstorm》。这篇文章只介绍 Jstorm 整个集群的搭建过程,并提供一键安装部署脚本,方便其它使用的人员(搭建环境是一件头疼的事情,费时、费力)。

这是 Jstorm 的介绍PPT:(slideshare PPT 分享服务在大陆是被墙的,不能科学上网?查看使用shadowsocks服务享受自由网络学习方法)

 

Jstorm 官方搭建使用过程如连接https://github.com/alibaba/jstorm/wiki/%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%85 ,我整理了三个脚本:安装 Jstorm 集群安装 jstorm_web_ui 监控页面启动zookeeper、Jstorm集群进行测试

一、整体环境说明

三个脚本是测试环境搭建使用的,三台机器:192.168.9.92192.168.9.93192.168.9.94
如果在其他机器上面使用,必须修改脚本中相应有ip的地方 ,脚本在文章最后提供,在 zip 文件夹里面有完整的一份,使用的时候直接使用zip文件夹即可。

二、搭建过程

将 zip 包解压到测试环境 /home/work 目录下,解压后,执行目录中的三个脚本,顺序执行,即可安装完毕。

2.1 搭建脚本如下

2.1.1 Jstorm 集群安装过程 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#!/bin/bash

# author: xirong
# date : 2015-02-06

####
# 此脚本为在测试环境192.168.9.92~94 三台机器上面搭建 jstorm 集群的脚本,免去一步步的安装的过程,如果换其他环境,把文中的ip修改即可
# 详细步骤请参考 https://github.com/alibaba/jstorm/wiki/%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%85
#
# 安装目录
# jstorm : /opt/jstorm-0.9.6.2, zookeeper : /opt/zookeeper-3.4.6 , java : /opt/jdk1.7.0_75
#
# 注意:执行此shell脚本时候,最好使用 source jstorm_install.sh 或者 . jstorm_install.sh 强制在当前shell进程中执行,否则当前shell脚本获取不到>修改的这些环境变量值
# 遇到sudo的命令时需要输入密码
# 脚本执行前提:
# 存在用户work,即存在/home/work/目录 ;
# 全新机器无Java
# 机器已经存在 Python 2.6,一般centos自带
#
# 执行完脚本后需要手动操作的步骤:
# 1. zookeeper 集群需要每台机器标记自己身份,vim $dataDir/myid 将机器的标识填入,比如第一天机器即为1,二台为2,以此类推
####

# 在64系统里执行32位程序如果出现/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory

# 解决错误Failed to set locale, defaulting to C
echo "export LC_ALL=en_US.UTF-8" >> /etc/profile
source /etc/profile


yum install glibc.i686
echo \'finish pre install glibc.i686\'

echo \'start unzip all files\'
#tar -zxf jstorm.tar.gz
unzip jstorm.zip
echo \'finish unzip all files and start java setup\'
cd jstorm_tar/
tar -zxf jdk-7u75-linux-i586.tar_0.gz -C /opt/
echo \'finish unzpip jdk-7u75-linux-i586.tar_0.gz && start java envirenment settting \'

# 配置java环境
echo \'## java configuration \' >> /etc/profile
echo \'JAVA_HOME=/opt/jdk1.7.0_75\' >> /etc/profile
echo \'export PATH=$JAVA_HOME/bin:$PATH\' >> /etc/profile
echo \'export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar\' >> /etc/profile
echo \'export JAVA_HOME\' >> /etc/profile

echo \'finish java envirement setting etc/profile\'
# 使配置生效
. /etc/profile
which java

## 搭建zookeeper集群
echo \'start setup zookeeper ……………………\'
tar -zxf zookeeper-3.4.6.tar.gz -C /opt/
echo \'# zookeeper configuration \' >> /etc/profile
echo \'export ZOOKEEPER_HOME=/opt/zookeeper-3.4.6\' >> /etc/profile
echo \'export PATH=$ZOOKEEPER_HOME/bin:$PATH\' >> /etc/profile
echo \'export CLASSPATH=$ZOOKEEPER_HOME/lib\' >> /etc/profile

mkdir -p /home/work/jstorm/zookeeper_data
#cd /opt/zookeeper-3.4.6/conf/
cp -f /opt/zookeeper-3.4.6/conf/zoo_sample.cfg /opt/zookeeper-3.4.6/conf/zoo_sample.cfg.bak
mv /opt/zookeeper-3.4.6/conf/zoo_sample.cfg /opt/zookeeper-3.4.6/conf/zoo.cfg
# 修改zookeeper数据文件的位置
sed -i.bak \'s/dataDir=\/tmp\/zookeeper/dataDir=\/home\/work\/jstorm\/zookeeper_data\//g\' /opt/zookeeper-3.4.6/conf/zoo.cfg
# 集群配置的时候需要加入三台机器的配置 ,这个就是你在搭建你自己的三台机器的ip
echo \'# zookeeper cluster mathines\' >> /opt/zookeeper-3.4.6/conf/zoo.cfg
echo \'server.1=192.168.9.92:2888:3888\' >> /opt/zookeeper-3.4.6/conf/zoo.cfg
echo \'server.2=192.168.9.93:2888:3888\' >> /opt/zookeeper-3.4.6/conf/zoo.cfg
echo \'server.3=192.168.9.94:2888:3888\' >> /opt/zookeeper-3.4.6/conf/zoo.cfg

# dataDir目录下添加标识身份 myid(这个需要手动做)
# vim $dataDir/myid 将机器的标识填入,比如第一天机器即为1,二台为2

# 使配置生效
. /etc/profile
echo \'finish setup zookeeper && start setup zeromq……\'

# 安装zeromq
# 解决错误 cannot link with -luuid, install uuid-dev
yum install uuid-devel && yum install libuuid-devel

tar -zxf zeromq-2.1.7.tar.gz
cd zeromq-2.1.7
./configure && make && sudo make install && sudo ldconfig
cd ..

echo \'finish setup zeromq && start setup jzmq ……\'

# 安装jzmq
tar -zxf jzmq.tar && cd jzmq && ./autogen.sh && ./configure && make && sudo make install
cd ..

# 安装 jstrom
echo \'finish setup jzmq && start setup jstorm ……\'
mkdir /home/work/jstorm/jstorm_data
unzip jstorm-0.9.6.2.zip -d /opt/

echo \'export JSTORM_HOME=/opt/jstorm-0.9.6.2\' >> ~/.bashrc
echo \'export PATH=$PATH:$JSTORM_HOME/bin\' >> ~/.bashrc

echo \'after configure bashrc for jstorm\'
source ~/.bashrc

# 配置$JSTORM_HOME/conf/storm.yaml
echo \'start configuration storm.yaml ……\'
sed -i \'/localhost"$/\'d /opt/jstorm-0.9.6.2/conf/storm.yaml
sed -i /\'storm.zookeeper.servers:/a\ - "192.168.9.94"\' /opt/jstorm-0.9.6.2/conf/storm.yaml
sed -i /\'storm.zookeeper.servers:/a\ - "192.168.9.93"\' /opt/jstorm-

分类:

技术点:

相关文章: