업로드 #

Windows의 파일을 HDFS로 업로드
curl -i -X PUT -L -T "c:\temp\list.txt" "http://webhdfs:50070/webhdfs/v1/user/hive/warehouse/gamelog/list.txt?op=CREATE&user.name=hdfs&overwrite=true"

상황1 #

cluster1에는 1시간마다 파일명을 바꾸어 가면서 데이터가 쌓인다.
webhdfs를 이용하여 10분마다 추가된 데이터를 가져오고 싶다.

hdfs에 /tmp/test.txt의 t1 시점의 데이터
{"id":1,"nm":"aaa"}
{"id":2,"nm":"aaaa"}
{"id":3,"nm":"aaaaa"}
{"id":4,"nm":"aaaa"}
{"id":5,"nm":"aaaaa"}
{"id":6,"nm":"aaa"}
{"id":7,"nm":"aaa"}
{"id":8,"nm":"aa"}
{"id":9,"nm":"a"}
{"id":10,"nm":"aa"}
t1 시점에는 203 byte였다.

hdfs에 /tmp/test.txt의 t2 시점의 데이터
{"id":1,"nm":"aaa"}
{"id":2,"nm":"aaaa"}
{"id":3,"nm":"aaaaa"}
{"id":4,"nm":"aaaa"}
{"id":5,"nm":"aaaaa"}
{"id":6,"nm":"aaa"}
{"id":7,"nm":"aaa"}
{"id":8,"nm":"aa"}
{"id":9,"nm":"a"}
{"id":10,"nm":"aa"}
{"id":11,"nm":"aa"} ---> 여기부터 추가되었다. 
{"id":12,"nm":"aa"}
{"id":13,"nm":"aa"}

solution
offset을 사용하면 된다.

t1 시점
wget "http://192.168.0.10:50070/webhdfs/v1/tmp/test.txt?op=OPEN&offset=0" -O test1.txt

t2 시점
wget "http://192.168.0.10:50070/webhdfs/v1/tmp/test.txt?op=OPEN&offset=204" -O test2.txt

hadoop metadata가 정확해야 한다.