1. 在官網下載了 hbase-2.1.1 文件包,解壓在 、usr/local/src目錄下
2.在配置hbase-env.sh
export JAVA_HOME=/usr/local/src/jdk1.8.0_191
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib
export HBASE_MANAGES_ZK=true
3.配置hbase-site.xml:
<configuration>
<property>
<name>hbase.tmp.dir</name>
<value>/var/habse</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/lcoal/src/hbase-2.1.1/zookeeper</value>
</property>
</configuration>
3.配置regionservers
master
slave1
slave2
4.配置完後將hbase-2.1.1 分發到slave1,slave2節點;
=======================================================================================
環境到這裏就配置完了,然後 bin/start-hbase.sh啓動
啓動前先啓動hadoop,啓動後發現所有線程都在,但是過了一會 Hmaster,Hregiones 線程自動消失了,查看日誌 發現報錯信息;
java.lang.NoClassDefFoundError: org/apache/htrace/SamplerBuilder
at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:644)
at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:628)
at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:149)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2667)
at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:93)
at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2701)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2683)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:372)
at org.apache.hadoop.fs.Path.getFileSystem(Path.java:295)
at org.apache.hadoop.hbase.util.CommonFSUtils.getRootDir(CommonFSUtils.java:362)
at org.apache.hadoop.hbase.util.CommonFSUtils.isValidWALRootDir(CommonFSUtils.java:411)
at org.apache.hadoop.hbase.util.CommonFSUtils.getWALRootDir(CommonFSUtils.java:387)
at org.apache.hadoop.hbase.regionserver.HRegionServer.initializeFileSystem(HRegionServer.java:693)
at org.apache.hadoop.hbase.regionserver.HRegionServer.<init>(HRegionServer.java:602)
at org.apache.hadoop.hbase.master.HMaster.<init>(HMaster.java:491)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.apache.hadoop.hbase.master.HMaster.constructMaster(HMaster.java:3108)
at org.apache.hadoop.hbase.master.HMasterCommandLine.startMaster(HMasterCommandLine.java:236)
at org.apache.hadoop.hbase.master.HMasterCommandLine.run(HMasterCommandLine.java:140)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:149)
at org.apache.hadoop.hbase.master.HMaster.main(HMaster.java:3126)
Caused by: java.lang.ClassNotFoundException: org.apache.htrace.SamplerBuilder
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 25 more
2018-11-28 13:36:08,483 ERROR [main] master.HMasterCommandLine: Master exiting
java.lang.RuntimeException: Failed construction of Master: class org.apache.hadoop.hbase.master.HMaster.
at org.apache.hadoop.hbase.master.HMaster.constructMaster(HMaster.java:3115)
at org.apache.hadoop.hbase.master.HMasterCommandLine.startMaster(HMasterCommandLine.java:236)
at org.apache.hadoop.hbase.master.HMasterCommandLine.run(HMasterCommandLine.java:140)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:149)
at org.apache.hadoop.hbase.master.HMaster.main(HMaster.java:3126)
Caused by: java.lang.NoClassDefFoundError: org/apache/htrace/SamplerBuilder
at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:644)
at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:628)
at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:149)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2667)
at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:93)
at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2701)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2683)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:372)
at org.apache.hadoop.fs.Path.getFileSystem(Path.java:295)
at org.apache.hadoop.hbase.util.CommonFSUtils.getRootDir(CommonFSUtils.java:362)
at org.apache.hadoop.hbase.util.CommonFSUtils.isValidWALRootDir(CommonFSUtils.java:411)
at org.apache.hadoop.hbase.util.CommonFSUtils.getWALRootDir(CommonFSUtils.java:387)
at org.apache.hadoop.hbase.regionserver.HRegionServer.initializeFileSystem(HRegionServer.java:693)
at org.apache.hadoop.hbase.regionserver.HRegionServer.<init>(HRegionServer.java:602)
at org.apache.hadoop.hbase.master.HMaster.<init>(HMaster.java:491)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
然後百度查詢各種問題,答案千奇百怪,不過這樣正常,必將大家的環境可能都不一樣,一個一個的試唄,最後適合我的解決方案是:
講hadoop 的share/hadoop/yarn/lib文件下的htrace-core-3.0.4.jar和htrace-core-3.1.0-incubating.jar複製到hbase的lib下面;記得每個節點都要複製;
然後可以正常啓動了
進程正常後 hbase shell 啓動
然後 又報錯了 報錯信息大概是
[ERROR] Terminal initialization failed; falling back to unsupported
java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected
然後又接着百度: 很多答案說是jline.jar的問題 我就試試吧
結果我發現我的hbase\lib下面根本就沒有這個包,然後取hadoop/share/hadoop/yarn/lib下面去找,發現有一個jline-0.9.94.jar包;然後將這個包複製到hbase\lib下 ;
三個節點都弄好後,再啓動 還是報錯; 接着就想着 換個版本高點的jar包;就去maven裏面去找
我下的是2.12版本的 然後將jline-0.9.94.jar替換掉;
再次啓動 成功了 歐耶!!!!