Changes between Initial Version and Version 1 of waue/2008


Ignore:
Timestamp:
Jan 20, 2009, 11:48:16 AM (16 years ago)
Author:
waue
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • waue/2008

    v1 v1  
     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
     24ps:  [http://discoproject.org/ 新的mapReduce平台:Disco ]
     25
     26 == 工作日誌 ==
     27 '''i. 解一:搭配classpath 呼叫'''
     28    編輯一個shell,內容為
     29{{{
     30#!/bin/bash
     31LIB=/opt/lib
     32HADOOP_HOME=/opt/hadoop
     33CLASSPATH=\
     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
     40javac -classpath $CLASSPATH ./SnortBase.java
     41java -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{{{
     5808/09/23 17:36:42 INFO mapred.FileInputFormat: Total input paths to process : 3
     5908/09/23 17:36:42 INFO mapred.JobClient: Running job: job_200809231722_0001
     6008/09/23 17:36:43 INFO mapred.JobClient:  map 0% reduce 0%
     6108/09/23 17:36:46 INFO mapred.JobClient:  map 66% reduce 0%
     6208/09/23 17:36:48 INFO mapred.JobClient:  map 100% reduce 0%
     6308/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 ====
     1151. 修改 /etc/snort/snort.conf
     116
     117{{{
     118var HOME_NET any
     119var EXTERNAL_NET !$HOME_NET
     120}}}
     121
     1222. 紀錄警訊
     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
     1303. 分析格式、載入雲端
     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
     1474. 運行並紀錄雲端運算時間
     148
     149
     1509.091
     151
     152 ==== 對照組:mysql database ====
     1531. 修改 /etc/snort/snort.conf
     154{{{
     155var HOME_NET any
     156var EXTERNAL_NET !$HOME_NET
     157output database: log, mysql, user=snort password=snort dbname=snort host=localhost
     158}}}
     159
     1602. 修改程式碼
     161
     162 * mo -> accident_ticket
     163
     164 * 換 NewSnortSOCTable.sql  -> snort
     165
     1663. 紀錄警訊
     167>
     168> $ sudo snort -c /etc/snort/snort.conf -i eth0
     169
     170> $ sudo tcpreplay -i eth0 --topspeed /home/waue/sp1.tcpdump
     171>
     172
     1734. 紀錄mysql運算時間
     174{{{
     175$ php ./main_uv.php
     176
     177
     178Run :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 * 預計投稿題目:
     251ids 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
     266ps : 明天要專心來弄gears!
     267
     268 === 6/12 ===
     269 * 持續學習java 以及改寫map-reduce sample code
     270 * 將目前手頭正在改寫的檔svn上來
     271 * eclipse 熱鍵篇總覽:
     272{{{
     273Template: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{{{
     30608/06/04 18:03:21 INFO mapred.FileInputFormat: Total input paths to process : 1
     30708/06/04 18:03:22 INFO mapred.JobClient: Running job: job_200805291341_0019
     30808/06/04 18:03:23 INFO mapred.JobClient:  map 0% reduce 0%
     30908/06/04 18:03:28 INFO mapred.JobClient:  map 100% reduce 0%
     31008/06/04 18:03:36 INFO mapred.JobClient: Task Id : task_200805291341_0019_r_000000_0, Status : FAILED
     311java.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{{{
     371JAVA_HOME=/usr/lib/jvm/java-6-sun
     372...
     373CLASSPATH=/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