hadoop hbase 完全分布式
环境:
三台机器,118做为Master,其他机器作为Slaver。
hadoopMaster:192.168.61.118
centos1: 192.168.61.137
centos2:192.168.61.138
0、准备工作
在所有机器上修改机器名和Hosts文件
1)修改主机名:
vi /etc/sysconfig/network
添加一行记录,如
192.168.61.118 hadoopMaster
2)修改hosts文件
vi /etc/hosts
每台机器都设置如下
192.168.61.118 hadoopMaster hadoopMaster
192.168.61.137 centos1
192.168.61.138 centos2
重启所有机器。使配置生效。
1、在所有的机器上安装Java
(jdk 官网下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u30-download-1377139.html
我这里下载64位的: http://download.oracle.com/otn-pub/java/jdk/6u30-b12/jdk-6u30-linux-i586.bin)
用root用户登录,
cd /usr
mkdir java
wget http://download.oracle.com/otn-pub/java/jdk/6u30-b12/jdk-6u30-linux-i586.bin
chmod a+x *.bin
./*.bin
这样,java的安装路径就是在/usr/java/jdk1.6.0_30,然后可以先把第5步做了,确保javac,java,java -version正确。
2、在所有的机器上建立相同的用户
useradd wsy
passwd wsy
输入你要设置的密码
以下操作步骤(3,4)以wsy帐户进行。
3、SSH设置
使用wsy用户登录,cd ~,在所有机器所有机器/home/wsy目录下,
mkdir .ssh
chmod 700 .ssh
在namenode上生成密钥对
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
设置authorized_keys的权限如下:
cd .ssh
chmod 600 authorized_keys
分发keys,
scp authorized_keys centos1:~/.ssh/
scp authorized_keys centos2:~/.ssh/
这时从hadoopMaster向其他机器发起SSH连接,只有第一次登录时需要输入密码,以后则不需要。
请确保完全这一步,才继续往下做!
4、下载配置hadoop http://www.apache.org/dyn/closer.cgi/hadoop/common/
在/home/wsy 目录下下载hadoop-0.20.2.tar.gz和hbase-0.90.4.tar.gz,
解压hadoop
tar -zxvf hadoop-0.20.2.tar.gz
hbase也同样解压。
接下来是真正开始配置hadoop,cd 到 /home/wsy/hadoop-0.20.2/conf,vi hadoop-env.sh
# The java implementation to use. Required.
export JAVA_HOME=/usr/java/jdk1.6.0_30
找到如上代码,修改之。
修改core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hadoopMaster:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/wsy/hadooptmp</value>
</property>
</configuration>
修改hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.datanode.max.xcievers</name>
<value>4096</value>
</property>
</configuration>
dfs.replication表示备份数,可以修改为其他数字。
修改mapred-site.xml
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>60.191.142.184:9001</value>
</property>
</configuration>
修改masters和slaves文件,
master.xml:
192.168.61.118
slaves.xml
192.168.61.137
192.168.61.138
把在namenode上配置好的hadoop,分发到各机器。
scp -r hadoop-0.20.2 centos1:/home/wsy
scp -r hadoop-0.20.2 centos2:/home/wsy
5、设置系统环境变量
用root帐号修改/etc/profile,在文件最后面加入如下环境变量
export JAVA_HOME=/usr/java/jdk1.6.0_30
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export HADOOP_HOME=/home/wsy/hadoop-0.20.2
export PATH=$PATH:$HADOOP_HOME/bin
export HBASE_HOME=/home/wsy/hbase-0.90.4
export PATH=$PATH:$HBASE_HOME/bin
source /etc/profile ,使配置生效。
HBASE那一行,目前还没有配置,提前配置着。
6、启动hadoop
注意点:关闭所有机器上的防火墙(正式环境中需要配置好相应的防火墙),不然会导致datanode起不来。
/etc/init.d/iptables stop
在namenode端格式化分布式文件系统:
hadoop namenode -format
接着在namenode端启动hadoop进程:
start-all.sh
使用jps命令查看。
浏览器中浏览
http://hadoopMaster:50030
http://hadoopMaster:50070
能正确显示。就ok了!
7、配置hbase
修改hbase-0.90.4/conf下hbase-env.sh,在文件尾添加:
export JAVA_HOME=/usr/java/jdk1.6.0_30
export HBASE_MANAGES_ZK=true
export HBASE_HOME=/home/wsy/hbase-0.90.4
export HADOOP_HOME=/home/wsy/hadoop-0.20.2
修改hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoopMaster:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.master</name>
<value>hadoopMaster:60000</value>
</property>
<property>
<name>hbase.zookeeper.property.maxClientCnxns</name>
<value>0</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>192.168.61.118,192.168.61.137,192.168.61.138</value>
</property>
</configuration>
注意quorum只能为奇数。
修改hbase-0.90.4/conf/regionservers
和hadoop的slaves保持一致。
删除hbase-0.90.4/lib目录下的hadoop-core-0.20-append-r1056497.jar,再cp hadoop目录下的hadoop-0.20.2-core.jar到hbase-0.90.4/lib目录。
将hbase-0.90.4分发到其他机器上
scp -r hbase-0.90.4 centos1:/home/wsy
scp -r hbase-0.90.4 centos2:/home/wsy
启动hbase.
start-hbase.sh
使用jps进行查看,在浏览器里输入
http://hadoopMaster:60010/master.jsp
http://hadoopMaster:60030/regionserver.jsp
能打开管理界面就Ok!
8、安装问题
1)时间同步问题
如果几台机器时间不一致,将导致某些节点启动不起来。
1.方案1
在hbase-site.xml添加配置
<property>
<name>hbase.master.maxclockskew</name>
<value>180000</value>
<description>Time difference of regionserver from master</description>
</property>
2.方案2
错误里指出节点机的时间和master的时间差距大于30000ms,就是30秒时无法启动服务。
修改各结点时间,使其误差在30s内
要配置服务器时间同步需要用到ntp,最好能连接外网的时间服务器。内网里面配起来比较麻烦点,所以就手动改了时间,再启动就可以了。
这个比较实用:
yum install ntp
安装后执行
ntpdate cn.pool.ntp.org
即可同步国际时间..
开机后自动同步时间:
vi /etc/rc.d/rc.local中,最下面添加
ntpdate cn.pool.ntp.org
参考资料:http://archive.cnblogs.com/a/2272761/
http://www.cnblogs.com/flyoung2008/archive/2011/11/29/2268302.html
伪分布式,就是缺少一个分发过程,在配置hbase-site.xml是没有hbase.zookeeper.quorum属性
下面记录一些其他的玩意,和本次主题无关。
9、应用架构
在 /usr/local 下面新建文件夹 software
以后把所有与应用相关的安装文件都放在了这里。
software目录下内容可能如下(目前为空):
drwxr-xr-x 7 root root 4096 Jan 12 05:30 apache-solr-3.5.0
-rw-r--r-- 1 root root 6908320 Jan 12 06:15 apache-tomcat-6.0.30.zip
drwxrwxrwx 3 root root 4096 Jan 12 08:14 IKAnlyzer
drwxr-xr-x 9 root root 4096 Jan 12 08:40 tomcat-solr
drwxr-xr-x 9 root root 4096 Jan 12 21:42 tomcat-solr-bak
drwxrwxrwx 9 root root 4096 Jan 17 2011 tomcat-weibo
drwxr-xr-x 9 root root 4096 Jan 12 21:42 tomcat-weibo-bak
apache-solr-3.5.0是下载的文件,tomcat-solr为solr的应用服务。tomcat-weibo下面为自己写的应用。