hadoop集群搭建之三(Hbase、zookeeper安装)

          前两步实现了Hadoop集群的搭建,但是对于数据的存储要用数据库。一般小规模的网站上,我们会用MySQL,在WEB应用方面 MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。但是MySQL在处理大型的并发性能上远远不行。这里我们会考虑用oracle和Hbase,对于大量的统计业务就使用Oracle,而对于数据挖掘搜索引擎使用Hbase。这里我主要做数据挖掘,机器学习的研究,所以我使用Hbase。

          HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式.

       Hbase是bigtable的开源山寨版本。是建立的hdfs之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统。它介于nosql和RDBMS之间,仅能通过主键(row key)和主键的range来检索数据,仅支持单行事务(可通过hive支持来实现多表join等复杂操作)。主要用来存储非结构化和半结构化的松散数据。与hadoop一样,Hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。

HBase中的表一般有这样的特点:

1 大:一个表可以有上亿行,上百万列

2 面向列:面向列(族)的存储和权限控制,列(族)独立检索。

3 稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏。

安装参考文章:http://hbase.apache.org/book.html#architecture

安装前需要注意Hbase支持的JAVA版本:

HBase Version JDK 6 JDK 7 JDK 8

1.0

Not Supported

yes

Running with JDK 8 will work but is not well tested.

0.98

yes

yes

Running with JDK 8 works but is not well tested. Building with JDK 8 would require removal of thedeprecatedremove() method of thePoolMap class and is under consideration. SeeHBASE-7608 for more information about JDK 8support.

0.96

yes

yes

N/A

0.94

yes

yes

N/A

hadoop支持的情况:

Hadoop version support matrix
  • "S" = supported

  • "X" = not supported

  • "NT" = Not tested

  HBase-0.92.x HBase-0.94.x HBase-0.96.x HBase-0.98.x (Support for Hadoop 1.1+ is deprecated.) HBase-1.0.x (Hadoop 1.x is NOT supported)

Hadoop-0.20.205

S

X

X

X

X

Hadoop-0.22.x

S

X

X

X

X

Hadoop-1.0.x

X

X

X

X

X

Hadoop-1.1.x

NT

S

S

NT

X

Hadoop-0.23.x

X

S

NT

X

X

Hadoop-2.0.x-alpha

X

NT

X

X

X

Hadoop-2.1.0-beta

X

NT

S

X

X

Hadoop-2.2.0

X

NT

S

S

NT

Hadoop-2.3.x

X

NT

S

S

NT

Hadoop-2.4.x

X

NT

S

S

S

Hadoop-2.5.x

X

NT

S

S

S


这里我使用单独的zookeeper。集群的结构如下:

主机名                        IP地址             用途
master.hadoop      192.168.0.1        HMster、zookeeper
slave1.hadoop      192.168.0.2         regionserver、zookeeper
slave2.hadoop      192.168.0.3         regionserver、zookeeper
slave3.hadoop     192.168.0.4          regionserver、zookeeper
这里我们先安装zookeeper。zookeeper的下载地址如下:

http://www.apache.org/dyn/closer.cgi/zookeeper/

解压缩安装包,复制zookeeper到/usr/local。先修改环境变量,参考安装Hadoop的例子:

export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin:$ZOOKEEPER_HOME/bin

然后修改zookeeper的配置文件:

 cd  zookeeper/conf
 cp  zoo_sample.cfg zoo.cfg
 vim zoo.cfg
# 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.
dataDir=/home/hadoop/hadoopdata/zookeeper/zookeeper-data
# the port at which the clients will connect
clientPort=2222
server.1=master.hadoop:2888:3888
server.2=slave1.hadoop:2888:3888
server.3=slave2.hadoop:2888:3888
server.4=slave3.hadoop:2888:2888
然后创建zookeeper-data文件夹:

mkdir /home/hadoop/hadoopdata/zookeeper/zookeeper-data

再把master.hadoop上的zookeeper目录同步到slave1.hadoop、slave2.hadoop、slave3.hadoop。
同样在部署zookeeper的节点上创建/home/hadoop/hadoopdata/zookeeper/zookeeper-data目录,然后在此新建一个myid文件里写入zoo.cfg文件对应的server号码,例如:master.hadoop写1,slave1.hadoop写2,依次类推,配置文件处写了多少就写多少。
下面准备启动zookeeper。(在hadoop已经启动的条件下,确保集群内各个节点上的防火墙关闭)
在每个部署zookeeper节点的机器上执行如下命令
zkServer.sh start

然后每个节点上执行下面命令,查看节点是那种角色:

zkServer.sh status

要停止zookeeper,每个节点上执行下面命令:

zkServer.sh stop

Hbase安装包的下载地址如下,这里建议下载stable版本的安装包,本次安装的时Hbase1.0

http://www.apache.org/dyn/closer.cgi/hbase/

在master上解压缩文件hbase-1.0.0-bin.tar.gz,进入目录conf,编辑文件hbase-env.sh,添加下面内容:

# The java implementation to use.  Java 1.7+ required.
 export JAVA_HOME=/usr/local/jdk1.7.0_21/

# Extra Java CLASSPATH elements.  Optional.
 export HBASE_CLASSPATH=/usr/local/hadoop/etc/hadoop
再编辑文件hbase-site.xml,添加下面内容,这里需要注意的是hbase.rootdir的端口号一定要和hadoop的配置文件core-site.xml中的fs.default.name下的端口号保持一致:

<configuration>
    <property>
          <name>hbase.rootdir</name>
          <value>hdfs://master.hadoop:9000/hbase</value>
     </property>
     <property>
           <name>hbase.cluster.distributed</name>
           <value>true</value>
      </property>
     <property>
           <name>hbase.zookeeper.quorum</name>
           <value>master.hadoop,slave1.hadoop,slave2.hadoop,slave3.hadoop</value>
      </property>
      <property>
             <name>hbase.zookeeper.sission.timeout</name>
             <value>60000</value>
       </property>
       <property>
                <name>hbase.zookeeper.property.clientPort</name>
                <value>2222</value>
       </property>
       <property>
               <name>hbase.master</name>
               <value>master.hadoop:60000</value>
       </property>
       <property>
            <name>hbase.master.info.port</name>
            <value>60010</value>
       </property>
       <property>
             <name>hbase.regionserver.info.port</name>
             <value>60030</value>
       </property>
        <property>
              <name>hbase.master.maxclockskew</name>
              <value>6000000000</value>
         </property>
</configuration>

这里需要注意的是最后一个参数,每次启动Hbase的时候发现,有一个slave没有起来,查看日志得知这个节点的时钟与master节点的时钟相比相差很多,超过阈值,所以这里设置这个参数增大这个阈值。其实也可以试试其他集群同步时间的方法,这里用了比较莽夫的方法~~~~

然后修改/etc/profie文件

export HADOOP_HOME=/usr/local/hadoop
export HBASE_HOME=/usr/local/hbase
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin

至此主节点上的配置全部完成,然后将配置好的hbase文件利用scp拷贝到各个slave的/usr/local/目录下,再修改环境变量即可。然后在主节点上启动Hbase,利用下面的命令:

start-hbase.sh
这里需要注意的一点时启动Hbase之前要确定Hadoop一定启动了,关闭的时候,我们先关闭Hbase再关闭Hadoop。

启动Hbase后,主节点终端键入jps可以看到下面的现象:

15279 ResourceManager
24690 SecondaryNameNode
20497 QuorumPeerMain
14948 NameNode
20587 HMaster
20914 Jps
slave节点上信息如下:

14844 QuorumPeerMain
14949 Jps
20587 HRegionServer
13927 NodeManager1
3801 DataNode

 
 

至此Hbase的安装完成。主节点上键入下面命令进入Hbase的shell:

hbase shell
hbase(main):001:0> 

如果要关闭Hbase使用下面命令:

stop-hbase.sh

至此hadoop、zookeeper、Hbase安装完毕,注意启动的时候顺序是hadoop->zookeeper->hbase,关闭的时候是hbase->zookeeper->hadoop。

你可能感兴趣的:(hadoop集群搭建之三(Hbase、zookeeper安装))