基于集群的Hadoop HBase安装与配置

  本文假设已经安装好一个三个节点的Hadoop集群,NameNode为namenode, 而DataNode为datanode1,datanode2。关于Hadoop集群的配置可以查看博客 集群分布式 Hadoop安装详细步骤,这里不再说明。

  Hbase要求每台机器必须能用主机名(而不是IP)来相互访问,因此在安装之前需要配置每个主机的/etc/host文件。本系统三个节点主机名和IP对应如下:
192.168.1.19  namenode
192.168.1.7  datanode1
192.168.1.20   datanode2

  另外,HBase集群要求每个节点的时间必须同步。这主要是因为HBase需要使用系统时间来产生时间戳。如果系统时间不同步的话,那么每个节点产生的时间戳差异会比较大,这就违背了时间戳设计的初衷。HBase对于节点间的时间扭曲的容忍度在秒级,如果Hbase发现节点间的时间差异已经有几十秒会拒绝启动。节点间同步的方法是建立NTP服务器,然后让所有的节点都和NTP服务器同步。

  HBase集群依赖一个Zookeeper集群来进行同步和协作,其中至少需要配置一个Zookeeper节点。部署的Zookeeper节点越多,可靠性越高。Zookeeper节点的个数最好为奇数个。下面我们先在namenode,datanode1,datanode2上部署一个3个节点的Zookeeper集群。
  
  在Apache Zookeeper发布页面(http://www.apache.org/dyn/closer.cgi/zookeeper)下载一个Zookeeper稳定版,然后在namenode解压:

$ tar xzf zookeeper-3.4.5.tar.gz

在zookeeper-3.4.5/conf文件夹下将文件zoo_sample.cfg改为zoo.cfg

$ cp zoo_sample.cfg zoo.cfg

修改zoo.cfg文件,主要是添加最后面的server主机名,其余基本不需要改动。

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/var/zookeeper
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

server.1=namenode:2888:3888
server.2=datanode1:2888:3888
server.3=datanode2:2888:3888                           

  用scp将namenode节点的zookeeper-3.4.5文件夹拷贝到datanode1,datanode2,然后在每个节点的/var目录下新建一个文件夹zookeeper,在该目录下新建名为myid的文件。根据zoo.cfg中的配置,在各自的myid文件中写入各自的编号,如:namenode的myid文件中写入1,datanode1的myid文件中写入2,datanode2写入3.

在所有节点的zookeeper-3.4.5文件夹下启动Zookeeper:

$ ./zkServer.sh start

  下面开始部署HBase,在Apache HBase发布页面(http://www.apache.org/dyn/closer.cgi/hbase)下载一个HBase稳定版本,解压到namenode:

$ tar xzf hbase-0.94.7.tar.gz
$ cd hbase-0.94.7

在hbase-0.94.7/conf/hbase-site.xml文件(这个是HBase的主配置文件)中配置如下:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
        <property>
                <name>hbase.rootdir</name>
                <value>hdfs://namenode:9000/hbase</value>
        </property>
         <property>
                <name>hbase.cluster.distributed</name>
                <value>true</value>
        </property>
        <property>
                <name>dfs.support.append</name>
                <value>true</value>
        </property>
        <property>
                <name>hbase.zookeeper.quorum</name>
                <value>namenode,datanode1,datanode2</value>
        </property>
        <property>
                <name>hbase.zookeeper.property.dataDir</name>
                <value>/var/zookeeper</value>
        </property>
        <property>
                <name>hbase.zookeeper.property.clientPort</name>
                <value>2181</value>
        </property>

修改hbase-env.sh(在/hbase-0.94.7/conf目录, 这个是Hbase的启动配置脚本,用于设置环境变量、内存设置等),增加内容如下:

export JAVA_HOME=/usr/java/jdk1.6.0_45/jre
export HADOOP_HOME=/home/hadoop/hadoop-1.2.1
export HBASE_HOME=/home/hadoop/hbase-0.94.7

在hbase-0.94.7/conf/regionservers中添加节点,内容如下:

namenode
datanode1
datanode2

  在hadoop-1.0.3/lib文件下的hadoop-core-1.0.3.jar拷贝到hbase-0.94.7/lib下,(这个根据自己的hadoop版本拷贝),替换掉hadoop-core-xxx.jar文件。

最后,把配置好的hbase-0.94.7用scp发送到其他节点。
在namenode节点执行bin/start-hbase.sh脚本启动Hbase集群。

$ ./bin/start-hbase.sh

下一步就可以编程了。

内容来源:《深入理解大数据,大数据处理与编程实践》黄宜华教授主编

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值