當前位置:首頁 » 編程軟體 » hbase源碼編譯

hbase源碼編譯

發布時間: 2022-04-29 04:33:08

『壹』 hbase是什麼工具

將數據導入HBase中有如下幾種方式:使用HBase的API中的Put方法使用HBase 的bulk load 工具使用定製的MapRece Job方式 使用HBase的API中的Put是最直接的方法,用法也很容易學習。但針對大部分情況,它並非都是最高效的方式。當需要將海量數據在規定時間內載入HBase中時,效率問題體現得尤為明顯。待處理的數據量一般都是巨大的,這也許是為何我們選擇了HBase而不是其他資料庫的原因。在項目開始之前,你就該思考如何將所有能夠很好的將數據轉移進HBase,否則之後可能面臨嚴重的性能問題。 HBase有一個名為 bulk load的功能支持將海量數據高效地裝載入HBase中。Bulk load是通過一個MapRece Job來實現的,通過Job直接生成一個HBase的內部HFile格式文件來形成一個特殊的HBase數據表,然後直接將數據文件載入到運行的集群中。使用bulk load功能最簡單的方式就是使用importtsv 工具。importtsv 是從TSV文件直接載入內容至HBase的一個內置工具。它通過運行一個MapRece Job,將數據從TSV文件中直接寫入HBase的表或者寫入一個HBase的自有格式數據文件。盡管importtsv 工具在需要將文本數據導入HBase的時候十分有用,但是有一些情況,比如導入其他格式的數據,你會希望使用編程來生成數據,而MapRece是處理海量數據最有效的方式。這可能也是HBase中載入海量數據唯一最可行的方法了。當然我們可以使用MapRece向HBase導入數據,但海量的數據集會使得MapRece Job也變得很繁重。若處理不當,則可能使得MapRece的job運行時的吞吐量很小。在HBase中數據合並是一項頻繁執行寫操作任務,除非我們能夠生成HBase的內部數據文件,並且直接載入。這樣盡管HBase的寫入速度一直很快,但是若合並過程沒有合適的配置,也有可能造成寫操作時常被阻塞。寫操作很重的任務可能引起的另一個問題就是將數據寫入了相同的族群伺服器(region server),這種情況常出現在將海量數據導入到一個新建的HBase中。一旦數據集中在相同的伺服器,整個集群就變得不平衡,並且寫速度會顯著的降低。我們將會在本文中致力於解決這些問題。我們將從一個簡單的任務開始,使用API中的Put方法將Mysql中的數據導入HBase。接著我們會描述如何使用 importtsv 和 bulk load將TSV數據文件導入HBase。我們也會有一個MapRece樣例展示如何使用其他數據文件格式來導入數據。上述方式都包括將數據直接寫入HBase中,以及在HDFS中直接寫入HFile類型文件。本文中最後一節解釋在向HBase導入數據之前如何構建好集群。本文代碼均是以java編寫,我們假設您具有基本Java知識,所以我們將略過如何編譯與打包文中的Java示例代碼,但我們會在示例源碼中進行注釋。

『貳』 hbase源碼怎麼導入eclipse

如何使用Eclipse導入並運行源碼(

網上關於Eclipse配置和開發入門程序的文章很多,可是要麼很粗淺,要麼很高深,卻很少看到講解如何把別人的源碼導入到自己的Eclipse環境中編譯運行的描述。做為初學者,能夠學習網上一些優秀源碼是提高的必由之路,可是Eclipse卻不象VC和Delphi那樣容易上手,對於很多初學者來說,它似乎還是太難了點。在找不到很好的關於Eclipse入門教程的情況下,為了能運行網上下載的Java源碼,我頗費了一些時間尋找如何正確的導入源碼並運行的方法,不敢獨美,特貢獻出來與初學者共享。
運行環境:
Java EE 5.0
Eclipse 3.1 中文版
源代碼用例(都是Java Application):
模擬Windows記事本
連連看
上述的兩個源代碼在賽迪網上可以找到。關於JDK的配置、安裝和Eclipse的安裝本文不再贅述,讀者可以很容易地找到相關的資料。本文只講使用Eclipse來導入源代碼的方法。
首先確保你的工作空間已經創建好,在我的機器上工作空間所在的目錄是「e:/workspace」。源代碼存放路徑假設為「我的文檔/cai/Java/一個仿windows的記事本」和「我的文檔/cai/Java/連連看/kyodai」。
下面開始介紹導入源碼的方法。
◎選擇菜單「文件/新建/項目」,選擇「Java項目」,彈出「創建Java項目」對話框。
◎在「創建Java項目」中輸入「項目名」,項目名可以為任意名字,不必和main類的名字一樣。這里假設為「Notepad」。
在「內容」中有兩個單選按鈕,視你的需要來使用。其中「在工作空間中創建新項目」會在你的工作空間中創建一個新目錄,目錄名與項目名一致;「從現有資源創建項目」可以在源碼所在目錄中直接編譯運行,生成的class文件也會存放在源碼目錄中。

下面先講「在工作空間中創建新項目」的方法。
◎在「內容」中單選「在工作空間中創建新項目」,點擊「完成」按鈕。此時在e:/workspace下生成Notepad目錄。
◎下面需要導入源碼到工作空間去。選擇菜單「文件/導入」,選擇「文件系統」。彈出「文件系統」對話框。
◎在「從目錄」中選擇源碼存放目錄「我的文檔/cai/Java/一個仿windows的記事本」,勾選上所有的.java源碼,其他的垃圾不要選上。下面又有兩個選擇:對話框下方有兩個選項,若選擇「創建完整的文件夾結構」,就會按源碼所存放的路徑完整地在工作空間中創建目錄,創建完畢會由於main方法類的路徑不對而在包資源管理器內的圖標上顯示叉叉,無法編譯成功;若選擇「只創建選擇的文件夾」,則會在工作空間創建的目錄下導入所有的文件而不會保留原目錄,此時可以編譯成功。
◎若選擇「創建完整的文件夾結構」,導入完成後,選擇菜單「項目/屬性/Java構建路徑/源代碼」,點擊「添加文件夾」,把子目錄逐級點開,直到源代碼所在這級目錄為止,勾選上該目錄。彈出的提示對話框點擊確定即可。注意上級目錄不要勾選,否則會報錯。這樣這種方法導入的源碼也可以編譯運行了。
◎注意若源代碼中含有子目錄,在main程序中會有import ...的語句,此時要注意import後面的目錄級別,在選擇Java構建路徑時要勾選上import指明的上級目錄名。例如,連連看代碼中有子目錄topbar,在main程序中有import kyodai.topbar語句,那麼就要勾選到「我的文檔/cai/Java/連連看/」這級目錄,而非源碼所在的「我的文檔/cai/Java/連連看/kyodai」目錄。
◎在連連看源碼中,作者已經把所有源碼都打包成了一個Jar,此時只需要添加該Jar包而不需要導入其他源碼就可以運行了(但不能調試,因為Jar包中不含源碼)。方法是創建完新項目後,選擇菜單「項目/屬性/Java構建路徑」,點擊「庫」頁,點擊「添加外部JAR」按鈕,選擇源碼自帶的Jar包即可運行。

下面介紹「從現有資源創建項目」的方法。
◎在「創建Java項目」對話框中,點擊「下一步」按鈕,彈出「Java設置」對話框。
◎在「Java設置」對話框中選擇「庫」頁,選擇「添加JAR」,若找不到隨源碼提供的Jar包,就選擇「添加外部JAR」。一般如果Jar存放的目錄正確,在「添加JAR」中是可以找到該條目的。雙擊出現的Jar包即可添加進去。若不需要額外的庫支持,則點擊「完成」。

這樣,用上面兩種方法創建的項目就可以編譯運行了。下面就介紹運行的方法。
◎選擇菜單「Run/運行」,彈出「創建、管理和運行配置」對話框。
◎根據源碼的種類在左邊的列表中進行選擇。我們用的兩個例子都是Java應用程序,所以雙擊「Java應用程序」,在對話框右邊可以輸入運行的配置。
◎如果新建了項目還沒有運行過,那麼右邊的「項目」欄預設值即為剛創建的項目。在「名稱」欄中輸入運行配置的名稱,建議與項目名稱一致(也可以不一致),不能與其他的運行配置重名。
◎點擊「Main類」欄右方的「搜索」按鈕,一般只有一個main類,在彈出的對話框中雙擊下面那個欄目的main類即可。如果需要以其他的main方法做為程序入口,可以勾選上「Main類」欄下方的兩個復選框,選擇其他的入口。
◎如果需要增加特殊的環境變數,例如有的源碼可能需要添加classpath環境變數,則可以在「環境」頁中添加。
◎運行配置中的內容也會同樣反映在調試配置中,運行和調試使用相同的配置。

創建了一堆新項目後,包資源管理器中會有一堆亂七八糟項目,有些是你需要的,有些是早已廢棄不用的,你可以刪除那些不用的項目,方法是右鍵點擊該項目,選擇「刪除」。這里要提醒讀者一下的是,刪除對話框有兩個選項,問你是否刪除該項目目錄下的內容,預設是「不刪除內容」,如果選擇刪除,那麼那個目錄就整個被刪除掉了,如果你這個目錄下的東西還有用,那你只好哭了。
刪除掉沒用的項目後,運行/調試對話框中多餘的配置也可以刪除,方法是右鍵點擊不用的配置名,選擇刪除。

好了,這是我初學Eclipse的一些心得,希望能對廣大想要使用Eclipse又擔心它煩瑣的初學者有些幫助。

『叄』 如何在windows平台上用Eclipse調試運行HBase

操作步驟如下:

1.下載和安裝cygwin;

2.下載新的Zookeeper包和HBase包,這里ZooKeeper版本為3.3.1,HBase版本為0.20.4

3.把利用它們的源碼包在Eclipse下生成2個獨立的Project,注意:zookeeper工程,要把那個conf目錄加入到工程的src中去

4.修改zookeeper工程下的conf目錄中的zoo.cfg文件,例子如下:

# The number of milliseconds of each tick

tickTime=5000

# the directory where the snapshot is stored.

dataDir=D:/zookeeper-3.3.1/data

# the port at which the clients will connect

clientPort=2181


就是給zookeeper指定文件存放的地方以及埠

5.啟動zookeeper

在Eclipse中新建一個Run config,main class為:org.apache.zookeeper.server.quorum.QuorumPeerMain

啟動的程序參數為:D:/workspace/zookeeper3.3.1/conf/zoo.cfg

啟動的虛擬機參數為:

-Dzookeeper.log.dir=D:/workspace/zookeeper3.3.1/log

-Dzookeeper.root.logger=INFO,CONSOLE

如圖所示:

好了,這樣就可以在Eclipse中把ZooKeeper啟動起來了。

6.修改HBase project中的一個類

org.apache.hadoop.hbase.LocalHBaseCluster

找到它的main函數,把main函數改成下

public static void main(String[] args) throws IOException {

HBaseConfiguration conf = new HBaseConfiguration();

conf.set("hbase.zookeeper.quorum", "localhost");

conf.set("hbase.zookeeper.property.clientPort", "2181");

LocalHBaseCluster cluster = new LocalHBaseCluster(conf,1);

cluster.startup();

}


注意行:LocalHBaseCluster cluster = new LocalHBaseCluster(conf,1); 構造函數中的1是代表Region server的個數,在這里只想起一個region server.

7.修改HBase的配置文件

在HBase project下的src中可以看到hbase-default.xml和hbase-site.xml兩個文件,改哪個都可以。直接在hbase-default.xml改的,重要的是下面3個屬性hbase.rootdir,hbase.cluster.distributed,hbase.tmp.dir,

把hbase.rootdir,hbase.tmp.dir都指向了本地的目錄,當然可以根據自己的需要調整,當然格式一定一樣寫。

<property>

<name>hbase.rootdir</name>

<value>file:///D:/hbase-0.20.3/data</value>

<description>The directory shared by region servers.

Should be fully-qualified to include the filesystem to use.

E.g: hdfs://NAMENODE_SERVER:PORT/HBASE_ROOTDIR

</description>

</property>

<property>

<name>hbase.cluster.distributed</name>

<value>false</value>

<description>The mode the cluster will be in. Possible values are

false: standalone and pseudo-distributed setups with managed Zookeeper

true: fully-distributed with unmanaged Zookeeper Quorum (see hbase-env.sh)

</description>

</property>

<property>

<name>hbase.tmp.dir</name>

<value>D:/hbase-0.20.3/tmp</value>

<description>Temporary directory on the local filesystem.</description>

</property>

<property>


8.啟動HBase,直接run org.apache.hadoop.hbase.LocalHBaseCluster就可以,run config不需要沒有什麼別的配置。當然就也可以debug了。

『肆』 如何使用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項目中增加一個package,然後增加一個HBaseTestCase的class,然後把源碼復制進去。
5:設置運行配置,然後運行。運行前將Hbase集群先啟動。
6:檢驗,使用hbase shell查看hbase,發現已經建立表hbase_tb。
補充jar包版本:hadoop-1.2.1,hbase-0.94.12,zookeeper-3.4.5

『伍』 在ubuntu環境下怎麼利用python將數據批量導入數據hbase

能夠單條導入就能夠批量導入
配置 thrift
python使用的包 thrift
個人使用的python 編譯器是pycharm community edition. 在工程中設置中,找到project interpreter, 在相應的工程下,找到package,然後選擇 「+」 添加, 搜索 hbase-thrift (Python client for HBase Thrift interface),然後安裝包。
安裝伺服器端thrift。
參考官網,同時也可以在本機上安裝以終端使用。
thrift Getting Started
也可以參考安裝方法 python 調用HBase 範例
首先,安裝thrift
下載thrift,這里,我用的是thrift-0.7.0-dev.tar.gz 這個版本
tar xzf thrift-0.7.0-dev.tar.gz
cd thrift-0.7.0-dev
sudo ./configure –with-cpp=no –with-ruby=no
sudo make
sudo make install
然後,到HBase的源碼包里,找到
src/main/resources/org/apache/hadoop/hbase/thrift/
執行
thrift –gen py Hbase.thrift
mv gen-py/hbase/ /usr/lib/python2.4/site-packages/ (根據python版本可能有不同)
獲取數據示例 1
# coding:utf-8

from thrift import Thrift
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
from hbase import Hbase
# from hbase.ttypes import ColumnDescriptor, Mutation, BatchMutation
from hbase.ttypes import *

import csv

def client_conn():
# Make socket
transport = TSocket.TSocket('hostname,like:localhost', port)
# Buffering is critical. Raw sockets are very slow
transport = TTransport.TBufferedTransport(transport)
# Wrap in a protocol
protocol = TBinaryProtocol.TBinaryProtocol(transport)
# Create a client to use the protocol encoder
client = Hbase.Client(protocol)
# Connect!
transport.open()
return client

if __name__ == "__main__":

client = client_conn()

# r = client.getRowWithColumns('table name', 'row name', ['column name'])
# print(r[0].columns.get('column name')), type((r[0].columns.get('column name')))

result = client.getRow("table name","row name")
data_simple =[]

# print result[0].columns.items()

for k, v in result[0].columns.items(): #.keys()
#data.append((k,v))
# print type(k),type(v),v.value,,v.timestamp
data_simple.append((v.timestamp, v.value))

writer.writerows(data)
csvfile.close()

csvfile_simple = open("data_xy_simple.csv", "wb")
writer_simple = csv.writer(csvfile_simple)
writer_simple.writerow(["timestamp", "value"])
writer_simple.writerows(data_simple)
csvfile_simple.close()

print "finished"

會基礎的python應該知道result是個list,result[0].columns.items()是一個dict 的鍵值對。可以查詢相關資料。或者通過輸出變數,觀察變數的值與類型。
說明:上面程序中 transport.open()進行鏈接,在執行完後,還需要斷開transport.close()
目前只涉及到讀數據,之後還會繼續更新其他dbase操作。

『陸』 如何編譯Flume-NG源碼之最新1.5.2版本

方法

源碼下載
http://www.neoye.com/3446.html apache-flume-1.5.2-src.tar.gz
解壓至C盤根目錄
建議放到C盤根目錄中,測試時我是放到這里,其它目錄不保證可以順利通過,可參考測試。
運行mvn
進入c:\apache-flume-1.5.2目錄,運行mvn install -DskipTests -Dtar注意:網上有其它參考材料說要先將注釋掉hbase和hadoop-test相關的依賴,我沒這樣做,沒問題。
可能根據環境不同有差異。不過大家遇到與hbase和hadoop-test相關的錯誤可以進行參考更正。
部分代碼參考
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase</artifactId>
<version>${hbase.version}</version>
<classifier>tests</classifier>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-test</artifactId>
<version>${hadoop.version}</version>
</dependency>
典型問題1處理[重點]
1、error reading error in opening zip file
[ERROR] error: error reading
/org/elasticsearch/elasticsearch/0.90.1/elasticsearch-0.90.1.jar;
error in opening zip file
[ERROR] -> [Help 1]
出現這個錯誤可能是已經下載的這個jar存在問題。到本地庫中找到對應的jar所在位置,然後將其刪除,重新運行mvn命令可解決。以上這個錯誤不一定是elasticsearch的jar找不到,其他jar也可能出現這個問題。
典型問題2處理[重點]
flume-ng-morphline-solr-sink出現問題,對應的kite-morphline沒有找到依賴。要使用這個flume-ng-morphline-solr-sink做些文章的,所以這里出問題必須解決。
[ERROR] Failed to execute goal on project flume-ng-morphline-solr-sink: Could no
t resolve dependencies for project org.apache.flume.flume-ng-sinks:flume-ng-morp
hline-solr-sink:jar:1.5.2: Failed to collect dependencies for [org.apache.flume:
flume-ng-core:jar:1.5.2 (compile), org.slf4j:slf4j-api:jar:1.6.1 (compile), org.
kitesdk:kite-morphlines-all:pom:0.12.0 (compile?), org.slf4j:jcl-over-slf4j:jar:
1.6.1 (provided), org.apache.solr:solr-test-framework:jar:4.3.0 (test), org.kite
sdk:kite-morphlines-solr-core:jar:tests:0.12.0 (test), junit:junit:jar:4.10 (tes
t)]: Failed to read artifact descriptor for org.kitesdk:kite-morphlines-all:pom:
0.12.0: Could not transfer artifact org.kitesdk:kite-morphlines-all:pom:0.12.0 f
rom/to cdh.repo (https://repository.cloudera.com/artifactory/cloudera-repos): Co
nnection to https://repository.cloudera.com refused: Connection timed out: conne
ct -> [Help 1]
提示的錯誤是連接cloudera的中央庫超時了,看似是網路問題。其實解決了網路問題還有另外一個重大問題就是版本對應不上。查看了一下flume-ng-morphline-solr-sink的pom.xml文件,對應查找的kite.version是0.12.0版本。但其實cloudera的中央庫上也沒有這個版本了。所以解決辦法是: A、將kite.version的版本改成0.15.0.修改進入源碼根目錄找到pom.xml文件,找到<kite.version>0.15.0</kite.version>將0.12.0修改成0.15.0 B、找到<dependenciesManagement>標簽,將下面代碼插入到dependency中。
<dependency>
<groupId>org.kitesdk</groupId>
<artifactId>kite-morphlines-all</artifactId>
<version>${kite.version}</version>
<exclusions>
<exclusion>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
</exclusion>
</exclusions>
<type>pom</type>
<optional>true</optional>
</dependency>
C:\apache-flume-1.5.2-src\flume-ng-sinks\flume-ng-morphline-solr-sink目錄,打開pom.xml文件,將所有${kite.version}替換成0.15.0。上一步的目的是如果工程引用了org.kitesdk的話,則不使用這個版本。可以自定義其引用的版本。我在實際應用中就遇到了這兩個主要的問題。當然其中還有一些主要是repository連接不上的問題(公司比較爛,網路有限制)。想各種辦法從網上先down下來再上傳到私服解決。最後提示」Build Success」編譯成功了,見下圖。

編譯成eclipse工程
mvn eclipse:eclipse至此,使用eclipse導入工程即可進行開發了。
我這里還遇到了兩個flume-dataset-sink的單體測試中有一個方法編譯不過去的問題。因為我沒用到這個sink所以也沒去解決。另一個問題是可能在install時可能會遇到Missing artifact jdk.tools:jdk.tools:jar:1.6的問題。
解決辦法:在flume-ng-morphline-solr-sink的pom.xml文件中添加一個依賴。
<dependency>
<groupId>jdk.tools</groupId>
<artifactId>jdk.tools</artifactId>
<version>1.7</version>
<scope>system</scope>
<systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
</dependency>
至於jdk的版本和系統路徑根據實際的開發環境的環境變數而定,其他都沒問題。

『柒』 hbase的特點

hbase的特點:高可靠性、高性能、面向列、可伸縮的。

HBase – Hadoop Database,是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統,利用HBase技術可在廉價PC Server上搭建起大規模結構化存儲集群。

HBase是Apache的Hadoop項目的子項目。HBase不同於一般的關系資料庫,它是一個適合於非結構化數據存儲的資料庫。另一個不同的是HBase基於列的而不是基於行的模式。

(7)hbase源碼編譯擴展閱讀

訪問介面:

1. Native Java API,最常規和高效的訪問方式,適合Hadoop MapRece Job並行批處理HBase表數據

2. HBase Shell,HBase的命令行工具,最簡單的介面,適合HBase管理使用

3. Thrift Gateway,利用Thrift序列化技術,支持C++,PHP,Python等多種語言,適合其他異構系統在線訪問HBase表數據

4. REST Gateway,支持REST 風格的Http API訪問HBase, 解除了語言限制

5. Pig,可以使用Pig Latin流式編程語言來操作HBase中的數據,和Hive類似,本質最終也是編譯成MapRece Job來處理HBase表數據,適合做數據統計。

『捌』 hbase 源碼 什麼語言開發的

是用java開發的,hbase包含兩個核心服務,一個是HMaster,一個是HRegionServer,在hbase部署的伺服器上調用jps命令能查看到這兩個進程。

『玖』 hbase源代碼 純java開發的嗎

是的,純java開發的nosql

『拾』 Linux:eclipse上如何導入hbase-1.x源碼

hbase源碼導入eclipse分三步:
1.svn下載源碼
2.mvn package -Dmaven.test.skip.exec=true編譯源碼
3.導入eclipse,可以用插件,用mvn eclipse:eclipse生成eclipse文件,導入eclipse。

熱點內容
js壓縮base64 發布:2025-04-22 19:29:53 瀏覽:197
颶風加密工具 發布:2025-04-22 19:27:50 瀏覽:638
發票江蘇伺服器地址 發布:2025-04-22 19:21:29 瀏覽:32
編譯器路徑錯誤 發布:2025-04-22 18:53:30 瀏覽:37
王者榮耀伺服器地址被屏蔽 發布:2025-04-22 18:46:25 瀏覽:636
光遇的安卓和蘋果有什麼區別 發布:2025-04-22 18:46:23 瀏覽:419
b編譯執行 發布:2025-04-22 18:44:13 瀏覽:456
怎麼打開ftp服務 發布:2025-04-22 18:34:42 瀏覽:149
二級密碼什麼時候自動消失 發布:2025-04-22 18:32:57 瀏覽:383
python3withopen 發布:2025-04-22 18:27:57 瀏覽:682