本篇介绍两种HBase的安装方式:本地安装方式和伪分布式安装方式。

安装的前提条件是已经安装成功了hadoop,并且hadoop的版本号要和hbase的版本号相匹配。

我将要安装的hbase是hbase-0.94.11版本号,须要的hadoop是hadoop-1.2.1版本号。

hbase下载地址:http://mirror.bit.edu.cn/apache/hbase/hbase-0.94.11/

将下载的hbase-0.94.11解压到对应的文件夹,如/usr/hbase-0.94.11

将hbase-0.90.4重命名为hbase



mv hbase-0.94.11 hbase



首先须要将hbase下的bin文件夹加入到系统的path中,改动/etc/profile,加入例如以下的内容:

export  PATH=$PATH:/usr/hbase/bin

 

1.单机安装  改动hbase下的conf文件夹下的配置文件hbase-env.sh

首先,改动hbase-env.sh中的例如以下属性:



export JAVA_HOME=/usr/java/jdk1.6

export HBASE_MANAGES_ZK=true  //此配置信息,设置由hbase自己管理zookeeper,不须要单独的zookeeper。





2.伪分布式安装  改动hbase-0.90.4下的conf文件夹下的配置文件hbase-env.sh和hbase-site.xml

首先,改动hbase-env.sh中的例如以下属性:



export JAVA_HOME=/usr/java/jdk1.6 

export HBASE_CLASSPATH=/usr/hadoop/conf 

export HBASE_MANAGES_ZK=true



 


然后,改动hbase-site.xml文件



chat2DB 连接Hbase_chat2DB 连接Hbase



<configuration>
    <property>
      <name>hbase.rootdir</name>
     <value>hdfs://192.168.70.130:9000/hbase</value> >//此属性要依据自己的hadoop的配置信息进行对应的改动
    </property>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>

</configuration>



chat2DB 连接Hbase_chat2DB 连接Hbase






完毕以上操作,就能够正常启动Hbase了,启动顺序:先启动Hadoop——>再启动Hbase,关闭顺序:先关闭Hbase——>再关闭Hadoop。


 

首先启动hadoop,(假设hadoop已经正常启动能够不再启动,直接查看进程是否正确,假设进程不对,那么必须又一次调试hadoop确保hadoop正常执行后再启动hbase),这里还要让HDFS处于非安全模式:bin/hadoop dfsadmin -safemode leave



start-all.sh    //启动hadoop
jps                //查看进程



 



chat2DB 连接Hbase_chat2DB 连接Hbase



2564 SecondaryNameNode 
2391 DataNode
2808 TaskTracker 
2645 JobTracker 
4581 Jps 
2198 NameNode



chat2DB 连接Hbase_chat2DB 连接Hbase



 

启动hbase:



start-hbase.sh



 

jps 查看:



chat2DB 连接Hbase_chat2DB 连接Hbase



2564 SecondaryNameNode 
2391 DataNode 
4767 HQuorumPeer 
2808 TaskTracker 
2645 JobTracker 
5118 Jps 
4998 HRegionServer 
4821 HMaster 
2198 NameNode



chat2DB 连接Hbase_chat2DB 连接Hbase



能够看到,HBase的相关进程已经启动了



hbase shell



     

进入shell模式



HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.94.12, r1524863, Fri Sep 20 00:25:45 UTC 2013

hbase(main):001:0>



通过:http://localhost:60010/master-status ,能够訪问HBase状态








  停止hbase 假设在操作Hbase的过程中错误发生,能够通过hbase安装主文件夹下的logs子文件夹查看错误原因


先停止hbase



stop-hbase.sh



再停止hadoop



stop-all.sh



 

 

 

错误解决方法:

1.报错例如以下: localhost:  Exception in thread "main" org.apache.hadoop.ipc.RPC$VersionMismatch: Protocol  org.apache.hadoop.hdfs.protocol.ClientProtocol version mismatch. (client = 42,  server =  41) 所以假设遇到以上错误,就通过替换jar包解决。(一般使用新版本号的hadoop 和 hbase不会出现这样的错误)

替换Hbase中的jar包 须要用{HADOOP_HOME}下的hadoop-1.2.1-core.jar  替换掉{HBASE_HOME}/lib文件夹下的hadoop-1.2.1-append-r1056497.jar  。假设不替换jar文件Hbase启动时会由于hadoop和Hbase的client协议不一致而导致HMaster启动异常。

2.错误例如以下:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/........../lib/slf4j-log4j12-1.5.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/........../slf4j-log4j12-1.5.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.

:hadoop中lib里slf4j-api-1.4.3.jar、slf4j-log4j12-1.4.3.jar和hbase中lib里相应的这两个jar包版本号不一致导致冲突,把hbase里的替换成hadoop里的就能够了

3.有时候安装hbase全然分布式时会出现奇怪的问题,先去查下集群中各个server时间,是否相差太多,最好一致


NTP:集群的时钟要保证主要的一致。稍有不一致是能够容忍的,可是非常大的不一致会 造成奇怪的行为。 执行 NTP 或者其它什么东西来同步你的时间.

假设你查询的时候或者是遇到奇怪的故障,能够检查一下系统时间是否正确!

 设置集群各个节点时钟:date -s “2012-02-13 14:00:00”

4.2014-10-09 14:11:53,824 WARN org.apache.hadoop.hbase.master.AssignmentManager: Failed assignment of -ROOT-,,0.70236052 to 127.0.0.1,60020,1412820297393, trying to assign elsewhere instead; retry=0
org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed setting up proxy interface org.apache.hadoop.hbase.ipc.HRegionInterface to /127.0.0.1:60020 after attempts=1
at org.apache.hadoop.hbase.ipc.HBaseRPC.waitForProxy(HBaseRPC.java:242)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getHRegionConnection(HConnectionManager.java:1278)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getHRegionConnection(HConnectionManager.java:1235)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getHRegionConnection(HConnectionManager.java:1222)
at org.apache.hadoop.hbase.master.ServerManager.getServerConnection(ServerManager.java:496)
at org.apache.hadoop.hbase.master.ServerManager.sendRegionOpen(ServerManager.java:429)
at org.apache.hadoop.hbase.master.AssignmentManager.assign(AssignmentManager.java:1592)
at org.apache.hadoop.hbase.master.AssignmentManager.assign(AssignmentManager.java:1329)
at org.apache.hadoop.hbase.master.AssignCallable.call(AssignCallable.java:44)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.net.ConnectException: Connection refused


解决例如以下:

/etc/hosts里边配置出的问题

127.0.1.1 后边是相应的主机名

将127.0.1.1改为127.0.0.1,问题解决





转载于:


本篇介绍两种HBase的安装方式:本地安装方式和伪分布式安装方式。

安装的前提条件是已经安装成功了hadoop,并且hadoop的版本号要和hbase的版本号相匹配。

我将要安装的hbase是hbase-0.94.11版本号,须要的hadoop是hadoop-1.2.1版本号。

hbase下载地址:http://mirror.bit.edu.cn/apache/hbase/hbase-0.94.11/

将下载的hbase-0.94.11解压到对应的文件夹,如/usr/hbase-0.94.11

将hbase-0.90.4重命名为hbase



mv hbase-0.94.11 hbase



首先须要将hbase下的bin文件夹加入到系统的path中,改动/etc/profile,加入例如以下的内容:

export  PATH=$PATH:/usr/hbase/bin

 

1.单机安装  改动hbase下的conf文件夹下的配置文件hbase-env.sh

首先,改动hbase-env.sh中的例如以下属性:



export JAVA_HOME=/usr/java/jdk1.6

export HBASE_MANAGES_ZK=true  //此配置信息,设置由hbase自己管理zookeeper,不须要单独的zookeeper。





2.伪分布式安装  改动hbase-0.90.4下的conf文件夹下的配置文件hbase-env.sh和hbase-site.xml

首先,改动hbase-env.sh中的例如以下属性:



export JAVA_HOME=/usr/java/jdk1.6 

export HBASE_CLASSPATH=/usr/hadoop/conf 

export HBASE_MANAGES_ZK=true



 


然后,改动hbase-site.xml文件



chat2DB 连接Hbase_chat2DB 连接Hbase



<configuration>
    <property>
      <name>hbase.rootdir</name>
     <value>hdfs://192.168.70.130:9000/hbase</value> >//此属性要依据自己的hadoop的配置信息进行对应的改动
    </property>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>

</configuration>



chat2DB 连接Hbase_chat2DB 连接Hbase






完毕以上操作,就能够正常启动Hbase了,启动顺序:先启动Hadoop——>再启动Hbase,关闭顺序:先关闭Hbase——>再关闭Hadoop。


 

首先启动hadoop,(假设hadoop已经正常启动能够不再启动,直接查看进程是否正确,假设进程不对,那么必须又一次调试hadoop确保hadoop正常执行后再启动hbase),这里还要让HDFS处于非安全模式:bin/hadoop dfsadmin -safemode leave



start-all.sh    //启动hadoop
jps                //查看进程



 



chat2DB 连接Hbase_chat2DB 连接Hbase



2564 SecondaryNameNode 
2391 DataNode
2808 TaskTracker 
2645 JobTracker 
4581 Jps 
2198 NameNode



chat2DB 连接Hbase_chat2DB 连接Hbase



 

启动hbase:



start-hbase.sh



 

jps 查看:



chat2DB 连接Hbase_chat2DB 连接Hbase



2564 SecondaryNameNode 
2391 DataNode 
4767 HQuorumPeer 
2808 TaskTracker 
2645 JobTracker 
5118 Jps 
4998 HRegionServer 
4821 HMaster 
2198 NameNode



chat2DB 连接Hbase_chat2DB 连接Hbase



能够看到,HBase的相关进程已经启动了



hbase shell



     

进入shell模式



HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.94.12, r1524863, Fri Sep 20 00:25:45 UTC 2013

hbase(main):001:0>



通过:http://localhost:60010/master-status ,能够訪问HBase状态








  停止hbase 假设在操作Hbase的过程中错误发生,能够通过hbase安装主文件夹下的logs子文件夹查看错误原因


先停止hbase



stop-hbase.sh



再停止hadoop



stop-all.sh



 

 

 

错误解决方法:

1.报错例如以下: localhost:  Exception in thread "main" org.apache.hadoop.ipc.RPC$VersionMismatch: Protocol  org.apache.hadoop.hdfs.protocol.ClientProtocol version mismatch. (client = 42,  server =  41) 所以假设遇到以上错误,就通过替换jar包解决。(一般使用新版本号的hadoop 和 hbase不会出现这样的错误)

替换Hbase中的jar包 须要用{HADOOP_HOME}下的hadoop-1.2.1-core.jar  替换掉{HBASE_HOME}/lib文件夹下的hadoop-1.2.1-append-r1056497.jar  。假设不替换jar文件Hbase启动时会由于hadoop和Hbase的client协议不一致而导致HMaster启动异常。

2.错误例如以下:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/........../lib/slf4j-log4j12-1.5.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/........../slf4j-log4j12-1.5.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.

:hadoop中lib里slf4j-api-1.4.3.jar、slf4j-log4j12-1.4.3.jar和hbase中lib里相应的这两个jar包版本号不一致导致冲突,把hbase里的替换成hadoop里的就能够了

3.有时候安装hbase全然分布式时会出现奇怪的问题,先去查下集群中各个server时间,是否相差太多,最好一致


NTP:集群的时钟要保证主要的一致。稍有不一致是能够容忍的,可是非常大的不一致会 造成奇怪的行为。 执行 NTP 或者其它什么东西来同步你的时间.

假设你查询的时候或者是遇到奇怪的故障,能够检查一下系统时间是否正确!

 设置集群各个节点时钟:date -s “2012-02-13 14:00:00”

4.2014-10-09 14:11:53,824 WARN org.apache.hadoop.hbase.master.AssignmentManager: Failed assignment of -ROOT-,,0.70236052 to 127.0.0.1,60020,1412820297393, trying to assign elsewhere instead; retry=0
org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed setting up proxy interface org.apache.hadoop.hbase.ipc.HRegionInterface to /127.0.0.1:60020 after attempts=1
at org.apache.hadoop.hbase.ipc.HBaseRPC.waitForProxy(HBaseRPC.java:242)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getHRegionConnection(HConnectionManager.java:1278)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getHRegionConnection(HConnectionManager.java:1235)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getHRegionConnection(HConnectionManager.java:1222)
at org.apache.hadoop.hbase.master.ServerManager.getServerConnection(ServerManager.java:496)
at org.apache.hadoop.hbase.master.ServerManager.sendRegionOpen(ServerManager.java:429)
at org.apache.hadoop.hbase.master.AssignmentManager.assign(AssignmentManager.java:1592)
at org.apache.hadoop.hbase.master.AssignmentManager.assign(AssignmentManager.java:1329)
at org.apache.hadoop.hbase.master.AssignCallable.call(AssignCallable.java:44)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.net.ConnectException: Connection refused


解决例如以下:

/etc/hosts里边配置出的问题

127.0.1.1 后边是相应的主机名

将127.0.1.1改为127.0.0.1,问题解决