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下面为自己写的应用。



posted on 2012-01-29 15:04  冰羽的世界  阅读(899)  评论(0编辑  收藏  举报