下载hbase-0.94.12.tar.gz并解压
一、本地模式
编辑conf/hbase-site.xml,添加hbase.rootdir, 不是hbase.root.dir
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>hbase.rootdir</name> <value>file:////data/hbase</value> </property> </configuration>
然后启动
$ ./bin/start-hbase.sh
starting Master, logging to logs/hbase-user-master-example.org.out
就可以使用hbase了。
二、集群模式
前提是hadoop集群已经安装成功。
我这里有三台机器:master,slave1,slave2 1、首先要把master的id_rsa.pub拷贝到salve1和slave2的authorized_keys中,这样master可以免密码和两台salve进行通信。
2、设置hosts,把三台机器的ip互相配置好
3、三台机器的时间要差不多,否则会出现奇怪的问题(我就遇到一台regionserver一直起不来,看日志才发现是机器的时间不对)。设置集群各个节点时钟:date -s “2012-02-13 14:00:00”。
master上修改hbase的配置文件
4、修改conf/hbase-env.sh中的JAVA_HOME,把JAVA_HOME改成机器上的JAVA_HOME路径,不设置会有问题。
export HBASE_MANAGES_ZK=true:默认是true, 即hbase托管zookeep。一个分布式运行的Hbase依赖一个zookeeper集群,所有的节点和客户端都必须能够访问zookeeper,默认的情况下Hbase会管理一个zookeep集群,这个集群会随着Hbase的启动而启动。
当为false时就是让Hbase使用一个独立的Zookeep集群。
5、修改conf/hbase-site.xml
<property> <name>hbase.rootdir</name> <value>hdfs://test01:9000/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.zookeeper.property.clientPort</name> <value>2222</value> <description>Property fromZooKeeper's config zoo.cfg. The port at which the clients willconnect. </description> </property> <property> <name>hbase.zookeeper.quorum</name> <value>test02,test03</value> <description>Comma separated listof servers in the ZooKeeper Quorum. For example,"host1.mydomain.com,host2.mydomain.com,host3.mydomain.com". By default this is set to localhost forlocal and pseudo-distributed modes of operation. For a fully-distributedsetup, this should be set to a full list of ZooKeeper quorum servers. IfHBASE_MANAGES_ZK is set in hbase-env.sh this is the list of servers which we willstart/stop ZooKeeper on. </description> </property>
<property> <name>hbase.zookeeper.property.dataDir</name> <value>/data/hbase/zookeeper</value> <description>Property fromZooKeeper's config zoo.cfg. The directory where the snapshot isstored. </description> </property>
参数说明:
hbase.rootdir: regionserver的共享目录,用于存储数据。即HDFS的NameNode的位置
hbase.cluster.distributed:Hbase的运行模式。false是单机模式(默认),true是分布式模式。若为false,Hbase和Zookeeper会运行在同一个JVM里面。
配置zookeeper:
hbase.zookeeper.property.clientPort:ZooKeeper的zoo.conf中的配置。 客户端连接的端口。
hbase.zookeeper.quorum:Zookeeper集群的地址列表,用逗号分割。默认是localhost,是给伪分布式用的。要修改才能在完全分布式的情况下使用。如果在hbase-env.sh设置了HBASE_MANAGES_ZK,这些ZooKeeper节点就会和Hbase一起启动。
注意:运行一个zookeeper也是可以的,但是在生产环境中,你最好部署3,5,7个节点。部署的越多,可靠性就越高,当然只能部署奇数个,偶数个是不可以的。你需要给每个zookeeper 1G左右的内存,如果可能的话,最好有独立的磁盘。 (独立磁盘可以确保zookeeper是高性能的。).如果你的集群负载很重,不要把Zookeeper和RegionServer运行在同一台机器上面。就像DataNodes 和 TaskTrackers一样
hbase.zookeeper.property.dataDir:ZooKeeper的zoo.conf中的配置。 快照的存储位置。默认值是 /tmp (重启会被删除),最好还是修改下。
6、配置conf/regionservers,在里面加入作为regionserver的机器名称,我这里是slave1和slave2(一行1个)。列在这里的server会随着集群的启动而启动,集群的停止而停止
7、替换hbase lib中的hadoop_core.jar, 需要所用的hadoop集群对应的hadoop core。要替换成所用hadoop集群对应的hadoop版本的core。否则会报:
java.io.IOException: Call to test01/192.168.2.169:9000 failed on local exception: java.io.EOFException at org.apache.hadoop.ipc.Client.wrapException(Client.java:775) at org.apache.hadoop.ipc.Client.call(Client.java:743) at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:220) at com.sun.proxy.$Proxy9.getProtocolVersion(Unknown Source) at org.apache.hadoop.ipc.RPC.getProxy(RPC.java:359) at org.apache.hadoop.hdfs.DFSClient.createRPCNamenode(DFSClient.java:106) at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:207) at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:170) at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:82) at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:1378) at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:66) at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:1390) at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:196) at org.apache.hadoop.fs.Path.getFileSystem(Path.java:175) at org.apache.hadoop.hbase.util.FSUtils.getRootDir(FSUtils.java:666) at org.apache.hadoop.hbase.master.MasterFileSystem.<init>(MasterFileSystem.java:112) at org.apache.hadoop.hbase.master.HMaster.finishInitialization(HMaster.java:571) at org.apache.hadoop.hbase.master.HMaster.run(HMaster.java:430) at java.lang.Thread.run(Thread.java:662) Caused by: java.io.EOFException at java.io.DataInputStream.readInt(DataInputStream.java:375) at org.apache.hadoop.ipc.Client$Connection.receiveResponse(Client.java:501) at org.apache.hadoop.ipc.Client$Connection.run(Client.java:446)
8、将master上的hbase文件夹拷贝到slave1和slave2
9、运行master上的./bin/start-hbase.sh来运行集群,成功如下所示:
slave1: starting zookeeper, logging to /root/software/hbase-0.94.12/bin/../logs/hbase-root-zookeeper-slave1.out slave2: starting zookeeper, logging to /root/software/hbase-0.94.12/bin/../logs/hbase-root-zookeeper-slave2.out starting master, logging to /root/software/hbase-0.94.12/logs/hbase-root-master-master.out Listening for transport dt_socket at address: 10444 slave2: starting regionserver, logging to /root/software/hbase-0.94.12/bin/../logs/hbase-root-regionserver-slave2.out slave1: starting regionserver, logging to /root/software/hbase-0.94.12/bin/../logs/hbase-root-regionserver-slave1.out
其中Master中的jps:
23673 HMaster 1486 Bootstrap 24220 Jps
两台slave中的jps都是:
2658 TaskTracker 1713 HQuorumPeer 2905 Jps 1794 HRegionServer 2571 DataNode
查看管理页面: http://master:60010
PBUF版本不同的异常,导致hmaster启动不了。
java.lang.IllegalArgumentException: PBUF at org.apache.hadoop.hbase.zookeeper.ZKTableReadOnly.getTableState(ZKTableReadOnly.java:152) at org.apache.hadoop.hbase.zookeeper.ZKTable.getTableState(ZKTable.java:109) at org.apache.hadoop.hbase.zookeeper.ZKTable.populateTableStates(ZKTable.java:94) at org.apache.hadoop.hbase.zookeeper.ZKTable.<init>(ZKTable.java:80) at org.apache.hadoop.hbase.master.AssignmentManager.<init>(AssignmentManager.java:223) at org.apache.hadoop.hbase.master.HMaster.initializeZKBasedSystemTrackers(HMaster.java:503) at org.apache.hadoop.hbase.master.HMaster.finishInitialization(HMaster.java:587) at org.apache.hadoop.hbase.master.HMaster.run(HMaster.java:430) at java.lang.Thread.run(Thread.java:662) 2014-01-10 17:37:17,580 INFO org.apache.hadoop.hbase.master.HMaster: Aborting
原因是hbase-site.xml中配置的zookeeper信息:hbase.zookeeper.property.dataDir。 之前是其他版本的hbase造成PBUF版本不一致。解决方法是删除master和regionserver上的hbase.zookeeper.property.dataDir对应的内容。
0.96版的安装
0.96版和0.94安装方法一样,但需要hadoop-2.x。
hbase 0.96依赖的lib中全是hadoop-2.1.0-beta的jar包,所以使用Hadoop-2.1.0-beta就行。
我一开始使用的是hadoop-2.2.0,然后HMaster老是无法启动,异常是:
Unhandled exception. Starting shutdown. org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.ipc.RpcServerException): Unknown out of band call #-2147483647
网上一搜是因为hbase中依赖的全是hadoop-2.1.0-beta的jar包,所以我把里面的jar包全换成hadoop-2.2.0的,但hadoop-client.2.2.0.jar包找不到(不用它时报找不到org.apache.hadoop.util.PlatformNam),网上说是要自己编译源码,好麻烦,所以还是使用haooop-2.1.0。
使用hadoop-2.1.0后HMaster还是启不起来,再看异常
org.apache.zookeeper.KeeperException$DataInconsistencyException: KeeperErrorCode = DataInconsistency at org.apache.hadoop.hbase.zookeeper.ZKUtil.convert(ZKUtil.java:1851) at org.apache.hadoop.hbase.zookeeper.ZKTableReadOnly.getTableState(ZKTableReadOnly.java:164) at org.apache.hadoop.hbase.zookeeper.ZKTable.populateTableStates(ZKTable.java:83) at org.apache.hadoop.hbase.zookeeper.ZKTable.<init>(ZKTable.java:69) at org.apache.hadoop.hbase.master.AssignmentManager.<init>(AssignmentManager.java:281) at org.apache.hadoop.hbase.master.HMaster.initializeZKBasedSystemTrackers(HMaster.java:677) at org.apache.hadoop.hbase.master.HMaster.finishInitialization(HMaster.java:809) at org.apache.hadoop.hbase.master.HMaster.run(HMaster.java:603) at java.lang.Thread.run(Thread.java:662) Caused by: org.apache.hadoop.hbase.exceptions.DeserializationException: Missing pb magic PBUF prefix at org.apache.hadoop.hbase.protobuf.ProtobufUtil.expectPBMagicPrefix(ProtobufUtil.java:210) at org.apache.hadoop.hbase.zookeeper.ZKTableReadOnly.getTableState(ZKTableReadOnly.java:154) ... 7 more
原来是以前装的是hbase-0.94.12的zookeeper中有数据(在zookeeper机器上),0.96和0.94的数据结构不一样,导致序列化/反序列化失败,删除旧数据后,重跑hbase,一切搞定。
相关推荐
指导手册06:HBase安装部署 hbase配置文件
根据提供的文件信息,以下是对HBase安装部署过程的详细知识点解析: ### HBase安装部署步骤 #### 一、上传并解压HBase安装包 - **上传安装包**:首先需要将HBase的安装包上传至每台服务器,并在服务器上进行解压...
【大数据实验Hbase安装部署和使用javaapi调用】 在这个实验中,我们将深入理解HBase在Hadoop生态系统中的角色,并掌握如何在Ubuntu 19.04操作系统上安装、配置和使用HBase,同时利用Java API进行编程。实验中使用的...
Hbase安装部署及优化知识点详细解析: 一、Hbase概述 Hbase是建立在Apache HDFS上的NoSQL分布式数据库系统。它具备高可靠性、高性能、列存储、可伸缩、实时读写等特点。Hbase支持海量数据的存储和处理,并且能够...
### 基于集群的HBase安装和配置 #### Zookeeper简介 Zookeeper作为Hadoop生态中的关键组件,主要用于提供高可用性和分布式协调服务。它能够有效地管理Hadoop集群中的各种资源和服务,例如Hadoop NameNode管理和...
Hbase学习总结,很不错的资源,对你绝对有帮助
在Windows环境下部署HBase,需要先安装JDK并设置环境变量,然后下载HBase的安装包和Hadoop Common,因为HBase依赖于Hadoop的部分组件。接着,我们需要配置HBase的环境变量,如`JAVA_HOME`,并修改`hbase-env.cmd`和`...
### HBase 安装与使用知识点详解 #### 概述 HBase 是一款构建于 Hadoop 之上的分布式、可扩展的大规模数据存储系统。它提供了类似 Google BigTable 的功能特性,非常适合处理海量数据和高并发读写需求的应用场景。...
总结来说,HBase集群部署涉及到多个层面的知识点,包括对HBase结构的理解、虚拟机环境的配置、JDK的安装和配置、SSH无密码登录的设置,以及HBase的配置。这些知识点不仅对于理解HBase的工作原理至关重要,而且对于...
HBase单机版部署需要安装JDK、下载HBase、解压HBase、设置环境变量、修改/etc/profile文件、配置hbase-env.sh文件、配置hbase-site.xml文件、启动HBase和访问HBase。通过这些步骤,我们可以成功部署HBase单机版。
3.集群能正常运行的条件是集群可节点宕机数应保证有超过集群机器总数一半的机器在运行,因此从经济和实用性来说,集群的节点一般是奇数个,本文部署4台机器,其容灾能力与部署3台机器一致,即只能宕机1台
**HBase的安装部署**: 1. **依赖安装**:确保已安装Hadoop并正常运行。 2. **下载HBase**:获取与Hadoop版本兼容的HBase版本。 3. **配置HBase**:修改`hbase-site.xml`,设置HBase的Zookeeper地址、HDFS路径等。 4...
首先,安装HBase的前提条件是已经部署了HDFS(Hadoop分布式文件系统)和Zookeeper。Zookeeper是一个分布式协调服务,对于HBase的正常运行至关重要,因为它负责集群中的节点管理和配置同步。在确保这两个服务已经安装...
【Hadoop与HBase部署文档】 Hadoop是一个开源的分布式计算框架,主要由Apache基金会维护。它被设计成能够处理和存储大量数据,是大数据处理领域的重要工具。Hadoop的核心组件包括HDFS(Hadoop Distributed File ...
注意:zookeeper3.4.13和hbase2.3.5都是采用docker-compose方式部署 原文链接:https://blog.csdn.net/m0_37814112/article/details/120915194 说明:使用外部zookeeper3.4.13之hbase2.3.5一键部署工具,支持部署、...
本文档详细记录了 Hadoop 和 HBase 的部署过程,涵盖了系统环境描述、软件安装前环境配置、Hadoop 和 HBase 的安装和配置、hosts 文件设定等关键步骤。 1. 系统环境描述 在部署 Hadoop 和 HBase 之前,需要了解...
分布式数据库 分布式数据库 分布式数据库 是数据库技术与网络相结合的产物,分布式系统建立在 是数据库技术与网络相结合的产物,分布式系统建立在 是数据库技术与网络相结合的产物,分布式系统建立在 是数据库技术与...