HBase安装过程
http://www.itivy.com/java/archive/2012/3/10/634670155561047970.html
HBase安裝過程
環(huán)境: windows 7 SP1 virtualbox 4.1.4 r74291 ubuntu 11.10一、安裝需求 安裝java 1.6,hadoop 0.20.x及zookeeper
本次安裝僅使用一臺(tái)虛擬機(jī)(192.168.1.102),機(jī)上已安裝hadoop 0.20.205.0和zookeeper 3.4.3(zookeeper的安裝方法可見于ZooKeeper安裝過程)。 此次安裝的hbase版本為0.92.0。 安裝成功并執(zhí)行后,該虛擬機(jī)會(huì)有以下java進(jìn)程: NameNode DataNode SecondaryNameNode TaskTracker JobTracker HMaster ? ?(hbase) HRegionServer ? ?(hbase) QuorumPeerMain ? ?(zookeeper)
二、安裝hbase 1、下載hbase wget?http://mirror.bit.edu.cn/apache//hbase/stable/hbase-0.92.0-security.tar.gz 其他版本下載地址(最好使用stable版本):http://www.apache.org/dyn/closer.cgi/hbase/
2、解壓 tar -xf?hbase-0.92.0-security.tar.gz 將解壓后的hbase-0.92.0-security文件放在系統(tǒng)的/home/hadooptest/中。
3、修改配置 hbase的安裝是基于hdfs的,hbase的配置主要涉及conf目錄下的三個(gè)文件:hbase-env.sh,hbase-site.xml,regionservers。
①修改hbase-env.sh #必修配置的地方為: export JAVA_HOME=/usr/lib/jvm/java-6-sun export HBASE_CLASSPATH=/home/hadooptest/hadoop-0.20.205.0/conf export HBASE_OPTS="-XX:+UseConcMarkSweepGC" export HBASE_MANAGES_ZK=true 其中,JAVA_HOME為java安裝路徑,HBASE_CLASSPATH為hadoop安裝路徑。
②修改hbase-site.xml 修改其內(nèi)容為: <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>hbase.rootdir</name> <value>hdfs://namenode/hbase</value> <description>The directory shared by region servers.</description> </property> <property> <name>hbase.master.port</name> <value>60000</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> #<property> #<name>hbase.zookeeper.property.dataDir</name> #<value>/home/hadooptest/zookeeper-3.4.3/zookeeperdir/zookeeper-data</value> #</property> <property> <name>hbase.zookeeper.property.clientPort</name> <value>2181</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>zookeeper</value> </property> </configuration> 其中,hbase.rootdir這一項(xiàng)的配置必須與hdfs的fs.name.default項(xiàng)一致,還要為hbase指定根目錄/hbase。hbase.zookeeper.property.dataDir屬性(在此次配置中已注釋掉)來把ZooKeeper保存數(shù)據(jù)的目錄地址改掉,默認(rèn)值是/tmp (重啟的時(shí)候會(huì)被操作系統(tǒng)刪掉),不過我已經(jīng)在zookeeper的conf/zoo.cfg文件中將dataDir設(shè)置為/home/hadooptest/zookeeper-3.4.3/zookeeperdir/zookeeper-data(詳見于ZooKeeper安裝過程),所以此處不須使用該屬性。hbase.zookeeper.quorum指定了所有的zookeeper,此處的值為zookeeper,其已經(jīng)在/etc/hosts文件中映射為192.168.1.102(本機(jī)),如果想指定多個(gè)zookeeper,可在此項(xiàng)中用逗號(hào)將不同的zookeeper隔開。
③修改regionservers 文件原先為空,在其中加入: regionserver regionserver已在/etc/hosts中映射為192.168.1.102。如果有多個(gè)regionserver,可繼續(xù)添加regionserver,每行填寫一個(gè)。
④為方便使用啟動(dòng)腳本,在/etc/profile中設(shè)置環(huán)境變量 在/etc/profile中添加以下內(nèi)容: export HBASE_HOME=/home/hadooptest/hbase-0.92.0-security PATH=$HBASE_HOME/bin:$PATH export PATH
⑤配置完畢。若配置多臺(tái)機(jī)器,可將此次配置的hbase目錄拷貝到其他機(jī)器的相同目錄下。當(dāng)然,/etc/hosts也要做相應(yīng)的改動(dòng)。
三、啟動(dòng)并測(cè)試hbase 1、啟動(dòng)zookeeper和hbase 查看一些文檔得知,直接執(zhí)行bin/start-hbase.sh可先啟動(dòng)zookeeper,再啟動(dòng)master,最后啟動(dòng)regionserver。 但是可能是配置或者版本不兼容的問題,我執(zhí)行start-hbase.sh后,卻僅啟動(dòng)了master和regionserver,沒有啟動(dòng)zookeeper。而且master和regionserver會(huì)一直循環(huán)等待連接到zookeeper,超時(shí)便會(huì)結(jié)束進(jìn)程。所以只能先手動(dòng)啟動(dòng)zookeeper。
①啟動(dòng)zookeeper 執(zhí)行zkServer.sh start: hadooptest@tigerchan-VirtualBox:~$ zkServer.sh start JMX enabled by default Using config: /home/hadooptest/zookeeper-3.4.3/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
②啟動(dòng)hbase 執(zhí)行start-hbase.sh: hadooptest@tigerchan-VirtualBox:~$ start-hbase.sh? zookeeper: starting zookeeper, logging to /home/hadooptest/hbase-0.92.0-security/bin/../logs/hbase-hadooptest-zookeeper-tigerchan-VirtualBox.out starting master, logging to /home/hadooptest/hbase-0.92.0-security/logs/hbase-hadooptest-master-tigerchan-VirtualBox.out regionserver: starting regionserver, logging to /home/hadooptest/hbase-0.92.0-security/bin/../logs/hbase-hadooptest-regionserver-tigerchan-VirtualBox.out
2、輸入jps命令查看進(jìn)程 2640 NameNode 2991 DataNode 8997 Jps 8698 HRegionServer 3238 SecondaryNameNode 3580 TaskTracker 3326 JobTracker 8974 QuorumPeerMain 8478 HMaster
3、測(cè)試hbase ①執(zhí)行hbase shell進(jìn)入hbase hadooptest@tigerchan-VirtualBox:~$ hbase shell HBase Shell; enter 'help<RETURN>' for list of supported commands. Type "exit<RETURN>" to leave the HBase Shell Version 0.92.0, r1231986, Tue Jan 17 02:30:24 UTC 2012
hbase(main):001:0>
②測(cè)試創(chuàng)建表的功能 hbase(main):001:0> create 'test', 'cf' SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/home/hadooptest/hbase-0.92.0-security/lib/slf4j-log4j12-1.5.8.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/home/hadooptest/hadoop-0.20.205.0/lib/slf4j-log4j12-1.4.3.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
ERROR: org.apache.hadoop.hbase.MasterNotRunningException: Retried 7 times
提示錯(cuò)誤了(SLF4J不是具體的日志解決方案,它只服務(wù)于各種各樣的日志系統(tǒng)。此處提示有多個(gè)SLF4J綁定,不影響主要功能,暫且略過),master沒有運(yùn)行。(如果你創(chuàng)建成功,恭喜你,你可以跳到下一步繼續(xù)測(cè)試了) 但是master進(jìn)程已經(jīng)存在。查看logs/hbase-hadooptest-master-tigerchan-VirtualBox.log日志發(fā)現(xiàn): 2012-03-10 14:20:16,896 WARN org.apache.hadoop.hbase.util.FSUtils: Unable to create version file at hdfs://namenode/hbase, retrying: java.io.IOException: java.lang.NoSuchMethodException: org.apache.hadoop.hdfs.protocol.ClientProtocol.create(java.lang.String, org.apache.hadoop.fs.permission.FsPermission, java.lang.String, boolean, boolean, short, long) at java.lang.Class.getMethod(Class.java:1605) at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:557) at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1388) at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1384) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:396) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1059) at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1382)
參考博文hadoop 異常記錄 ERROR: org.apache.hadoop.hbase.MasterNotRunningException: Retried 7 times后覺得應(yīng)該是RPC協(xié)議不一致所造成的。解決方法是:將hbase-0.92.0-security/lib目錄下的hadoop-core-1.0.0.jar文件刪除,將hadoop-0.20.205.0目錄下的hadoop-core-0.20.205.0.jar拷貝到hbase/lib下面。同時(shí),我發(fā)現(xiàn)了hbase-0.92.0-security/lib目錄下的zookeeper-3.4.2.jar文件,于是也將其刪除,將zookeeper-3.4.3目錄下的zookeeper-3.4.3.jar拷貝到hbase/lib下,然后重新啟動(dòng)hbase。
重新執(zhí)行hbase shell然后創(chuàng)建表,這次遲遲沒有輸出結(jié)果。于是只能再查看hbase-hadooptest-master-tigerchan-VirtualBox.log日志,發(fā)現(xiàn): org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed setting up proxy interface org.apache.hadoop.hbase.ipc.HRegionInterface to localhost/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:1453) at org.apache.hadoop.hbase.master.AssignmentManager.assign(AssignmentManager.java:1200) at org.apache.hadoop.hbase.master.AssignmentManager.assign(AssignmentManager.java:1175) at org.apache.hadoop.hbase.master.AssignmentManager.assign(AssignmentManager.java:1170) at org.apache.hadoop.hbase.master.AssignmentManager.assignRoot(AssignmentManager.java:1918) at org.apache.hadoop.hbase.master.HMaster.assignRootAndMeta(HMaster.java:557) at org.apache.hadoop.hbase.master.HMaster.finishInitialization(HMaster.java:491) at org.apache.hadoop.hbase.master.HMaster.run(HMaster.java:326) at java.lang.Thread.run(Thread.java:662) Caused by: java.net.ConnectException: Connection refused
日志顯示master一直在等待連接localhost上的regionserver。于是再查看hbase-hadooptest-regionserver-tigerchan-VirtualBox.log日志,發(fā)現(xiàn): 2012-03-10 15:08:41,368 INFO org.apache.hadoop.ipc.HBaseServer: PRI IPC Server handler 0 on 60020: starting 2012-03-10 15:08:41,370 INFO org.apache.hadoop.ipc.HBaseServer: PRI IPC Server handler 1 on 60020: starting 2012-03-10 15:08:41,372 INFO org.apache.hadoop.ipc.HBaseServer: PRI IPC Server handler 2 on 60020: starting 2012-03-10 15:08:41,373 INFO org.apache.hadoop.ipc.HBaseServer: PRI IPC Server handler 3 on 60020: starting 2012-03-10 15:08:41,376 INFO org.apache.hadoop.ipc.HBaseServer: PRI IPC Server handler 4 on 60020: starting 2012-03-10 15:08:41,377 INFO org.apache.hadoop.ipc.HBaseServer: PRI IPC Server handler 5 on 60020: starting 2012-03-10 15:08:41,380 INFO org.apache.hadoop.ipc.HBaseServer: PRI IPC Server handler 6 on 60020: starting 2012-03-10 15:08:41,382 INFO org.apache.hadoop.ipc.HBaseServer: PRI IPC Server handler 7 on 60020: starting 2012-03-10 15:08:41,384 INFO org.apache.hadoop.ipc.HBaseServer: PRI IPC Server handler 8 on 60020: starting 2012-03-10 15:08:41,388 INFO org.apache.hadoop.ipc.HBaseServer: PRI IPC Server handler 9 on 60020: starting 2012-03-10 15:08:41,394 INFO org.apache.hadoop.hbase.regionserver.HRegionServer: Serving as localhost,60020,1331362969179, RPC listening on tigerchan-VirtualBox/127.0.1.1:60020, sessionid=0x135fb6a344a0001 2012-03-10 15:08:41,400 INFO org.apache.hadoop.hbase.regionserver.SplitLogWorker: SplitLogWorker localhost,60020,1331362969179 starting
regionserver卻一直在監(jiān)聽tigerchan-VirtualBox/127.0.1.1:60020。 于是修改/etc/hosts文件,將tigerchan-VirtualBox映射為127.0.0.1。重啟hbase,創(chuàng)建表成功。
③繼續(xù)測(cè)試添加數(shù)據(jù)、瀏覽、刪除等其他功能,參考http://hbase.apache.org/book/quickstart.html hadooptest@tigerchan-VirtualBox:~$ hbase shell HBase Shell; enter 'help<RETURN>' for list of supported commands. Type "exit<RETURN>" to leave the HBase Shell Version 0.92.0, r1231986, Tue Jan 17 02:30:24 UTC 2012
hbase(main):001:0> create 'test', 'cf' SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/home/hadooptest/hbase-0.92.0-security/lib/slf4j-log4j12-1.5.8.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/home/hadooptest/hadoop-0.20.205.0/lib/slf4j-log4j12-1.4.3.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 0 row(s) in 2.9830 seconds
hbase(main):002:0> list 'test' TABLE ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? test ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1 row(s) in 0.2440 seconds
hbase(main):003:0> put 'test', 'row1', 'cf:a', 'value1' 0 row(s) in 1.2880 seconds
hbase(main):004:0> put 'test', 'row2', 'cf:b', 'value2' 0 row(s) in 0.0400 seconds
hbase(main):005:0> put 'test', 'row3', 'cf:c', 'value3' 0 row(s) in 0.0330 seconds
hbase(main):006:0> scan 'test' ROW ? ? ? ? ? ? ? ? ? COLUMN+CELL ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? row1 ? ? ? ? ? ? ? ? column=cf:a, timestamp=1331369650710, value=value1 ? ? ? ? row2 ? ? ? ? ? ? ? ? column=cf:b, timestamp=1331369678008, value=value2 ? ? ? ? row3 ? ? ? ? ? ? ? ? column=cf:c, timestamp=1331369689414, value=value3 ? ? ? ? 3 row(s) in 0.2880 seconds
hbase(main):007:0> get 'test', 'row1' COLUMN ? ? ? ? ? ? ? ?CELL ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? cf:a ? ? ? ? ? ? ? ? timestamp=1331369650710, value=value1 ? ? ? ? ? ? ? ? ? ?? 1 row(s) in 0.1670 seconds
hbase(main):008:0> drop 'test'
ERROR: Table test is enabled. Disable it first.'
Here is some help for this command: Drop the named table. Table must first be disabled. If table has more than one region, run a major compaction on .META.:
hbase> major_compact ".META."
hbase(main):009:0> disable 'test' 0 row(s) in 2.5160 seconds
hbase(main):010:0> drop 'test' 0 row(s) in 1.8860 seconds
hbase(main):011:0> exit
4、停止hbase 執(zhí)行stop-hbase.sh: hadooptest@tigerchan-VirtualBox:~$ stop-hbase.sh? stopping hbase............. zookeeper: no zookeeper to stop because kill -0 of pid 8422 failed with status 1
理論上應(yīng)該能夠停止zookeeper的QuorumPeerMain進(jìn)程,但是僅停止了HMaster和HRegionServer進(jìn)程。(執(zhí)行stop-hbase.sh時(shí)時(shí)提示zookeeper進(jìn)程號(hào)為8422,而實(shí)際上zookeeper進(jìn)程號(hào)為8974,該問題暫無解決) 因此需要執(zhí)行zkServer.sh stop才能停止zookeeper進(jìn)程。 hadooptest@tigerchan-VirtualBox:~$ zkServer.sh stop JMX enabled by default Using config: /home/hadooptest/zookeeper-3.4.3/bin/../conf/zoo.cfg Stopping zookeeper ... STOPPED
參考: http://hbase.apache.org/book/quickstart.html hadoop 異常記錄 ERROR: org.apache.hadoop.hbase.MasterNotRunningException: Retried 7 times Hbase HMaster 無法啟動(dòng) (Call to host:port failed on local exception) 注意你的hosts文件--記一次HBase問題定位
來源:http://blog.csdn.net/gudaoqianfu/article/details/7340896
?
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
- 上一篇: 远程过程调用(Remote Proced
- 下一篇: 浅析Hadoop文件格式