1. Start a TCP listening Server on 192.168.0.7:5002,
and cast received info to HBase Shell
start_colleciton.sh
while true;
do nc -l 192.168.0.7 5002
done | hbase shell
do nc -l 192.168.0.7 5002
done | hbase shell
[程式意義]
nc -l : 會在 IP:192.168.0.7 開啟一個 port:5002,來 listen 任何發送到此 port的TCP封包,
(若使用 nc -lu 則是 listen UDP 封包)
while true; ... do ... done : 因為TCP處理一次後就會關掉,必須加上此指令來持續接收,
| hbase shell : 將 nc 指令 listen到的訊息(HBase Shell Operations) 丟給 hbase shell做
--------------------------------------------------------------------------------------------------------------------
2. Send Info to Server
tcollector.sh
#!/bin/bash
set -e
while true;
do awk -v now=`date +%s` \
'{ print "put " $1", " now", " $2", " $3}' HBase_Info
sleep 15
done | nc -w 30 192.168.0.7 5002
set -e
while true;
do awk -v now=`date +%s` \
'{ print "put " $1", " now", " $2", " $3}' HBase_Info
sleep 15
done | nc -w 30 192.168.0.7 5002
[程式意義]
set -e : 檢查 pipe執行( | ) 如果其中有例外則結束整個 pipe
awk -v now=`date +%s` \
'{ print "put " $1", " now", " $2", " $3}' HBase_Info
- 設定變數 now 為現在時間(date+%s ==> 取到秒)
- 將HBase_Info 此檔案內容一行一行讀出,
第一欄為 $1= 'hiveTableonHB'
第二欄為 $2= 'cf:time'
第三欄為 $3= 'test'
nc -w 30 192.168.0.7 5002 : 將上述awk 指令中 print 的 內容傳送到 192.168.0.7:5002上
HBase_Info
'hiveTableonHB' 'cf:time' 'test'
--------------------------------------------------------------------------------------------------------------------
[RESULT]
1.8.7-p357 :004 > scan 'hiveTableonHB'
ROW COLUMN+CELL
1413177758 column=cf:time, timestamp=1413177976111, value=test
1413180302 column=cf:time, timestamp=1413180310949, value=test
1413180317 column=cf:time, timestamp=1413180324753, value=test
6 row(s) in 0.0270 seconds
沒有留言:
張貼留言