導航:首頁 > 文件管理 > hbase的配置文件目錄

hbase的配置文件目錄

發布時間:2023-05-21 20:53:20

Ⅰ 如何使用Eclipse構建HBase開發環境

使用Eclipse構建HBase開發環境方法步驟:
1:從HBase集群中復制一份Hbase部署文件,放置在開發端某一目錄下(如在/app/hadoop/hbase096目錄下)。
2:在eclipse里新建一個java項目HBase,然後選擇項目屬性,在Libraries->Add External JARs...,然後選擇/app/hadoop/hbase096/lib下相關的JAR包,如果只是測試用的話,就簡單一點,將所有的JAR選上。

3:在項目HBase下增加一個文件夾conf,將Hbase集群的配置文件hbase-site.xml復制到該目錄,然後選擇項目屬性在Libraries->Add Class Folder,將剛剛增加的conf目錄選上。

4:在遲羨猛HBase項目中增加一個chapter12的package,然後增加一個HBaseTestCase的class,然後將《Hadoop實戰第2版》12章的代碼復制進去,做適當的修改,代碼如下:
package chapter12;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.util.Bytes;

public class HBaseTestCase {
//聲明靜態配置 HBaseConfiguration
static Configuration cfg=HBaseConfiguration.create();

//碼橋創建一張表,通過HBaseAdmin HTableDescriptor來創建
public static void creat(String tablename,String columnFamily) throws Exception {
HBaseAdmin admin = new HBaseAdmin(cfg);
if (admin.tableExists(tablename)) {
System.out.println("table Exists!");
System.exit(0);
}
else{
HTableDescriptor tableDesc = new HTableDescriptor(tablename);
tableDesc.addFamily(new HColumnDescriptor(columnFamily));
admin.createTable(tableDesc);
System.out.println("create table success!");
}
}

//添加一條數據,通過HTable Put為已經存在的表來添加派談數據
public static void put(String tablename,String row, String columnFamily,String column,String data) throws Exception {
HTable table = new HTable(cfg, tablename);
Put p1=new Put(Bytes.toBytes(row));
p1.add(Bytes.toBytes(columnFamily), Bytes.toBytes(column), Bytes.toBytes(data));
table.put(p1);
System.out.println("put '"+row+"','"+columnFamily+":"+column+"','"+data+"'");
}
public static void get(String tablename,String row) throws IOException{
HTable table=new HTable(cfg,tablename);
Get g=new Get(Bytes.toBytes(row));
Result result=table.get(g);
System.out.println("Get: "+result);
}
//顯示所有數據,通過HTable Scan來獲取已有表的信息
public static void scan(String tablename) throws Exception{
HTable table = new HTable(cfg, tablename);
Scan s = new Scan();
ResultScanner rs = table.getScanner(s);
for(Result r:rs){
System.out.println("Scan: "+r);
}
}
public static boolean delete(String tablename) throws IOException{
HBaseAdmin admin=new HBaseAdmin(cfg);
if(admin.tableExists(tablename)){
try
{
admin.disableTable(tablename);
admin.deleteTable(tablename);
}catch(Exception ex){
ex.printStackTrace();
return false;
}
}
return true;
}
public static void main (String [] agrs) {
String tablename="hbase_tb";
String columnFamily="cf";
try {
HBaseTestCase.creat(tablename, columnFamily);
HBaseTestCase.put(tablename, "row1", columnFamily, "cl1", "data");
HBaseTestCase.get(tablename, "row1");
HBaseTestCase.scan(tablename);
/* if(true==HBaseTestCase.delete(tablename))
System.out.println("Delete table:"+tablename+"success!");
*/
}
catch (Exception e) {
e.printStackTrace();
}
}
}
5:設置運行配置,然後運行。運行前將Hbase集群先啟動。

6:檢驗,使用hbase shell查看hbase,發現已經建立表hbase_tb。

Ⅱ 獨立的HBase實例解壓縮,解壓錯誤問題,怎麼解決

Ⅲ HBase Configuration

版本: 2.0.0
HBase的配置文件在conf/目錄下。

在分布式模式下, 當修改類hbase的配置文件後, 需要同步到集群中的其他節點上。HBase不會自動同步。 可以芹春賣使用 rsync 、scp 等工具進行同步。 對於大部分配置,需要重啟使之生效。 動態參數例外。

例如: 一個schema 每個region 有3個列族, 平均每個列族有3個StoreFile , 一個RegionServers 有100個regions , JVM將打開 3 3 100 = 900 個文件描述符, 這不包括打開的JAR文件、配置文件和其他文件。 打開一個文件不會消耗很多資源,風險在於可打開的文件數量。

另外一個相關的設置是允嫌逗許一個用戶一次運行的進程數量。 linux系統的進程數量使用ulimit -u 設置。 這與nproc命令不同, nproc控制可以分配給一個用戶的cpus數量。在有負載的情況下, ulimit -u 設置太低會導致OutOfMemoryError 異常。 See Jack Levin』森高s major HDFS issues thread on the hbase-users mailing list, from 2011.

支持的版本情況如下:

Hbase 依賴hadoop, 它依賴lib目錄下的hadoop jar包。 在分布式模式下, hbase依賴的jar包與hadoop集群使用的jar包保持一致非常重要。 為避免版本錯誤,請使用hadoop集群的jar替換hbase下的hadoop jar 。 確保整個hbase集群上的jar都被替換。 hadoop 版本不匹配會引發各種問題,大部分看起來像程序掛起了。

DataNode 有個文件上限, 需要配置hdfs-site.xml 的該屬性如下:

確保已經重啟了hdfs, 使配置生效。

未配置該屬性, 可能會引發該錯誤:

或其他錯誤,參見, See also casestudies.max.transfer.threads and note that this property was previously known as dfs.datanode.max.xcievers (e.g. Hadoop HDFS: Deceived by Xciever ).

ZooKeeper 3.4.x 版本及以上。 Hbase使用 multi 功能, 該功能從zk的3.4.0版本開始提供。
hbase.zookeeper.useMulti 屬性默認為true 。
參見: HBASE-12241 (The crash of regionServer when taking deadserver』s replication queue breaks replication) and HBASE-6775 (Use ZK.multi when available for HBASE-6710 0.92/0.94 compatibility fix) for background.

對於2.0版本, 該屬性已經廢棄, 並且useMulti 總是開啟的。

Ⅳ 求助帖,hbase新手,windows中的java怎麼連接linux中的hbase

一、新建本地java工程
file->new->java project

二、添加jar包和配置文件
1、添加JAR包
右擊Propertie在彈出的快捷菜單中選擇Java Build Path對話框,在該對話框中單擊Libraries選項卡,在該選項卡下單擊
Add External JARs按鈕,定位到$HBASE/lib目錄下,並選取如下JAR包。
hadoop-core-1.0.0.jar
commons-loggings-version.jar
commons-cli-version.jar
commons-lang-version.jar
commons-configuration-version.jar
hbase-0.94.1.jar
zookeeper-3.4.3.jar
slf4j-api-1.5.8.jar
slf4j-log4j12-1.5.8.jar
log4j-1.2.16.jar
protobuf-java-2.4.1.jar
2、添加hbase-site.xml配置文件
在工程根目錄下創建conf文件夾,將$HBASE_HOME/conf/目錄中的hbase-site.xml文件復制到該文件夾中。通過右鍵
選擇Propertie->Java Build Path->Libraries->Add Class Folder。

3、windows下開發HBase應用程序,HBase部署在linux環境中,在運行調試時可能會出現無法找到主機,類似異常信息如下:java.net.UnknownHostException: unknown host: master
解決辦法如下:在C:\WINDOWS\system32\drivers\etc\hosts文件中添加如下信息
192.168.2.34 master

Ⅳ centos7 hbase2.1.3 安裝

http://archive.apache.org/dist/hbase/2.1.3/hbase-2.1.3-bin.tar.gz

需要安裝好jdk8,安裝方法參考 centos7 jdk8安裝

安裝方法參考
centos7 hadoop2.8.5 安裝

centos7 zookeeper3.5.5 安裝

修改 ~/.bashrc 文件

文件中喚手加入

使環境變數生效

進入配置文件目錄

修改下列配置文件

在 文件中找到 # export HBASE_MANAGES_ZK=false ,修辯嫌改為

啟動前復制 htrace-core-3.1.0-incubating.jar 到lib目錄下,不然可能會出錯

啟動服務

啟動成功後訪問web頁和灶嫌面

Ⅵ hbase怎麼用

HBase安裝及簡單使用

通過之前的hadoop0.20.2的安裝並調試成功,接下來我們繼續安裝hbase0.90.5。在安裝hbase0.90.5之前,因為hbase0.90.5隻支持jdk1.6,所以,我把之前的jdk1.8卸載,重新安裝了jdk1.6。

第一步:

首先需要下載hbase0.90.5.tar.gz,並解壓到/home/hadoop/的目錄下,同時將目錄修改為hbase0.90.5

第二步:

替換hadoop核心jar包,主要母的是防止hbase和hadoop版本不同出現兼容問題,造成hmaster啟動異常

將hbase0.90.5/lib目錄中的hadoop-core-0.20-append-r1056497.jar包進行備份後刪除,再將/home/hadoop/hadoop下面的hadoop-0.20.2-core.jar賦值到/home/hadoop/hbase0.90.5目錄下即可

第三步:

編輯配置文件

①/home/hadoop/hbase0.90.5/conf/hbase-env.sh

我們對行鍵'1001'中列族info的列名age賦值24(1001:info:age=>24),插入兩次,會將最後一次的值進行合並,其中,用時間戳來區分。從圖片中的時間戳不同可以看出保存的是最後一次put的內容。

Ⅶ 如何將一個hbase的數據導入另一個hbase

1.在hbase中創建一個表
例如:create 'test','info'
2.配置環境
在hadoop的安裝目錄下找到hadoop.env.sh配置文件,將一文件加入到此配置文件中
(export HBASE_HOME=/usr/hbase
export HADOOP_CLASSPATH=$HBASE_HOME/hbase-0.94.12.jar:$HBASE_HOME/hbase-0.94.12-test.jar:$HBASE_HOME/conf:${HBASE_HOME}/lib/zookeeper-3.4.5.jar:${HBASE_HOME}/lib/guava-11.0.2.jar)
以上的配置文件可以不用配置,一但配置在啟動hive時就會出錯,需要另加配置。
然後拷貝jar包
將hbase的hbase-0.91.12.jar拷貝到haddoop的lib下,將hbase-0.94.12.tests.jar 到hadoop的lib下
將hbase的配置文件hbase-site.xml文件拷貝到hadoop的conf下
3.重新啟動hadoop
4.將所需要的文件上傳到hdfs上,我用的eclipse上傳的,大家也可以用hadoop fs -put test3.dat /application/logAnalyse/test/
5.在你安裝的hbase的lib目錄下執行一下的命令
hbase org.apache.hadoop.hbase.maprece.ImportTsv - Dimporttsv.columns=info:userid,HBASE_ROW_KEY,info:netid test2 /application/logAnalyse/test/test3.dat
或是
hbase org.apache.hadoop.hbase.maprece.ImportTsv - Dimporttsv.columns=HBASE_ROW_KEY,cf:c1,cf:c2 -Dimporttsv.separator=, test2 /application/logAnalyse/test/test3.txt
這樣你去hbase執行scan 'test2'幾可以看到已經有數據了

Ⅷ HBase存儲架構

上圖是HBase的存儲架構圖。

由上圖可以知道,客戶端是通過Zookeeper找到HMaster,然後再與具體的Hregionserver進行溝通讀寫數據的。

具體到物理實現,細節包括以下這些:

首先要清楚HBase在hdfs中的存儲路徑,以及各個目錄的作用。在hbase-site.xml 文件中,配置項 <name> hbase.rootdir</name> 默認 「/hbase」,就是hbase在hdfs中的存儲根路徑。以下是hbase0.96版本的個路徑作用。1.0以後的版本請參考這里: https://blog.bcmeng.com/post/hbase-hdfs.html

1、 /hbase/.archive
HBase 在做 Split或者 compact 操作完成之後,會將 HFile 移到.archive 目錄中,然後將之前的 hfile 刪除掉,該目錄由 HMaster 上的一個定時任務定期去清理。

2、 /hbase/.corrupt
存儲HBase損壞的日誌文件,一般都是為空的。

3、 /hbase/.hbck
HBase 運維過程中偶爾蔽升會遇到元數據不一致的情況,這時候會用到提供的 hbck 工具去修復,修復過程中會使用該目錄作為臨時過度緩沖。

4、 /hbase/logs
HBase 是支持 WAL(Write Ahead Log) 的,HBase 會在第一次啟動之初會給每一台 RegionServer 在.log 下創建一個目錄,若客戶端如果開啟WAL 模式,會先將數據寫入一份到.log 下,當 RegionServer crash 或者目錄達到一定大小,會開啟 replay 模式,類似 MySQL 的 binlog。

5、 /hbase/oldlogs
當.logs 文件夾中的 HLog 沒用之後會 move 到.oldlogs 中,HMaster 會定期去清理。

6、 /hbase/.snapshot
hbase若開啟了 snapshot 功能之後,對某一個用戶表建立一個 snapshot 之後,snapshot 都存儲在該目錄下,如對表test 做了一個 名為sp_test 的snapshot,就會在/hbase/.snapshot/目錄下創建一個sp_test 文件夾,snapshot 之後的所有寫入都是記錄在這個 snapshot 之上。

7、 /hbase/.tmp
當對表做創建或者刪除操作的時候,會將表move 到該 tmp 目錄下,然後再去做處理操作。

8、 /hbase/hbase.id
它是一個文件,存儲集群唯一的 cluster id 號,是一個 uuid。

9、 /hbase/hbase.version
同樣也是一宏拿老個文件,存儲集群的版本號,貌似是加密的,看不到,只能通過web-ui 才能正確顯示出來

10、 -ROOT-
該表是一張的HBase表,只是它存儲的是.META.表的信息。通過HFile文件的解析腳本 hbase org.apache.hadoop.hbase.io.hfile.HFile -e -p -f 可以查看其存儲的內容,如下所示:

以上可以看出,-ROOT-表記錄的.META.表的所在機器是dchbase2,與web界面看到的一致:

11、 .META.
通過以上表能找到.META.表的信息,該表也是一張hbase表,通過以上命令,解析其中一個region:

以敏神上可以看出,adt_app_channel表的數據記錄在dchbase3這台reginserver上,也與界面一致,如果有多個region,則會在表名後面加上rowkey的范圍:

通過以上描述,只要找到-ROOT-表的信息,就能根據rowkey找到對應的數據,那-ROOT-在哪裡找呢?從本文一開始的圖中可以知道,就是在zookeeper中找的。進入zookeeper命令行界面:

可以看出-ROOT-表存儲在 dchbase3 機器中,對應界面如下:

以上就是HBase客戶端根據指定的rowkey從zookeeper開始找到對應的數據的過程。

那在Region下HBase是如何存儲數據的呢?

以下就具體操作一張表,查詢對應的HFile文件,看HBase的數據存儲過程。

在HBase創建一張表 test7,並插入一些數據,如下命令:

查看wal日誌,通過 hbase org.apache.hadoop.hbase.regionserver.wal.HLog --mp -p 命令可以解析HLog文件,內容如下:

查看HFile文件,內容如下:

由此可見,HFile文件就是存儲HBase的KV對,其中Key的各個欄位包含了的信息如下:

由於hbase把cf和column都存儲在HFile中,所以在設計的時候,這兩個欄位應該盡量短,以減少存儲空間。

但刪除一條記錄的時候,HBase會怎麼操作呢?執行以下命令:

刪除了rowkey為200的記錄,查看hdfs,原來的HFile並沒有改變,而是生成了一個新的HFile,內容如下:

所以在HBase中,刪除一條記錄並不是修改HFile裡面的內容,而是寫新的文件,待HBase做合並的時候,把這些文件合並成一個HFile,用時間比較新的文件覆蓋舊的文件。HBase這樣做的根本原因是,HDFS不支持修改文件。

閱讀全文

與hbase的配置文件目錄相關的資料

熱點內容
windows7系統共享文件 瀏覽:62
ps前往文件夾 瀏覽:694
信捷plc編程用哪個軟體 瀏覽:939
vba導入文件 瀏覽:690
更新後版本英文怎麼說 瀏覽:267
桌面雲配置文件分離 瀏覽:505
iphone5如何升級4g網路 瀏覽:5
團購是在哪個app 瀏覽:897
打開多個word文檔圖片就不能顯示 瀏覽:855
騰訊新聞怎麼切換版本 瀏覽:269
app安裝失敗用不了 瀏覽:326
桌面文件滑鼠點開會變大變小 瀏覽:536
手機誤刪系統文件開不了機 瀏覽:883
微信兔子甩耳朵 瀏覽:998
android藍牙傳文件在哪裡 瀏覽:354
蘋果6s軟解是真的嗎 瀏覽:310
c語言代碼量大 瀏覽:874
最新網路衛星導航如何使用 瀏覽:425
以下哪些文件屬於圖像文件 瀏覽:774
zycommentjs 瀏覽:414

友情鏈接