1准备环境
1.1所需软件包
a、CentOS-6.5-i386-LiveDVD.iso 32位centos系统
b、jdk-7u71-linux-i586.rpm 32位jdk-Linux rpm文件
c、hadoop-2.2.0.tar.gz hadoop安装包
d、zookeeper-3.4.6.tar.gz zookeeper安装包
1.2运行环境
a、VMware9.0及以上版本虚拟机工具
b、创建三个虚拟机节点
c、网卡模式设置为桥接模式
1.3节点信息
Hadoop1 192.168.120.191 namenode,resourcemanagerHMaster, HRegionServer
Hadoop2 192.168.120.192 namenode,resourcemanagerHRegionServer
Hadoop3 192.168.120.193 datanode,nodemanagerHRegionServer
2具体配置
2.1系统配置
安装三个Centos6.5 32位系统作为三个节点
2.1.1配置网络
#vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="static"
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
IPADDR=192.168.120.191
NETMASK=255.255.255.0
GATEWAY=192.168.120.1
DNS1=210.31.249.20
2.1.2修改hostname和hosts文件
#vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=hadoop1
#vim /etc/hosts
192.168.120.191hadoop1
192.168.120.192hadoop2
192.168.120.193hadoop3
2.1.3关闭iptables和selinux
#serviceiptables stop
#chkconfigiptables off
#vim/etc/selinux/config
...
SELINUX=disabled
...
将另外两台虚机做上述同样的操作,只需将相应的IP地址和hostname做相应的修改即可,然后将三个节点都重启,执行命令 #init 0 或 #reboot
2.1.4 SSH无密钥登录
三个节点都执行
#ssh-keygen -t dsa -P ‘’ -f ~/.ssh/id_dsa
#cp /root/.ssh/id_dsa.pub/root/.ssh/authorized_keys
分别将三个节点/root/.ssh/id_dsa.pub中的内容都拷贝到各个节点的authorized_keys文件中
以上是hadoop1的authorized_keys中的内容,hadoop2和hadoop3节点也须保持一致,保存退出后,检验是否生效:
Hadoop1节点:
#ssh hadoop2 //第一次登陆会有提示,输入yes
#ssh hadoop3
Hadoop2节点:
Hadoop3节点:
2.1.5 JDK的安装
到http://www.oracle.com/technetwork/java/javase/downloads/index.html链接中下载jdk-7u71-linux-i586.rpm文件,将下载的文件拷贝到三个节点的/root目录下,安装rpm文件执行命令:
#rpm -ivhjdk-7u71-linux-i586.rpm //默认安装路径(/usr/java),其中latest是软链接文件
2.1.6 更新源
到http://mirrors.163.com/.help/centos.html链接中下载Centos6的repo源文件CentOS6-Base-163.repo,将其拷贝到/root目录下(三个节点均执行)
#rm -rf /etc/yum.repos.d/*
#cp /root/CentOS6-Base-163.repo/etc/yum.repos.d/
#yum makecache
2.2HBase集群部署
2.2.1 hadoop版本对HBase支持情况
S = 支持并且测试,
X = 不支持,
NT = 应该可以,但是没有测试.
本环境hadoop版本为2.4.0采用的Hbase版本为0.98.9
2.2.2下载HBase
地址为:http://mirror.bit.edu.cn/apache/hbase/stable/
2.2.3安装Hbase
将hbase-0.98.9-hadoop2-bin.tar.gz安装包拷贝到/opt/hbase目录下,安装hbase
#tar -zxvf hbase-0.98.9-hadoop2-bin.tar.gz
mv hbase-0.98.9-hadoop2-bin hbase
修改环境变量
#vim /etc/profile
export HBASE_HOME=/opt/hbase/hbase
#source /etc/profile
2.2.4 配置hbase-site.xml
将/root/ /hadoop/etc/hadoop下hdfs-site.xml拷贝到/opt/hbase/hbase/conf
cp /root/ hadoop/etc/hadoop/hdfs-site.xml /opt/hbase/hbase/conf/
修改/ opt/hbase/hbase/conf/下hbase-site.xml
vi hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>mycluster</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.master</name>
<value>hadoop1:60000</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop1,hadoop2,hadoop3</value>
</property>
</configuration>
注:这里的hbase.rootdir与/root/ hadoop/etc/hadoop/hdfs-site.xml下hdfs-site.xml的
dfs.nameservices保持一致
hbase.rootdir指定Hbase数据存储目录
hbase.cluster.distributed 指定是否是完全分布式模式,单机模式和伪分布式模式需要将该值设为false
hbase.master指定Master的位置
hbase.zookeeper.quorum指定zk的集群,多台机器以逗号分隔
2.2.5配置hbase-env.sh
vi hbase-env.sh
#JDK的安装目录
export JAVA_HOME=/usr/java/latest
#hadoop的配置目录
export HBASE_CLASSPATH=/root/hadoop/etc/hadoop
#true:表示zookeeper交给hbase管理,启动hbase时,会自动启动hbase-site.xml里的hbase.zookeeper.quorum属性中的所有zookeeper实例 #false:表示启动hbase时,要手动启动所有zookeeper实例
export HBASE_MANAGES_ZK=true
2.2.6配置regionservers
vi regionservers
hadoop1
hadoop2
hadoop3
2.2.7替换lib下jar
.为避免hadoop和hbase之间版本冲突;替换hbase安装目录下的lib中使用的hadoop2.2的jar包替换成2.4.0的。
为了简便在这里可以写一个脚本copyJar.sh(位于/opt/hbase/hbase/lib下):
#! /bin/bash
find -name"hadoop*jar" | sed ‘s/2.2.0/2.4.0/g‘ | sed ‘s/.\///g‘ > f.log
rm ./hadoop*jar
cat ./f.log |while read Line
do
find /root/hadoop/share/hadoop -name"$Line" | xargs -i cp {} ./
done
rm ./f.log
进入/opt/hbase/hbase/lib下执行copyJar.sh即可把lib中使用的hadoop2.2的jar包,替换成2.4.0的
#cd /opt/hbase/hbase/lib
#./copyJar.sh
2.2.8同步数据
Hadoop1节点中执行:
复制hadoop1节点环境变量到hadoop2节点
#scp /etc/profile hadoop2:/etc/
复制hadoop1节点环境变量到hadoop3节点
# scp /etc/profile hadoop3:/etc/
将HBase同步到其他节点:
#scp –r /opt/hbase/hbase hadoop2:/ opt/hbase/
#scp –r /opt/hbase/hbase hadoop3:/ opt/hbase/
Hadoop2节点执行:
#source /etc/profile
Hadoop3节点:
#source /etc/profile
2.2.9启动集群
启动HBase集群命令:start-hbase.sh
关闭HBase集群命令:stop-hbase.sh
分别在三个节点上执行jps命令,在hadoop1上启动的有:HMaster, HRegionServer;在hadoop2上启动的有HRegionServer;在hadoop3上启动的有HRegionServer。
至此HBase完全分布式安装完毕!
3测试HBase
3.1启动集群
start-hbase.sh
3.2进入hbase shell
bin/hbase shell
3.3创建HBase表
create ‘test‘, ‘cf‘ //表名为test,只有一个列族cf
3.4插入数据
put ‘test‘,‘row1‘, ‘cf:a‘, ‘value1‘
put ‘test‘,‘row2‘, ‘cf:b‘, ‘value2‘
put ‘test‘,‘row3‘, ‘cf:c‘, ‘value3‘
3.5扫描表
scan ‘test‘
3.6获取数据
get ‘test‘, ‘row1‘
3.7Drop表
disable ‘test‘
drop ‘test‘
3.8退出
exit