2016-10-07 82 views
0

我有一個分佈式hadoop集羣,它的hdfs上運行着hbase。要構建地圖/ HBase的使用減少的工作,我有這些依賴關係:Hbase映射器/減少集羣節點上的庫需求

<dependencies> 
     <dependency> 
      <groupId>org.apache.hadoop</groupId> 
      <artifactId>hadoop-core</artifactId> 
      <version>1.2.1</version> 
      <scope>provided</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.hbase</groupId> 
      <artifactId>hbase-client</artifactId> 
      <version>1.2.3</version> 
      <scope>provided</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.hbase</groupId> 
      <artifactId>hbase-server</artifactId> 
      <version>1.2.3</version> 
      <scope>provided</scope> 
     </dependency> 
    </dependencies> 

我試圖找出究竟如何部署的所有這些庫。 hadoop應該在其classpath中包含$ HBASE_HOME/lib/*嗎?有很多重疊和版本衝突。看起來我應該只需要一些子集,但是hbase文檔只提供一些幫助:

替換捆綁HBase的Hadoop!由於HBase依賴於 Hadoop,因此它將Hadoop jar實例捆綁在lib 目錄下。捆綁的jar只能用於獨立模式。在 分佈式模式下,羣集中出現的 Hadoop版本與HBase下的內容匹配至關重要。將您在HBase lib目錄中找到的hadoop jar 替換爲羣集上運行的hadoop jar ,以避免版本不匹配問題。確保您的 替換羣集中HBase上的jar。 Hadoop版本 不匹配問題有各種表現,但通常看起來像它掛起的 。

我無法找到它肯定會告訴您哪裏需要添加到hadoop的計算節點的hbase庫。

回答

0

我試圖通過實驗回答這個問題。項目我似乎需要使它工作的最小的一組是:

hbase-client-1.2.3.jar -> ../../../../hbase/lib/hbase-client-1.2.3.jar 
hbase-common-1.2.3.jar -> ../../../../hbase/lib/hbase-common-1.2.3.jar 
hbase-hadoop2-compat-1.2.3.jar -> ../../../../hbase/lib/hbase-hadoop2-compat-1.2.3.jar 
hbase-hadoop-compat-1.2.3.jar -> ../../../../hbase/lib/hbase-hadoop-compat-1.2.3.jar 
hbase-prefix-tree-1.2.3.jar -> ../../../../hbase/lib/hbase-prefix-tree-1.2.3.jar 
base-protocol-1.2.3.jar -> ../../../../hbase/lib/hbase-protocol-1.2.3.jar 
hbase-server-1.2.3.jar -> ../../../../hbase/lib/hbase-server-1.2.3.jar 
metrics-core-2.2.0.jar -> ../../../../hbase/lib/metrics-core-2.2.0.jar 

要稍微解釋一下,我的Hadoop安裝在/ home/Hadoop和HBase的我安裝在/ home/HBase的。這些都是「安裝」的,只需將apache hadoop和hbase tarball分別解壓到「hadoop」和「hbase」用戶的主目錄即可。 Reducer是一個空TableReducer。

它似乎運行 - 或者至少它沒有任何關於hbase的ClassNotFound異常。

我不確定這是不是真的集......我只能說我的空TableReducer需要這些東西。

+0

我所做的是將這些放在/ home/hadoop/share/hadoop/hbase/as符號鏈接中,然後將整個目錄添加到hadoop-env.sh中的hadoop類路徑 – wz2b