1. 程式人生 > >hbase的安裝配置

hbase的安裝配置

環境及版本:

Centos7 (64位)

JDK(1.8)

hadoop(3.1)

hbase(2.0.0)

為了避免版本導致的怪異問題,請多多注意!

在已經裝好jdk和hadoop之後裝hbase,此hadoop和hbase為分散式的

1.解壓hbase2.0.0

2./bin/hbase-env.sh

配置JAVA_HOME路徑為本機的路徑

3./bin/hbase-site.xml

<configuration>
  	<property> 
		<!-- hbase存放資料目錄 -->
		<name>hbase.rootdir</name> 
		<!-- 埠要和Hadoop的fs.defaultFS埠一致-->
		<value>hdfs://master:9000/hbase</value>
	</property>
	<property>
		<!--	HBase Web頁面-->
		<name>hbase.master.info.port</name>
		<value>60010</value>
	</property>
	<property> 
		<!-- 是否分散式部署 -->
		<name>hbase.cluster.distributed</name> 
		<value>true</value> 
	</property> 
	<property> 
		<!-- list of  zookooper -->
		<name>hbase.zookeeper.quorum</name> 
		<value>master,slave1,slave2</value> 
	</property>     
	<property>
		<!-- 臨時檔案路徑,如果使用系統預設的tmp會被清除 -->
 		<name>hbase.tmp.dir</name>
 		<value>/data/local/hbase/tmp</value>
	</property>
 	<property>
	  	<name>dfs.replication</name>
  		<value>1</value>
  	</property>
 	<property>
		<!-- ZK資料檔案路徑 -->
        	<name>hbase.zoopkeeper.property.dataDir</name>
        	<value>/data/local/zookeeper/zkdata</value>
    	</property>
	<property>
  		<name>hbase.zookeeper.property.clientPort</name>
  		<value>2181</value>
	</property>
    	<property>
		<name>hbase.unsafe.stream.capability.enforce</name>
		<value>false</value>
	</property>
	<property>
   		<name>hbase.table.sanity.checks</name>
    		<value>false</value>
  	</property>
  	<property>
  		<!-- phoenix支援索引 -->
		<name>hbase.regionserver.wal.codec</name>
		<value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
	</property>
</configuration>

  4./bin/regionservers

  配置三臺主機名,如果你沒有改主機的名字,呢麼應該是你的IP地址

  5.從phoenix中複製兩個jar包過來(至於為什麼?我也不知道,對了,phoenix版本5.0.0)

  Phoenix-5.0.0-HBase-2.0-server.jar

  Phoenix-core-5.5.0-HBase-2.0.jar

  6.建立,其中的臨時資料夾

  7.拷貝hbase檔案到其他機器,(你說他是怎麼從別的機器上找到hbase檔案的呢?因為同路徑嗎?沒試過不同路徑的)

  8.配置環境變數

  export HBASE_HOME=/data/local/hbase/hbase-2.0.0

  export PATH=$PATH:${HBASE_HOME}/bin

  source /etc/profile  //讓環境變數生效

  9.如果你的環境變數生效了,隨便在哪裡  :命令   start-hbse.sh 

  10.檢查成功狀態  使用java中 jps命令 如果成功就會有下面兩個程序(此檔案並沒有標註hadoop的執行中程序)

  master(主節點):

    HMaster

    HRegionServer(如果你的regionServers 檔案中配置了主master,則在主節點上才有,如果沒配就只有在salve上才有)

  salve(從節點):

    HRegionServer

  11.遇到的問題及解決

    0.HMaster死亡,日誌資訊:找不到DataNode,檢查發現hadoop的DataNode沒起來,檢查hadoop的問題

    1.啟動後發現HRegionServer死了,檢視日誌

       ABORTING region server slave1,16020,1547180831222: Unhandled: Unable to find  未找到

     缺少上述的Phoenix-5.0.0-HBase-2.0-server.jar包,去phoenix找個包吧(注意版本)

    2.啟動後還是發現HRegionServer死了(或者個別的HRegionServer死了)  

      Server yfhadoopd3,60020,1357353729598 has been rejected; Reported time is too far out of sync with master.  Time difference of 33455ms > max allowed of       30000ms
     時間問題,hbase要求時間是同步的,我配置的時候時間是同步的,所以未配置時間同步,這是hbase很大的一個問題,預設的hbase時差容忍是30秒,當然可以修改配置,網上有無數個這樣的教程,推薦ntp 將salve的時間和master的時間進行同步

    3.在啟動的時候輸出口輸出了:    (slave1:)HBase SLF4J:Class path contains multiple SLF4J bindings

      正常的啟動情況下我是沒有出過這個問題的,我出現這個問題的同時伴隨了下面的這個問題,但是這個問題可解,將hbase中的LOG4J包移除,可解這個錯誤,注意如果他是報的salve1包繫結衝突,就移除slave1的,如果是其他的就移除其他的

    4.HRegionServer 死亡,HMaster活著,甚至能進入shell命令列,但是stop-hbase.sh失敗

      報錯資訊:2018-07-11 17:50:51,663 INFO  [main-SendThread(slave2:2181)] zookeeper.ClientCnxn: Opening socket connection to server slave2/192.168.1.130:2181. Will not attempt to authenticate using SASL (unknown error)

          2018-07-11 17:50:52,732 INFO  [ReadOnlyZKClient-slave1:2181,slave2:[email protected](slave1:2181)] zookeeper.ClientCnxn: Opening socket connection to server slave1/192.168.1.128:2181. Will not attempt to authenticate using SASL (unknown error)

          2018-07-11 17:50:57,623 ERROR [regionserver/slave1:16020] regionserver.HRegionServer: pache/hadoop/fs/ContentSummary; @98: invokestatic

          java.lang.VerifyError: Bad type on operand stack

          ERROR [regionserver/slave1:16020] regionserver.HRegionServer: RegionServer abort: loaded coprocessors are: []

      解決方法:將lib下的hadoop開頭的所有包全部刪除,從你的hadoop/share 資料夾下得到所有的hadoop開頭的jar包移動到lib下,注意:此種方法我的確解決了hbase的這個錯誤,但是,隨之而來的是各種各樣的錯誤,我開始的時候安裝過一個hbase,但是各種原因失敗了,然後再次安裝就報這個問題了。

    5.說一下遇到的各種各樣的錯誤

      HRegionServer 死亡,HMaster活著,甚至能進入shell命令列,但是stop-hbase.sh失敗

      Invalid host name: local host is: (unknown); destination host is: "HMaster":。。。找不到記錄,大概就是說找不到HMaster 節點了,其實我的IP是有配置的,但是找不到

      將配置檔案/conf/hbase-site.xml 中的HMaster換成你的IP地址

    6.HRegionServer 死亡,HMaster活著,甚至能進入shell命令列,但是stop-hbase.sh失敗

     regionserver.HRegionServer: ***** ABORTING region server slave1,16020,154711。。***** 好吧,到這我崩潰了,感覺後面的這些問題都是隨著問題4 出現的,所以根本上還是解決問題了,所以我重灌了系統,執行良好(配置檔案完全相同的呢~~,F***)