| 1 | = 十一月分計畫 = |
| 2 | |
| 3 | * [wiki:drbl&hadoop drbl + hadoop 工作紀要] |
| 4 | |
| 5 | = 十月份 工作計畫 = |
| 6 | 1. 計畫書兩份 |
| 7 | 2. 繼續完成九月份預計目標 |
| 8 | |
| 9 | * WebProtal |
| 10 | |
| 11 | = 九月份 工作計畫 = |
| 12 | == 預計目標 == |
| 13 | |
| 14 | '''實作一個IDS Alert Analysis Protal ''' |
| 15 | i. 使用terminal取代Elipse來執行M/R |
| 16 | ii. 要能在網頁上取出hbase的欄位內容 |
| 17 | iii. 要讓web去驅動java的程式(目前鎖定java applet) |
| 18 | iv. 設計最後呈現的結果,讓使用者可以一目瞭然的看結果報告 |
| 19 | v. 多個不同row key 的table |
| 20 | vi. 升級原本的版本->Hadoop 0.18.1(9/17) & HBase 0.2.0(9/1) |
| 21 | vii. 最佳化Map/Reduce 程式碼 |
| 22 | (按照順序完成) |
| 23 | |
| 24 | ps: [http://discoproject.org/ 新的mapReduce平台:Disco ] |
| 25 | |
| 26 | == 工作日誌 == |
| 27 | '''i. 解一:搭配classpath 呼叫''' |
| 28 | 編輯一個shell,內容為 |
| 29 | {{{ |
| 30 | #!/bin/bash |
| 31 | LIB=/opt/lib |
| 32 | HADOOP_HOME=/opt/hadoop |
| 33 | CLASSPATH=\ |
| 34 | $HADOOP_HOME/:$HADOOP_HOME/conf/:$LIB/commons-cli-2.0-SNAPSHOT.jar:$LIB/commons-codec-1.3.jar:\ |
| 35 | $LIB/commons-collections-3.2.jar:$LIB/commons-logging-1.0.4.jar:$LIB/commons-logging-api-1.0.4.jar:$LIB/commons-httpclient-3.0.1.jar:\ |
| 36 | $LIB/commons-math-1.1.jar:$LIB/hadoop-0.16.4-core.jar:$LIB/hbase-0.1.3.jar:$LIB/libthrift-r746.jar:$LIB/log4j-1.2.13.jar:\ |
| 37 | $LIB/lucene-core-2.2.0.jar:$LIB/jets3t-0.5.0.jar:$LIB/jetty-5.1.4.jar:$LIB/junit-3.8.1.jar:$LIB/jline-0.9.91.jar:$LIB/kfs-0.1.jar:\ |
| 38 | $LIB/servlet-api.jar:$LIB/xmlenc-0.52.jar:\. |
| 39 | # echo $CLASSPATH |
| 40 | javac -classpath $CLASSPATH ./SnortBase.java |
| 41 | java -cp $CLASSPATH SnortBase |
| 42 | }}} |
| 43 | 注意:其中的CLASSPATH是關鍵,除了要將上述所提到的jar檔都匯入外(run_time時產生java.lang.ClassNotFoundException等error),還有$hadoop_home、$hadoop/conf 都要包含才行(產生連結不到的情形如 ipc.Client: Retrying connect to server: ...) |
| 44 | |
| 45 | '''i. 解二:包成jar 檔呼叫''' |
| 46 | |
| 47 | 1. 設定好hadoop使之能在eclipse 上run ,下載[https://trac.nchc.org.tw/cloud/attachment/wiki/waue/Hadoop_on_Command.zip Hadoop_on_Command.zip]並解開於$HADOOP_HOME |
| 48 | 2. 執行以下指令: |
| 49 | {{{ |
| 50 | $ cd $HADOOP_HOME |
| 51 | $ mkdir EchoOhce_classes |
| 52 | $ javac -classpath $HADOOP_HOME/hadoop-0.16.4-core.jar -d EchoOhce_classes EchoOhce.java |
| 53 | $ jar -cvf EchoOhce.jar -C EchoOhce_classes/ . |
| 54 | $ bin/hadoop jar EchoOhce.jar com.javaworld.mapreduce.EchoOhce words result |
| 55 | }}} |
| 56 | 執行狀態: |
| 57 | {{{ |
| 58 | 08/09/23 17:36:42 INFO mapred.FileInputFormat: Total input paths to process : 3 |
| 59 | 08/09/23 17:36:42 INFO mapred.JobClient: Running job: job_200809231722_0001 |
| 60 | 08/09/23 17:36:43 INFO mapred.JobClient: map 0% reduce 0% |
| 61 | 08/09/23 17:36:46 INFO mapred.JobClient: map 66% reduce 0% |
| 62 | 08/09/23 17:36:48 INFO mapred.JobClient: map 100% reduce 0% |
| 63 | 08/09/23 17:36:55 INFO mapred.JobClient: map 100% reduce 100% |
| 64 | }}} |
| 65 | 3. 檢視結果 |
| 66 | {{{ |
| 67 | $ bin/hadoop dfs -ls result/part-00000 |
| 68 | }}} |
| 69 | 4. 結論: |
| 70 | 此方法需要重新改寫原本有的程式碼如EchoOhce.java的架構 |
| 71 | |
| 72 | '''i. 解三:hadoop-streaming 支援多種語言法''' |
| 73 | |
| 74 | 用 hadoop-streaming.jar 可達到多種程式語言的mapReduce (以php舉例), |
| 75 | 此為參考[http://www.hadoop.tw/2008/09/php-hadoop.html Hadoop Taiwan User Group] |
| 76 | 1. apt-get install php5-cli |
| 77 | 2. 將mapper.php 與 reducer.php 的程式內容填入並改權限755 |
| 78 | 3. 可以使用以下指令測試程式是否能動: |
| 79 | {{{ |
| 80 | $ echo "i love hadoop, hadoop love u" | ./mapper.php | ./reducer.php |
| 81 | }}} |
| 82 | 4. 將input 的內容上傳到hdfs |
| 83 | {{{ |
| 84 | $ bin/hadoop dfs -put input input |
| 85 | }}} |
| 86 | 5. 執行hadoop stream指令 |
| 87 | 務必注意除了input、ouput可以不用給絕對路徑之外,其他參數都需要給絕對路徑,否則會出錯 |
| 88 | {{{ |
| 89 | $ hadoop jar /opt/hadoop-streaming.jar -mapper /opt/mapper.php -reducer /opt/reducer.php -input input -output out |
| 90 | }}} |
| 91 | 6. 結論:此方法較為方便,也可以不用改之前的code,將mapper.php與reducer.php改成之前編譯出來的java class檔即可 |
| 92 | (已測試若為內部類別則失敗) |
| 93 | |
| 94 | === 9/1~9/19 === |
| 95 | * 論文趕工 |
| 96 | * [wiki:ExperimentHpc-Asia 數據收集、實驗方法] |
| 97 | {{{ |
| 98 | creatTable(tableName); |
| 99 | Long start_time = (new Date()).getTime(); |
| 100 | runMapReduce(tableName, path); |
| 101 | Long end_time = (new Date()).getTime(); |
| 102 | System.out.println(end_time - start_time); |
| 103 | }}} |
| 104 | * 文章改寫 |
| 105 | |
| 106 | = 八月份 工作計畫 = |
| 107 | * [wiki:Paper 論文投稿] |
| 108 | * [目標]map-reduce 程式設計 & 範例教學 & paper : IDS with Cloud Computing |
| 109 | * [第三階段] 寫論文(8/25) |
| 110 | * [第二階段] 瞭解snort資料庫欄位規劃(7/31)-> 規劃Hbase資料庫欄位(8/8)-> "運行程式並紀錄數據" (8/16) -> 比較 snort in mysql & snort in hbase 的效能 (8/20) |
| 111 | * [第一階段] 瞭解apache log parser (7/8完成) -> 修改regular expression (7/15完成) -> 實做parser程式 (7/21完成) -> 實做上傳程式(7/25完成) |
| 112 | == 工作日誌 == |
| 113 | * [wiki:ExperimentLog 分析資料表單設計] |
| 114 | ==== 實驗組 : Cloud compute ==== |
| 115 | 1. 修改 /etc/snort/snort.conf |
| 116 | |
| 117 | {{{ |
| 118 | var HOME_NET any |
| 119 | var EXTERNAL_NET !$HOME_NET |
| 120 | }}} |
| 121 | |
| 122 | 2. 紀錄警訊 |
| 123 | |
| 124 | > |
| 125 | > $ sudo snort -c /etc/snort/snort.conf -i eth0 |
| 126 | |
| 127 | > $ sudo tcpreplay -i eth0 --topspeed /home/waue/sp1.tcpdump |
| 128 | > |
| 129 | |
| 130 | 3. 分析格式、載入雲端 |
| 131 | |
| 132 | * 用一般java application 於 local 運行 SnortParser.java |
| 133 | * 修改main的輸入輸出參數 |
| 134 | {{{ |
| 135 | String in = new String("/home/waue/Desktop/alert_flex.txt"); |
| 136 | String ou = new String("/home/waue/Desktop/alert_flex_parsed.txt"); |
| 137 | }}} |
| 138 | |
| 139 | * 載入雲端 |
| 140 | |
| 141 | > |
| 142 | > $ cd /dir/hadoop |
| 143 | |
| 144 | > $ bin/hadoop dfs -put snort-log/ snort-log/ |
| 145 | > |
| 146 | |
| 147 | 4. 運行並紀錄雲端運算時間 |
| 148 | |
| 149 | |
| 150 | 9.091 |
| 151 | |
| 152 | ==== 對照組:mysql database ==== |
| 153 | 1. 修改 /etc/snort/snort.conf |
| 154 | {{{ |
| 155 | var HOME_NET any |
| 156 | var EXTERNAL_NET !$HOME_NET |
| 157 | output database: log, mysql, user=snort password=snort dbname=snort host=localhost |
| 158 | }}} |
| 159 | |
| 160 | 2. 修改程式碼 |
| 161 | |
| 162 | * mo -> accident_ticket |
| 163 | |
| 164 | * 換 NewSnortSOCTable.sql -> snort |
| 165 | |
| 166 | 3. 紀錄警訊 |
| 167 | > |
| 168 | > $ sudo snort -c /etc/snort/snort.conf -i eth0 |
| 169 | |
| 170 | > $ sudo tcpreplay -i eth0 --topspeed /home/waue/sp1.tcpdump |
| 171 | > |
| 172 | |
| 173 | 4. 紀錄mysql運算時間 |
| 174 | {{{ |
| 175 | $ php ./main_uv.php |
| 176 | |
| 177 | |
| 178 | Run :15.7033398151 seconds |
| 179 | }}} |
| 180 | === 7/30~ 7/31 === |
| 181 | * nchc ca |
| 182 | === 7/29 === |
| 183 | * 解決 nchc ca mail 問題... |
| 184 | === 7/25 === |
| 185 | * [http://trac.nchc.org.tw/cloud/browser/sample/hadoop-0.16/tw/org/nchc/code/SnortBase.java SnortBase.java] is complete. |
| 186 | * snort log -> Hbase 的上傳程式已經完成,接下來需規劃 pure log 的資料庫結構 以及 event 的資料結構 |
| 187 | === 7/24 === |
| 188 | * !SnortBase.java 已經完成,但無法運作,還需debug ... XD |
| 189 | |
| 190 | === 7/23 === |
| 191 | |
| 192 | * [http://trac.nchc.org.tw/cloud/browser/sample/hadoop-0.16/tw/org/nchc/code/SnortUploadHbase.java SnortUploadHbase.java] |
| 193 | * 除錯 [http://trac.nchc.org.tw/cloud/browser/svnupload.sh 自動上傳檔案到svn的shell 程式 ] (原本無法遞迴處理資料夾內資料) |
| 194 | === 7/22 === |
| 195 | * 整理 svn tree (移除沒有意義的class檔) |
| 196 | * 更新我 [http://trac.nchc.org.tw/cloud/browser/svnupload.sh 自動上傳檔案到svn的shell 程式 ] |
| 197 | |
| 198 | === 7/21 === |
| 199 | [http://trac.nchc.org.tw/cloud/browser/sample/hadoop-0.16/tw/org/nchc/code/SnortParser.java SnortParser.java] is complete. |
| 200 | === 7/14-15 === |
| 201 | [wiki:RegularExp 用正規表示法解析 snort 警訊] |
| 202 | === 7/11 === |
| 203 | [wiki:SnortMysqlUbuntu 安裝snort -> mysql in Ubuntu] |
| 204 | === 7/10 === |
| 205 | [wiki:Generic 泛型(generic)] |
| 206 | === 7/9 === |
| 207 | 讀書會報告 [http://trac.nchc.org.tw/grid/attachment/wiki/Reading/map_reduce.ppt 投影片] |
| 208 | === 7/4~8 === |
| 209 | * [wiki:LogParser] |
| 210 | === 7/3 === |
| 211 | * 用java 單獨跑 code ok,但用map-reduce方法跑會出錯: |
| 212 | * 原因:hbase 1.x 沒有支援到 hadoop 0.17 >"< (但hadoop 0.17會是hbase 2.0的requirement) |
| 213 | * 動機1:因為看到官方網頁API以版本0.17為首,google到的0.16 api連結失效(當時,現在是好的><),想說那就升級吧!反正式遲早的事 |
| 214 | * 動機2:官網說0.17改進很多bug,並提高很多效能,(但API也改不少,讓我整個專案要處理100多個error及60 多個warning) |
| 215 | * 努力改回 hadoop 0.16.4 + hbase 1.3 |
| 216 | === 7/2 === |
| 217 | * 完成改寫 hadoop 0.16.4 to 0.17.1 |
| 218 | * 遇到 hbase 1.3 無法使用 之前設定檔 運作的問題 |
| 219 | * 需要把hbase-site.xml 內的 |
| 220 | {{{ |
| 221 | <value>hdfs://localhost:9000/hbase</value> |
| 222 | }}} |
| 223 | 此行註解掉(感謝sunny) |
| 224 | |
| 225 | === 7/1 === |
| 226 | [wiki:HBaseRecordPro 用map reduce 分析文件並存入HBase] |
| 227 | * Upgrade map-reduce work platform from hadoop 0.16.4 to 0.17.1 |
| 228 | * hadoop.site.xml |
| 229 | * Eclipse -> include external jar |
| 230 | * [http://www.google.com.tw/url?sa=t&ct=res&cd=1&url=http%3A%2F%2Fdownloads.sourceforge.net%2Fjunit%2Fjunit-4.4.jar%3Fmodtime%3D1184865382%26big_mirror%3D0&ei=BPlpSIXCKpKOsAOZzLiLCw&usg=AFQjCNH2KzOX6Xk9tHk8XsctEQxvhCMm-g&sig2=4wDLYDLs-xt5tKDPXv6H4A junit 4] |
| 231 | * [https://sourceforge.net/project/showfiles.php?group_id=73840 jung2-alpha2] |
| 232 | * 寫一個Convert.java 用來轉換在hadoop 0.17被淘汰掉的 0.16 function |
| 233 | |
| 234 | = 六月份 工作計畫 = |
| 235 | == 預定目標 == |
| 236 | * [Running][5/28] map-reduce 程式設計 && reading "Thinking In JAVA " |
| 237 | * [Running][6/1] 找 map-reduce 相關應用範例 |
| 238 | * [Running][6/10][wiki:MR_manual Map Reduce 開發文件] |
| 239 | * [Planning] HBaseMyAdmin 開發 |
| 240 | * [Planning][has not yet started] nutch 應用範例 -> 索引硬碟資料 |
| 241 | * [Studing][6/1] paper : IDS in Grid OR Parallel |
| 242 | == 工作日誌 == |
| 243 | * [wiki:waue_june 六月份工作日誌] |
| 244 | === 6/30 === |
| 245 | * 完成 HBaseRecordPro.java |
| 246 | 還待最佳化 |
| 247 | === 6/19 === |
| 248 | * [http://gm5.nchc.org.tw/gears/ gears 專題網站] |
| 249 | === 6/16 === |
| 250 | * 預計投稿題目: |
| 251 | ids log parser in cloud computing |
| 252 | * 簡介: |
| 253 | 由於目前的網路攻擊日漸增多,也越凸顯入侵偵測系統的重要性,然而相對應的警訊日誌也相對增加,對系統管理者是另一種惡夢。傳統的作法是到每一台偵測系統去一一檢視其有無入侵或被攻擊的資訊,但此況日費時、勞心勞力;後來便發展有分散式日誌整合系統,將所有管轄內的警訊日誌全集中在一個資料庫內作整合,如此一來便有巨觀的檢視攻擊資訊,大大的增加管理的方便性與準確性(這是我之前的碩士論文);然而大量的資料集合起來處理和分析對系統而言是沈重且龐大的負擔,且在處理當中發生錯誤則白忙一場,還有當資料庫的資料越來越龐大時,搜尋和檢索都會成為問題,基於以上幾點,預計將分散式日誌整合系統加入雲端運算單元。[[BR]] |
| 254 | * 架構 |
| 255 | 基於以上幾點,預計將分散式日誌整合系統加入雲端運算單元[[BR]] |
| 256 | 1. map-reduce:簡化資料處理的複雜度[[BR]] |
| 257 | 2. distributed file system:增加資料處理的效率及穩定度[[BR]] |
| 258 | 3. big-table:提供高效率的資料庫讀取查詢 [[BR]] |
| 259 | |
| 260 | * contributions: |
| 261 | * 創新性:雲端運算算是很新的領域,有噱頭比較容易上 |
| 262 | * 廣泛性:領域跨及資安及分散式運算 |
| 263 | * 延展性:利用此題目當作一個雲端的運用,未來說不定可以以此延伸出更多有趣、完整的題目 |
| 264 | * 未來性:藉此題目鍊一下雲端運算的功,再向google、或yahoo提出幫他們育才,一來他們的工程師應該醉心於研究寫code,二來育才是我們中心的宗旨,因此若能合作,可開啟無限可能。....(終極目標啦!) |
| 265 | |
| 266 | ps : 明天要專心來弄gears! |
| 267 | |
| 268 | === 6/12 === |
| 269 | * 持續學習java 以及改寫map-reduce sample code |
| 270 | * 將目前手頭正在改寫的檔svn上來 |
| 271 | * eclipse 熱鍵篇總覽: |
| 272 | {{{ |
| 273 | Template:Alt + / |
| 274 | 程式碼自動排版:Ctrl+Shift+F |
| 275 | 將選取的文字註解起來:Ctrl+/ |
| 276 | 視景切換:Ctrl+F8 |
| 277 | 快速執行程式:Ctrl + F11 // for java |
| 278 | 自動匯入所需要的類別:Ctrl+Shift+O //java only |
| 279 | 查看使用類別的原始碼:Ctrl+滑鼠左鍵點擊 // java only |
| 280 | 最大化程序編輯窗口 : ctrl + m |
| 281 | 快迅定位類中的方法 : ctrl + o |
| 282 | 顯示打開的文件列表:ctrl+E |
| 283 | 全域搜索打開的文件:ctrl+shift+R |
| 284 | 打開java的所有class :ctrl+shift+T |
| 285 | 將選中的小寫轉換為大寫:CTRL+SHIFT+X |
| 286 | 將選中的大寫轉換為小寫:CTRL+SHIFT+Y |
| 287 | }}} |
| 288 | |
| 289 | === 6/11 === |
| 290 | * 開發map-reduce 程式碼,已完成:用map-reduce 方法開HBase table, 寫入資料, 運算字符 |
| 291 | === 6/6 === |
| 292 | |
| 293 | [wiki:hadoop_hbase_sample2 map-reduce with hbase sample code] 已解決之前的問題 |
| 294 | |
| 295 | * 程式說明 :將檔案中的資料用map-reduce方式餵入hbase |
| 296 | * 解決方法: |
| 297 | 由於檔案讀取時是以行為單位,因此大部分的sample code一行能parser的檔案一行只有兩個欄位,前面的欄位當key,後面的欄位當value,但我想並不是所有的應用都兩個欄位就可以,因此設計一parse三個欄位的程式。也因如此,從程式當中的取出的原始資料流為byte[] 格式,為了利用split()函數切割欄位的值需要把byte[]轉string ,parse 完後再將string 轉回byte[]。錯誤的關鍵在於,當byte[]轉string時用 Byte.toSring()函數,但後來測試發現此函數轉出來的皆為亂碼,亂碼在配合split()就會出現run time error了。故換成 String str = new String(byte);則可以轉出正常,之後string轉回byte則用String.getByte()即可。 |
| 298 | * 小發現 : |
| 299 | 可以用網頁查看hbase的job 程序 [http://localhost:60010] |
| 300 | === 6/5 === |
| 301 | 參觀電腦展 |
| 302 | === 6/4 === |
| 303 | 試寫一 [wiki:hadoop_hbase_error_sample2 map-reduce with hbase sample code] 但有錯誤 |
| 304 | 錯誤訊息如下: |
| 305 | {{{ |
| 306 | 08/06/04 18:03:21 INFO mapred.FileInputFormat: Total input paths to process : 1 |
| 307 | 08/06/04 18:03:22 INFO mapred.JobClient: Running job: job_200805291341_0019 |
| 308 | 08/06/04 18:03:23 INFO mapred.JobClient: map 0% reduce 0% |
| 309 | 08/06/04 18:03:28 INFO mapred.JobClient: map 100% reduce 0% |
| 310 | 08/06/04 18:03:36 INFO mapred.JobClient: Task Id : task_200805291341_0019_r_000000_0, Status : FAILED |
| 311 | java.lang.ArrayIndexOutOfBoundsException: 1 |
| 312 | at tw.org.nchc.demo.DemoHBaseSink$ReduceClass.reduce(DemoHBaseSink.java:63) |
| 313 | at tw.org.nchc.demo.DemoHBaseSink$ReduceClass.reduce(DemoHBaseSink.java:1) |
| 314 | at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:333) |
| 315 | at org.apache.hadoop.mapred.TaskTracker$Child.main(TaskTracker.java:2084) |
| 316 | }}} |
| 317 | |
| 318 | === 6/3 === |
| 319 | [wiki:hadoop_hbase_sample1 the sample code 1 : only hbase integration] |
| 320 | === 6/2 === |
| 321 | ''' Paper Work ''' [[br]] |
| 322 | 一直有個想法就是希望能夠在今年以前能寫篇paper來投稿,於是想想 組內發展與grid有關,而之前研究所學的是security, |
| 323 | 因此前一陣子找了些Intrusion Detection System vs Grid 相關的paper來看,今天便抽空來看一看 |
| 324 | * Towards a Grid-wide Intrusion Detection System |
| 325 | * from : Journal of Future Generation Computer Systems , 2007 |
| 326 | * A performance Based Grid intrusion detection system |
| 327 | * from : IEEE COMPSAC'05 |
| 328 | * Design and Evaluation of a Grid computing based architecture for integration heterogeneous IDSs |
| 329 | * from : GLOBECOM '07. IEEE |
| 330 | 大略看完這三篇,歸類了以下幾點: |
| 331 | * 既然有grid,就必定架構在globus之上,因此之間的資料傳輸使用gridFTP,試想是否將gridFTP換成速度更快更穩定的分散是磁碟系統,則效能是否能增加? |
| 332 | * sensor , parser 的單元雖然沒有明寫,但我想應該是用snort來作,免費效率又快又不斷更新 |
| 333 | * 也許是個common sense,但我覺得每篇的result僅秀出實驗結果但並沒有展現 IDS for Grid 誘人的優點為何? (偵測DDOS命中率?偵測出更多一般host ids無法偵測出的攻擊...) |
| 334 | * 要使整個grid有效率的運行必須要有好的dispatch Alg.,因此作這個題目的前提還是得熟悉globus的運作以及排班演算法(完全沒有經驗) |
| 335 | = 五月份 工作計畫 = |
| 336 | * [完成 5/04] 檢查cps是否有錯誤 |
| 337 | * [完成 5/22] hadoop 範例教學 -> 字數統計 |
| 338 | * [完成 5/24] Building Nutch/Hadoop project in eclipse |
| 339 | * [完成 5/27] Programing map-reduce with eclipse 文件 |
| 340 | * [new 5/28 ] map-reduce 程式設計 |
| 341 | * [new ] nutch 應用範例 -> 索引硬碟資料 |
| 342 | == 工作里程 == |
| 343 | * [wiki:waue_may 五月份工作日誌] |
| 344 | === 5/29 === |
| 345 | * 已建立 tw.org.nchc. 的 package 檔以供 java import 之用 |
| 346 | * 研究hadoop 1.16.4 的程式碼,(hadoop 1.17.0 已公佈, 有些api有改變) |
| 347 | * 實做HBase 範例 :方法如下 |
| 348 | 1. [http://ftp.twaren.net/Unix/Web/apache/hadoop/hbase/hbase-0.1.2/ 下載原始碼] 解開 |
| 349 | 2. 設定 conf/hbase-site.xml |
| 350 | {{{ |
| 351 | <configuration> |
| 352 | |
| 353 | <property> |
| 354 | <name>hbase.master</name> |
| 355 | <value>example.org:60000</value> |
| 356 | <description>The host and port that the HBase master runs at. |
| 357 | </description> |
| 358 | </property> |
| 359 | |
| 360 | <property> |
| 361 | <name>hbase.rootdir</name> |
| 362 | <value>hdfs://example.org:9000/hbase</value> |
| 363 | <description>The directory shared by region servers. |
| 364 | </description> |
| 365 | </property> |
| 366 | |
| 367 | </configuration> |
| 368 | }}} |
| 369 | 3. 設定 hbase-env.sh |
| 370 | {{{ |
| 371 | JAVA_HOME=/usr/lib/jvm/java-6-sun |
| 372 | ... |
| 373 | CLASSPATH=/home/waue/workspace/hadoop/conf |
| 374 | }}} |
| 375 | 4. set regionserver , slaves about host |
| 376 | 5. bin/start-hbase.sh (執行此程式前,需確認HDFS有開啟) |
| 377 | * 雖然 hbase 有在運作,但sample code仍報錯 |
| 378 | === 5/28 === |
| 379 | * 研究map-reduce 程式碼 |
| 380 | * hadoop 1.16.2 之後的版本就把hbase分離開來成獨立項目,因此/hadoop/src/java/org/apache/hadoop 已無hbase資料夾項目 (import org.apache.hadoop.hbase.* 將會出錯) |
| 381 | |
| 382 | === 5/27 === |
| 383 | * hadoop技術文件完成 How to Coding Hadoop with Eclipse [http://trac.nchc.org.tw/cloud/browser/hadoop-eclipse.odt (odt format)] or [http://trac.nchc.org.tw/cloud/browser/hadoop-eclipse.pdf (pdf format)] |
| 384 | |
| 385 | === 5/26 === |
| 386 | * hadoop技術文件 How to Coding Hadoop with Eclipse and svn [http://trac.nchc.org.tw/cloud/browser/hadoop-eclipse_svn.odt (odt format)] |
| 387 | |
| 388 | === 5/23 === |
| 389 | * 文件製作中 |
| 390 | * 開會 |
| 391 | === 5/22 === |
| 392 | * 成功編譯hadoop in Eclipse 並解決昨天的問題 |
| 393 | * 解決錯誤 5. ==> Window > Preferences > java> compiler: 設定 compiler compliance level to 5.0 (變成9個warning) |
| 394 | * 解決錯誤 7.1 ==> add a new MapReduce server location > server name : 任意 、 Hostname : localhost 、 Installation directory: /home/waue/workspace/nutch/ 、 Username : waue |
| 395 | * 解決錯誤 7.2 ==> 其實在執行7.1之前需要先將hadoop filesystem startup 起來才行,並且將範例檔放入hadoop filesystem中如bin/hadoop dfs -put 132.txt test |
| 396 | * 解決錯誤 8 ==> 打開umd-hadoop-core > src > edu.umd.cloud9.demo > DemoWordCount.java ,編輯程式碼如 String filename = "/user/waue/test/132.txt"; ,接著右鍵點run as ... > 選擇之前設定的hadoop file system > 看到console 端 map-reduce 已經在run即可 |
| 397 | * 安裝IBM mapReduce tool |
| 398 | 1. 下載 MapReduce_Tools.zip |
| 399 | 2. 關掉 Eclipse -> 解壓縮 MapReduce Tools zip 到 /usr/lib/eclipse/plugins/ |
| 400 | * 使用 IBM mapReduce tool |
| 401 | * 重開啟Eclipse-> 選 File > New > Project ->有 MapReduce category. |
| 402 | * 使用教學: Help -> Cheat sheet -> MapReduce -> Write a MapReduce application |
| 403 | === 5/21 === |
| 404 | * 藉著用此篇文章實做設計map-reduce 程式 [http://www.umiacs.umd.edu/~jimmylin/cloud9/umd-hadoop-dist/cloud9-docs/howto/start.html cloud 9] ,以下紀錄我的作法: |
| 405 | 1. Eclipse > Preferences). Select option Team > SVN. Change SVN interface to "SVNKit". |
| 406 | 2. by right clicking on left panel > New > Repository Location. |
| 407 | * umd-hadoop-dist: https://subversion.umiacs.umd.edu/umd-hadoop/dist |
| 408 | * umd-hadoop-core: https://subversion.umiacs.umd.edu/umd-hadoop/core |
| 409 | 3. Right click on trunk > Checkout... Follow dialog to check out repository. |
| 410 | * ps: 注意 subclipse 相當耗資源,因此執行eclipse 時需加入參數如 "eclipse -vmargs -Xmx512m" 以免遭到 out of memory error |
| 411 | 4. switch back to the Java perspective, have two new projects: umd-hadoop-core and umd-hadoop-dist. |
| 412 | 5. Select menu option: Project > Clean... (卡住.. 因為發生了九百多個錯誤 ) |
| 413 | 6. enable the MapReduce servers window go to: Window > Show View > Other... > MapReduce Tools > MapReduce Servers |
| 414 | 7.1 At the top right edge of the tab, you should see two little blue elephant icons. The one on the right allows you to add a new MapReduce server location. The hostname should be the IP address of the controller. You want to enable "Tunnel Connections" and put in the IP address of the gateway. (只有看到一隻大象) |
| 415 | 7. 2 At this point, you should now have access to DFS. It should show up under a little elephant icon in the Project Explorer (on the left side of Eclipse). You can now browse the directory tree. Your home directory should be /user/your_username. A sample collection consisting of the Bible and Shakespeare's works has been preloaded on the cluster, stored at /shared/sample-input. (卡住) |
| 416 | 8. Find edu.umd.cloud9.demo.DemoWordCount in the Project Explorer (卡住,找不到該檔) |
| 417 | |
| 418 | === 5/20 === |
| 419 | * 使用eclipse build hadoop 有些工具可以使用 1. subclipse (svn in eclipse plugin) 2. IBM mapReduce toolkit (an applicantion of Hadoop in eclipse) |
| 420 | 1. 安裝Subclipse |
| 421 | * Help -> Software Updates -> Find and Install... -> search for new features ... -> new remote site -> name : subclipse , site : http://subclipse.tigris.org/update |
| 422 | * 由於會出現軟體相依性的問題,因此我是加入舊版&新版的site,並且兩個都勾選安裝,如此一來就可以安裝完成 |
| 423 | * Window->Show View->Other…-> SVN->SVN Repository -> new site : http://svn.apache.org/repos/asf/hadoop/core/ |
| 424 | * 右鍵menu -> Checkout… -> 點擊Finish即完成 |
| 425 | * 若出現 Problem: Javahl interface is not available 的問題,參照以下解決 |
| 426 | 1. sudo apt-get install libsvn-javahl libsvn-dev |
| 427 | 2. sudo ln -s /usr/lib/jni/libsvnjavahl-1.so /usr/lib/jvm/java-6-sun/jre/lib/i386/client/libsvnjavahl-1.so |
| 428 | |
| 429 | === 5/19 === |
| 430 | * 繼續測試在eclipse 編譯 nutch,發現在上面run的都是jar檔,解開後裡面包的是class file ,因此修改程式碼的方法還要研究 |
| 431 | * 5/16的步驟今天突然無法執行,後來解決的方法如下: |
| 432 | * ssh localhost 不可有密碼 |
| 433 | * 檢查設定檔,如 hadoop.env.sh , nutch.site.xml... |
| 434 | * 出現 connect localhost:9000 failed => 1. hadoop namenode -format 2. startup_all.sh 3. hadoop dfs -put urls urls 之後在執行run |
| 435 | === 5/16 === |
| 436 | * 感謝sunni指點迷津,nutch 成功build in nutch |
| 437 | 1. File ==> new ==> Project ==> java project ==> Next ==> Project name (設成 nutch0.9) ==> Contents ==> Create project from existing(選擇存放nutch路徑) ==> Finish. |
| 438 | 2. 此時會出現366個error , 即使用網路上得除錯方法:將兩個jar( [http://nutch.cvs.sourceforge.net/*checkout*/nutch/nutch/src/plugin/parse-mp3/lib/jid3lib-0.5.1.jar jid3lib-0.5.1.jar] 和 [http://nutch.cvs.sourceforge.net/*checkout*/nutch/nutch/src/plugin/parse-rtf/lib/rtf-parser.jar rtf-parser.jar] ) 放入nutch-0.9的lib文件夾下。在Eelipse中右鍵點擊 nutch0.9 ==> properties.. ==> Java Build Path ==> Librarles ==> Add External JARs... ==> 點選剛下載的兩個jar ==>ok |
| 439 | 3. 但此時還是有一堆錯誤,解決的方法是 Eelipse中右鍵點擊 nutch0.9 ==> properties.. ==> Java Build Path ==> Source ==>將資料夾圖示的都刪掉,僅加入nutch/conf |
| 440 | 4. 此時會看到所有的錯誤都解除,接著修改 nutch/conf 內的 nutch-site.xml 、 crawl-urlfilter.txt、hadoop.site.xml、hodoop.env.sh,並在nutch/ 下加入 urls/urls.txt,並將要掃瞄的網址寫入urls.txt |
| 441 | 5. Menu Run > "Run..." ==> create "New" for "Java Application" |
| 442 | * set in Main class = org.apache.nutch.crawl.Crawl |
| 443 | * on tab Arguments: |
| 444 | * Program Arguments = urls -dir crawl -depth 3 -topN 50 |
| 445 | * in VM arguments: -Dhadoop.log.dir=logs -Dhadoop.log.file=hadoop.log |
| 446 | * click on "Run" |
| 447 | |
| 448 | |
| 449 | === 5/15 === |
| 450 | * building nutch in eclipse |
| 451 | * 協助 F. P. Lin 申請nchcca憑證 加入pragma grid |
| 452 | |
| 453 | === 5/14 === |
| 454 | * 將nutch 加入 eclipse 作building 但有錯誤 |
| 455 | 0. 設定nutch |
| 456 | 1. File > New > Project > "Java project" > click Next |
| 457 | 2. project 命名為 nutch |
| 458 | 3. Select "Create project from existing source" and use the location where you downloaded Nutch |
| 459 | 4. Click on Next, and wait while Eclipse is scanning the folders |
| 460 | 5. Libraries(第三個tagJ) Add class Floder -> "conf" |
| 461 | 6. Eclipse should have guessed all the java files that must be added on your classpath. If it's not the case, add "src/java", "src/test" and all plugin "src/java" and "src/test" folders to your source folders. Also add all jars in "lib" and in the plugin lib folders to your libraries |
| 462 | 7. Set output dir to "tmp_build", create it if necessary |
| 463 | |
| 464 | |
| 465 | === 5/13 === |
| 466 | 1. 檢查並修改trac 上得cps是否為維誠給的 [apgrid同意版] |
| 467 | 1. 將word檔內容貼到文字檔 ori.txt |
| 468 | 2. 將trac上得內容貼到文字檔 new.txt |
| 469 | 3. 消除不同的格式 (如 "\n\n"->" \n " (換兩行->換一行)、"._"、 "___*_"、":_\n") |
| 470 | 4. vimdiff new.txt ori.txt |
| 471 | 5. 檢查結果如下 http://trac.nchc.org.tw/gocca/wiki/CPSnew?action=diff&version=27&old_version=26 |
| 472 | |
| 473 | === 5/12 === |
| 474 | 1. 完成 [http://trac.nchc.org.tw/gocca/wiki/CPSnew nchc cp/cps v.1.13] (apgrid 同意) 版本 於 ca網站及trac |
| 475 | 主要麻煩為:最後經weicheng確認並認可的是word檔,要轉成html且wiki格式的步驟流程 |
| 476 | 1. cps 1.1.3 on doc format -> new.txt文字檔 |
| 477 | 2. cps 1.1.0 on html format in trac -> old.txt文字檔 |
| 478 | 3. vimdiff new.txt old.txt 檢視不同資訊 並修改 trac上舊的cps 1.1.0資訊成新版的 |
| 479 | 4. 將新的cps 1.1.3 從trac存到local 並用KompoZer編輯成原ca網站上的格式 |
| 480 | 5. 上傳並取代舊版 |
| 481 | === 5/8 === |
| 482 | 1. 基於資安問題將nutch限制瀏覽ip,修改conf/server.xml檔,加入 |
| 483 | {{{ |
| 484 | |
| 485 | <Context path="/path/to/secret_files" ...> |
| 486 | <Valve className="org.apache.catalina.valves.RemoteAddrValve" |
| 487 | allow="127.0.0.1" deny=""/> |
| 488 | </Context> |
| 489 | }}} |
| 490 | |
| 491 | 2. tomcat 調校方法 |
| 492 | [http://www.oreilly.com.tw/column_editor.php?id=e137 中文] 、 [http://www.onjava.com/lpt/a/3909 英文] |
| 493 | |
| 494 | === 5/7 === |
| 495 | 1. nutch 運作於 管理規範專區成功,並parse進pdf,word內容 改法為在nutch.site.xml加入內容 |
| 496 | |
| 497 | {{{ |
| 498 | <property> |
| 499 | <name>plugin.includes</name> |
| 500 | <value>protocol-http|urlfilter-regex|parse-(text|html|js|pdf|msword|rss|rtf|oo|msexcel|parse-mspowerpoint)|index-basic|query-(basic|site|url)|summary-basic|scoring-opic|urlnormalizer-(pass|regex|basic)</value> |
| 501 | <description>... |
| 502 | </description> |
| 503 | </property> |
| 504 | }}} |
| 505 | |
| 506 | parse-(text|html|js|pdf|msword|rss|rtf|oo|msexcel|parse-mspowerpoint)內的檔名需要對應plugins中parse-XXX的名稱而定 |
| 507 | |
| 508 | === 5/5 === |
| 509 | 1. nutch 運作於 管理規範專區成功,但內容卻不包含pdf, word, ... |
| 510 | |
| 511 | = 一~四月工作日誌 = |
| 512 | [http://trac.nchc.org.tw/gocca/wiki/waue 五月以前工作紀錄] |
| 513 | |