2012年10月16日 星期二

趁熱記下來之安裝動物管理員



前言

hbase-0.9X之後叢集的hbase安裝已經可以用hbase自帶(內建)的zookeeper,不必用獨立型的,安裝學習也比較簡單一點。
以上感謝對岸阿六弟兄的技術支援,雖然我不知道你們是從哪裡知道這些撇步的,但是我感謝你們。
他媽的獨立安裝版害我浪費了一堆時間,去你的。You're terminated!

環境

我是在win7中使用vmware station中裝ubuntu,硬碟檔在這....連結

實作

[步驟一]

修改$HBASE_HOME/conf/hbase-env.sh,要修改HBASE_MANAGES_ZK這屬性
這屬性設為true時,就是用hbase自帶的zookeeper,不需要另外下載zookeeper的安裝檔。反之設為false時就是用另外下載zookeeper的安裝檔見下圖

hbase-site.xml請見下圖

hbase-site.xml修改完後複製到每個節點的$HBASE_HOME/conf以及$HADOOP_HOME/conf中。


[步驟二]

$HBASE_HOME/conf新增一個zoo.cfg檔案,這檔案原來是在獨立的zookeeper安裝檔中的,hbase中也可以使用,自帶版的zookeeper設定可以都寫在$HBASE_HOME/conf/hbase-site.xml中,也可以使用zoo.cfg來配置,而且zoo.cfg的優先程度比hbase-site.xml高,這篇我採用後者。
zoo.cfg檔案的內容如下:

google上面都可以找的到設定檔中的介紹,這裡不多說明了。
以上編寫完後把zoo.cfg複製一份到每一個節點$HBASE_HOME/conf之下。


[步驟三]


採用自帶版的好處是myid這檔案會自動建立在你在zoo.cfg中所指定的dataDir中,還有啟動hbase時就順道啟動了regionserver,不用在每一台機器中去zkServer.sh start,多方便啊!
以上都完成後就照正常程序先啟動hadoop再啟動hbase,jps你會看到以下的畫面。



[步驟三]

都啟動後可以用這一篇的code來測試看看hbase是否正常。


2012年10月14日 星期日

借花獻佛Hbase&MapReduce

前言

學了一個新技術誰不會手癢想要試試看這技術到底能做成啥東西?有一天拜神時不小心看到新竹某某晶圓大廠的教育訓練課程ppt, 很興奮得跟著內容一路實作下去, 結果發現裡面缺東缺西的, 甚至有些寫法會有問題(在我的環境上面), 所以小弟又冒著爆肝眼瞎掉髮禿肚子還有球賽沒看完的風險, 慢慢的拼湊出這片地圖, 僅分享給看到這篇網誌的人

PS:如果那一間某某晶圓大廠的人看到了, 覺得不爽我把你們的東西寫在blog上面請跟我說一聲, 我馬上拿掉

此時的我是邊看lamigo對統一的GAME2邊寫blog, 如果有點語無倫次請多多見諒........XD

環境

這篇一樣
我的版本搭配是hadoop-1.0.3+hbase-0.94.1

載點

這一個連結裡面有我整理的code以及要用的txt檔(先假裝這是log檔)
code.tar.gz解壓縮後的mystore裡面有三個java檔(CreateTable.java, StoreCount.java, StoreSum.java)
兩個txt檔(info.txt, sales.txt)


解釋一下這三個class是作啥事情,
CreateTable是在Hbase中新增一個store的table,並且讀取本機的檔案(info.txt)把商店名稱寫入Detail:Name,商店的位置寫入Detail:Locate, 賣的產品以及價格寫入Products:P1 Products:P2 Products:P3 Products:P4

StoreCount是把消費紀錄(sales.txt)從HDFS中寫入Turnover中,會對應到商店跟產品代號 

StoreSum是把每一間店的銷售紀錄做加總寫入Sum中

實作

這篇的最終目標是利用hbase java api逐步在Hbase中建立一個商店銷售紀錄的table,以下是最後會產生的圖(hbase shell不是長成這樣的)
table:store
Row\key Detail Products Turnover
Name Locate P1 P2 P3 P4 P1 P2 P3 P4 Sum
T01 GunLong 01 20 30 40 50 1 1 1
90
T02 Esing 02 50


2


100
T03 SunDon 03 40 30

1 1

70
T04 StarBucks 04 50 50 20
2 1 1
170

terminal中是像下圖這樣的

由於我在eclipse中執行起來會有問題, 所以我都是在eclipse中寫完後把code打包成jar檔, 不喜歡這樣做的人請慢走, 不送了
並免篇幅過長我也不把code貼在網誌中了,只用指令執行jar檔以及秀出hbase shell執行後的結果 

[步驟一]

code.tar.gz下載後放在家目錄下面解壓縮, 我習慣先在code資料夾中mkdir src, 我會把compile後的.class都放在src中
(這些都是我自己的習慣, 不是必要的操作, 可以依照個人習慣來執行)


再來把.java檔compile成.class檔在包成一個jar檔, 我是覺得這樣比較方便啦, 因為在用hadoop jar執行時只要改一個帶有main method的class名稱就好了

指令如下:
javac -classpath hadoop-1.0.3/hadoop-core-1.0.3.jar:hadoop-1.0.3/lib/hbase-0.94.1.jar -d code/src code/mystore/CreateTable.java

javac -classpath hadoop-1.0.3/hadoop-core-1.0.3.jar:hadoop-1.0.3/lib/hbase-0.94.1.jar -d code/src code/mystore/StoreCount.java

javac -classpath hadoop-1.0.3/hadoop-core-1.0.3.jar:hadoop-1.0.3/lib/hbase-0.94.1.jar -d code/src code/mystore/StoreSum.java

jar -cvf code/mystore.jar -C code/src .


此時你的code底下就產生了一個mystore.jar


[步驟二]

這一個步驟我要建立一個table名叫"store"並且讀取存放在本機的txt檔(info.txt)寫入hbase
指令請下 hadoop jar code/mystore.jar CreateTable store code/info.txt
執行完後你會看到terminal中跟你說"create table store ok"



這時到hbase中用scan 'store'看看
(實況轉播:幹 高國慶給我在八局下扛出兩分炮, 你娘的哩)

都照著info.txt寫進去了, 此時的table就是像以下這樣
table:store
Row\key Detail Products Turnover
Name Locate P1 P2 P3 P4 P1 P2 P3 P4 Sum
T01 GunLong 01 20 30 40 50




T02 Esing 02 50







T03 SunDon 03 40 30






T04 StarBucks 04 50 50 20








[步驟三]

這一個步驟我要從HDFS中讀取寫進去store
先把sales.txt傳到HDFS中, 以下是我自己定的目錄, 可以放在自己喜歡的地方啦

再來執行以下這個指令
hadoop jar code/mystore.jar StoreCount store /hduser/store/input

跑完之後在用scan 'store'來檢查一下


Turnover這一個family column都按照著sales.txt有了value, 這時的table會像下圖這樣
table:store
Row\key Detail Products Turnover
Name Locate P1 P2 P3 P4 P1 P2 P3 P4 Sum
T01 GunLong 01 20 30 40 50 1 1 1

T02 Esing 02 50


2



T03 SunDon 03 40 30

1 1


T04 StarBucks 04 50 50 20
2 1 1


[步驟三]

這一個步驟我要把Turnover:Sum填入消費紀錄的加總, 指令請下hadoop jar code/mystore.jarStoreSum store

執行完後也用scan 'store'檢查看看

可以看看T1的Sum是20*1+30*1+40*1=90 T2的Sum是50*2=100......
此時的 table就像下圖這樣了, 這就是這篇網誌最後的成果了

table:store
Row\key Detail Products Turnover
Name Locate P1 P2 P3 P4 P1 P2 P3 P4 Sum
T01 GunLong 01 20 30 40 50 1 1 1
90
T02 Esing 02 50


2


100
T03 SunDon 03 40 30

1 1

70
T04 StarBucks 04 50 50 20
2 1 1
170

寫到這裡lamigo 6:4 贏了

2012年10月9日 星期二

佛心來著之ubuntu 12.04 vmdk硬碟檔

前言

苦無Linux環境嗎?想要立馬有一個嗎?來~~歐巴送給你XD
這一個vmdk檔裡面裝載著ubuntu 12.04 LTS,年底年終慶加送三個lxc,虛擬網路都安裝設定好了,jdk也裝好了,環境變數也設定好了,hadoop,hbase,zookeeper,hive都搞定了,只要一個bash script指令,三台虛擬電腦就啟動了,馬上可以搞出一個完全分散的hadoop遊玩天堂。搞爛了就刪掉再重新掛硬碟檔進去,又是一個乾乾淨淨的Linux環境了。


環境

windows7 + vmware player(或是vmware station)
解壓縮後大約有10G,我設定給4G的RAM,服用的本帖的客官請注意了!


載點

VMDK

20121018更新硬碟檔,加入hbase,zookeeper,hive,eclipse。測試過hive跟hbase可以互通。

使用方法

相信各位都會用vmware去開硬碟檔吧,這邊就不教學了。
啟動系統後(密碼猜猜看吧,猜不到再問我吧,各位同事應該都知道我是誰吧XD),請開啟terminal,cd iLXC,再輸入sudo ./startLxc conf/lxc.xml~~請見下圖。

看到成功啟動LXC251 LXC252 LXC253就是代表OK了。
也可以網路測通看看,這三台以及本機的IP分別為
LXC251:192.168.200.51
LXC251:192.168.200.52
LXC251:192.168.200.53
HOST OS:10.0.3.1

我在shell中啟動這三台是用背景執行的方式,如果想要進到這三台系統中請另外開一個terminal(crtl+alt+t),輸入sudo lxc-console -n LXC251,會出現下圖的畫面

帳號是hduser,密碼請問我。其他兩台以此類推。
如果不喜歡這個帳密的人可以自己改,這篇裡面有教學,也可以google。

有個小撇步可以參考看看,要開很多terminal時避免畫面凌亂,可以在terminal左上方按下"檔案"-->"開啟分頁",再ssh到你想要的vm裡面,如下圖。