最近试着搭建Hadoop集群和Storm集群,先在虚拟机上做个实验。
Storm的安装步骤见Github上提供的安装文档: https://github.com/nathanmarz/storm/wiki/Setting-up-a-Storm-cluster
各系统版本:
VMwareWorkstation 9.0.0
ubuntu-12.04.1-desktop-i386
hadoop-1.0.4
zookeeper-3.4.3.
zeromq-2.1.4
jdk1.6.0_27
Storm-0.7.0
Python 2.6.6
一、利用VM搭建起3个节点的平台
分别命名:nimbus,supervisor1,supervisor2 (nimbus为主节点,在hadoop,zookeeper,storm的配置中都要用到)
在VM中每个节点的Network Adaper都设置为NAT,自动为其分配IP
安装Ubuntu 12.04时,用户名都设置为hadoop
P.S. 事实上,应该尽量将可以安装的东西安装完成后再对虚拟机进行复制,以减少工作量。
二、配置Host(更改两个文件hostname,hosts)
$sudo gedit /etc/hostname,每个虚拟机节点分别改为nimbus,supervisor1,supervisor2
$ifconfig分别获取每个虚拟机的ip信息
nimbus:192.168.128.144
supervisor1:192.168.128.146
supervisor2:192.168.128.145
$sudo gedit /etc/hosts
文件内容中加入
192.168.128.144 nimbus
192.168.128.146 supervisor1
192.168.128.145 supervisor2
三、实现SSH免密码登录
安装ssh,$sudoapt-get install ssh
设置免密码登录,以下是从nimbus到supervisor1,2的无密码登录
$ssh-keygen –t dsa,在.ssh文件夹下创建两个文件id_dsa及id_dsa.pub
把公钥追加到授权的key里面去
$cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys
将公钥复制到其他节点上
在namenode中 cd到.ssh文件夹下输入以下命令:
scp id_dsa.pub supervisor1:~/.ssh/
在supervisor1上执行:cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
supervisor2同上
查看是否成功,ssh supervisor1
四、安装JDK1.6
解压到/usr/lib/java/jdk1.6.0_27
$sudo gedit/etc/environment
将/usr/lib/java/jdk1.6.0_27加入到PATH当中,用:与之前的隔开
CLASSPATH=..:/usr/lib/java/jdk1.6.0_27/lib
JAVA_HOME=/usr/lib/java/jdk1.6.0_27
五、安装hadoop平台
分别修改以下配置文件
conf/core-site.xml:
<Configuration>
<Property>
<name>fs.default.name</name>
<value>hdfs://nimbus:9000</value>
</Property>
<Property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/tmp</value>
</Property>
</Configuration>
conf/hdfs-site.xml:
<Configuration>
<Property>
<name>dfs.replication</name>
<value>1</value>
</Property>
</Configuration>
conf/mapred-site.xml:
<Configuration>
<Property>
<name>mapred.job.tracker</name>
<value> nimbus:9001</value>
</Property>
</Configuration>
conf/masters:
nimbus
conf/slaves:
supervisor1
supervisor2
启动Hadoop
在hadoop目录下
$bin/hadoop namenode –format
$bin/start-all.sh
运行一个hadoop自带的example输入命令:
$bin/hadoop jar /home/hadoop/hadoop-1.0.4/hadoop-1.0.4-examples.jar pi 4 2
$bin/stop-all.sh
六、安装zookeeper平台(zookeeper-3.4.3.)
将zk目录中conf/zoo-example.cfg重命名为zoo.cfg,加入以下内容
tickTime=2000
dataDir=/home/hadoop/zookeeper/
clientPort=2181
initLimit=5
syncLimit=2
server.1=nimbus:2888:3888
server.2=supervisor1:2888:3888
server.3=supervisor2:2888:3888
在每个节点分别启动
$~/zookeeper-3.4.3/bin/zkServer.sh start
$~/zookeeper-3.4.3/bin/zkServer.sh status
$~/zookeeper-3.4.3/bin/zkServer.sh stop
七、安装zeromq-2.1.4,官方文档说高版本会出问题
装的时候会提示很多东西没装,没关系,一个个的sudo apt-get install就OK
Libtool, autoconf, automake, uuid-dev
注意:机器是正常的联网状态,不能通过代理上网,否则apt-get会出错
安装很简单,进入目录
$./configure
$make
$sudo make install
$sudo ldconfig
八、安装JZMQ
在jzmq目录下
./autogen.sh
./configure
make
sudo make install
九、安装Python 2.6.6
进入Python-2.6.6目录
./configure
make
sudo make install
十、安装Storm-0.7.0
修改目录下conf/storm.yaml,写进去的内容会覆盖storm.jar里default.yaml的那部分。
storm.zookeeper.servers:
- "nimbus"
- "supervisor1"
- "supervisor1"
storm.zookeeper.port如果之前是2181,这里就不用写,否则要改成=***
storm.local.dir:"/mnt/storm"
需要自行创建,命令如下
$sudo mkdir /mnt/storm
$cd /mnt/storm
$chmod 777 .
nimbus.host: "nimbus"
nimbus 节点:$bin/stormnimbus
supervisor 节点:$bin/stormsupervisor
$bin/storm ui
也可以通过浏览器http://{nimbus host}:8080.
向Nimbus提交jar,执行。
bin/storm jar /tmp/storm-start.jar storm.starter.WordCountTopology
此时会报错,由于执行bin/storm jar *** 命令时,没有载入正确的$STORM_HOME/conf,所以再次修改bin/storm:
1 #!/usr/bin/python
2
3 import os
4 import sys
5 import random
6 import subprocess as sub
7
8 CONF_DIR =os.path.expanduser("~/.storm")
9 STORM_DIR ="/".join(os.path.abspath( __file__ ).split("/")[:-2])
10 CONF_DIR = STORM_DIR +"/conf" #确定目录conf文件目录,这样在执行bin/storm jar的时候可以将正确的conf目录加入classpath中。