hbase+hadoop+hdfs集羣搭建 集成spring

序言html

    最近公司一個汽車項目想用hbase作存儲,而後就有了這篇文字,來,來,來, 帶你一塊兒征服hbase,並推薦一本書《hbase權威指南》 這是一本極好的hbase入門書籍,我花了一個晚上看完以爲這書蠻好的!java

  本文分上下兩篇,上篇是hbase+hadoop+hdfs+zookeeper集羣環境的安裝,下篇講解hbase如何集成spring來使用。hbase是個什麼鬼?不知道沒關係,本文是我三天的成果,拿去,不謝!node

                                   

Hbase+hadoop+hdfs+zookeeper集羣環境的安裝git

 

hadoop+hdfs安裝: http://www.cnblogs.com/tony-tang/articles/6472935.htmlgithub

 

zookeeper集羣安裝:http://www.cnblogs.com/tony-tang/articles/6473373.htmlredis

 

Hbase安裝:http://www.cnblogs.com/tony-tang/articles/6473360.htmlspring

 

HBase shell 命令建立表及添加數據操做: http://www.cnblogs.com/tony-tang/p/6473393.htmlmongodb

 

至此環境安裝已經結束,下篇重點介紹Hbase是如何集成spring的,須要的maven jar包依賴,以及HbaseTemplate的擴展!shell

 

Hbase集成spring數據庫

 前言

  在集成Hbase以前問過同城一架構師朋友他們公司怎麼用Hbase的,獲得的答案是"直接用",呵呵,我理解這個直接用相似數據庫鏈接同樣直接用jdbc,沒有集成框架,而筆者之前玩過redis、mongodb與spring的集成,想着應該spring也能夠集成Hbase,而後就是找資源,maven私服、github,spring官網上各類搜索,果真我再次感覺到了spring的強大,還真有,廢話很少說了,上手吧!

 

1.maven pom配置

  這只是Hbase須要的jar包,固然你項目中還須要spring框架的依賴包,筆者這裏用的是2.2.0.RELEASE的版本,由於公司spring是4.1.6的版本。

<properties>
<hbase.version>0.98.8-hadoop2</hbase.version>
<spring.hadoop.version>2.2.0.RELEASE</spring.hadoop.version>
<hadoop.version>2.6.0</hadoop.version>
</properties>

     <dependencies>
<!-- spring-hadoop -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-hadoop</artifactId>
<version>${spring.hadoop.version}</version>
</dependency>

<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-hadoop-store</artifactId>
<version>${spring.hadoop.version}</version>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
<exclusion>
<artifactId>netty</artifactId>
<groupId>io.netty</groupId>
</exclusion>
</exclusions>
</dependency>

<dependency>
<groupId>org.xerial.snappy</groupId>
<artifactId>snappy-java</artifactId>
<version>1.1.0</version>
<scope>runtime</scope>
</dependency>

<!-- hadoop-->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>${hadoop.version}</version>
<scope>compile</scope>
<exclusions>
<exclusion>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
</exclusion>
<exclusion>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-util</artifactId>
</exclusion>
<exclusion>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jsp-2.1</artifactId>
</exclusion>
<exclusion>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jsp-api-2.1</artifactId>
</exclusion>
<exclusion>
<groupId>org.mortbay.jetty</groupId>
<artifactId>servlet-api-2.1</artifactId>
</exclusion>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
<exclusion>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
</exclusion>
<exclusion>
<groupId>tomcat</groupId>
<artifactId>jasper-compiler</artifactId>
</exclusion>
<exclusion>
<groupId>tomcat</groupId>
<artifactId>jasper-runtime</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-auth</artifactId>
<version>${hadoop.version}</version>
<scope>compile</scope>
</dependency>

<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>${hbase.version}</version>
<scope>compile</scope>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-common</artifactId>
<version>${hbase.version}</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-protocol</artifactId>
<version>${hbase.version}</version>
</dependency>
</dependencies>

2.application-hbase.xml文件配置

    咱們須要的是hbaseTemplate對象,而hbaseTemplate須要配置hbaseConfiguration 因此須要配置 <hdp:hbase-configuration>,hbase-configuration默認id取名爲hbaseConfiguration,因此好奇的你必定在想hbaseConfiguration從哪裏冒出來的。

  而hdp:hbase-configuration 又須要配置 hdp:configuration因此咋一看hdp:configuration這是個什麼鬼,沒什麼用,「Hadoop HDFS爲HBase提供了高可靠性的底層存儲支持,Hadoop MapReduce爲HBase提供了高性能的計算能力,Zookeeper爲HBase提供了穩定服務和failover機制」,摘自Hbase百科,其實Hbase也能夠本地存儲,它的底層存儲支持是可插拔的不必定非要是HDFS,若是選擇其餘的底層存儲支持可能會出現你想不到的兼容問題!

 

 

3.base_info.properties配置

#----------------------hbase config start-------------------------------
hd.fs=hdfs://namenode1:9000/hbase
zk.quorum=namenode1,datanode1,datanode2
zk.port=2181
fs.defaultFS=hdfs://namenode1:9000/
#----------------------hbase config end-------------------------------

4.接口定義

IHbaseService接口:

 


5.接口實現

 
實現類封裝了對Hbase的CRUD操做

HbaseServic實現類:

 ReqEntity參數實體

 ReqEntity實體類

  6.Windows環境調試

   1.在windows環境調試的時候須要 hadoop-2.6.0環境,

  設置環境變量:

  HADOOP_HOME:D:\Program Files\hadoop-2.6.0

  Path中添加 %HADOOP_HOME%\bin

  備註:hadoop原生的下載包不包含winutils.exe

  因此須要下載 hadoop-common-2.2.0-bin-master.zip包:http://pan.baidu.com/s/1qYdKnJQ

  並將hadoop-common-2.2.0-bin-master\bin目錄下的文件替換到 %HADOOP_HOME%\bin目錄下。

 2.須要在C:\Windows\System32\drivers\etc\hosts 文件配置域名(ip爲zk集羣配置的地址,不然會連不上zk):

   192.168.6.10 namenode1

  192.168.6.11 datanode01

  192.168.6.12 datanode02

 7.結束語

  Spring集成Hbase就簡單介紹到這裏,其中筆者遇到很是多問題,都是一步一步走過來了,若是你也正思考如何使用Hbase,那麼本文對你很是有用。若是您對本文有疑問或者意見請給我評論。若是你使用過程當中遇到問題能夠添加我QQ:515173248 也能夠給我QQ郵件。
相關文章
相關標籤/搜索