2009年8月11日 星期二

Hadoop 0.20 安裝設定筆記

@2010/02/07,此篇是記錄從原先 0.18 版提升至 0.20 版的過程,若須由重頭安裝的,請參考以下兩篇:



下載位置:



從 0.18 版升到 0.20 版,順一次最初的 VMWare Image 檔,其為 0.18 版、CentOS,以下用 root 帳號操作:



  1. 更新軟體 (安裝軟體用 root 身份)

    • # yum -y install screen





    • 安裝 screen

      • # yum -y install screen





    • 安裝 lftp

      • # yum -y install lftp





    • 安裝 apache web server 和 php


      • # yum -y install httpd php



    • 設定 HTTPD

      • # vim /etc/httpd/conf/httpd.conf



    • 啟動 HTTPD

      • # /etc/init.d/httpd start





  2. 設定或建立 .screenrc (可用 hadoop身份)

    • # vim ~/.screenrc 加入一行即可

      • caption always "%{bw}%M/%d %c %{wb} %-w%{c}%n %t%{w}%+w%{k} %=%{G}[%H] %l%"






Hadoop 設定,以下用 hadoop 帳號操作:



  1. 抓 hadoop 0.20 至 hadoop 根目錄 (/home/hadoop, 即 hadoop 帳號登入的預設位置)

    • # wget http://apache.ntu.edu.tw/hadoop/core/hadoop-0.20.0/hadoop-0.20.0.tar.gz



  2. 解壓縮即安裝

    • # tar -xvf hadoop-0.20.0.tar.gz



  3. 切換至 hadoop-0.20.0 (之後的目錄都是指 hadoop-0.20.0)

    • # cd /home/hadoop/hadoop-0.20.0/



  4. 設定 hadoop-env.sh

    • # vim /home/hadoop/hadoop-0.20.0/conf/hadoop-env.sh 加入一行

      • export JAVA_HOME=/usr/lib/jre1.6.0_13






以上即完成單機版 hadoop 的環境,接著可以啟動跟查看目前所在目錄的資料夾與檔案



  1. # ./bin/start-all.sh

  2. # ./bin/hadoop dfs -ls


以下是設定 hadoop dfs 環境,使用 hadoop 身份



  1. 複製 hadoop 0.18 設定檔

    • # cp /home/hadoop/start-hadoop /home/hadoop/hadoop-0.20.0/

    • # cp /home/hadoop/stop-hadoop /home/hadoop/hadoop-0.20.0/

    • # cp /home/hadoop/conf/hadoop-site.tmp /home/hadoop/hadoop-0.20.0/conf

    • 並編輯 /home/hadoop/hadoop-0.20.0/start-hadoop 和 /home/hadoop/hadoop-0.20.0/stop-hadoop

      • 更新 Hadoophome="/home/hadoop" 為 Hadoophome="/home/hadoop/hadoop-0.20.0"





  2. 產生設定檔

    • 純粹用來產生 conf/hadoop-site.xml 資料, 但新版已不用此設定檔

      • # /home/hadoop/hadoop-0.20.0/start-hadoop

      • # /home/hadoop/hadoop-0.20.0/stop-hadoop



    • # cp conf/hadoop-site.xml conf/core-site.xml

    • # vim conf/core-site.xml


      •   <property>
            <name>fs.default.name</name>
            <value>hdfs://IP:9000</value>
          </property>
         <property>
            <name>mapred.job.tracker</name>
            <value>localhost:9002</value>
          </property>
         <property>
            <name>dfs.replication</name>
            <value>1</value>
          </property>

          <property>
            <name>hadoop.tmp.dir</name>
            <value>/tmp/hadoop-${user.name}</value>
            <description>A base for other temporary directories.</description>
          </property>
          <property>
            <name>dfs.name.dir</name>
            <value>${hadoop.tmp.dir}/dfs/name</value>
          </property>
          <property>
            <name>dfs.data.dir</name>
            <value>${hadoop.tmp.dir}/dfs/data</value>
          </property>

          <property>
            <name>dfs.http.address</name>
            <value>0.0.0.0:50070</value>
          </property>
          <property>
            <name>mapred.job.tracker.http.address</name>
            <value>0.0.0.0:50030</value>
          </property>

          <property>
            <name>dfs.datanode.address</name>
            <value>0.0.0.0:50010</value>
          </property>
          <property>
            <name>dfs.datanode.ipc.address</name>
            <value>0.0.0.0:50020</value>
          </property>
          <property>
            <name>dfs.datanode.http.address</name>
            <value>0.0.0.0:50075</value>
          </property>
          <property>
            <name>dfs.datanode.https.address</name>
            <value>0.0.0.0:50475</value>
          </property>





  3. 格式化 namenode (原先存在的資料將被清光)

    • # ./bin/hadoop namenode -format



  4. 啟動 hadoop 前修改 start-hadoop 檔

    • # vim /home/hadoop/hadoop-0.20.0/start-hadoop

      • 把第九行用 # 註解掉  ( #sed "s/\$hostip/$host_ip/g........ ) 不弄的話也沒關係, 只是會一直蹦訊息而已





  5. 接著就像 0.18 一樣正常操作了

    • [hadoop@hadoop hadoop-0.20.0]$ ./start-hadoop
      Starting Hadoop ...
      Job Admin: http://IP:50030/
      HDFS: http://IP:50070/
      [hadoop@hadoop hadoop-0.20.0]$ ./bin/hadoop dfs -ls
      ls: Cannot access .: No such file or directory.
      [hadoop@hadoop hadoop-0.20.0]$ ./bin/hadoop dfs -mkdir input
      [hadoop@hadoop hadoop-0.20.0]$ ./bin/hadoop dfs -ls
      Found 1 items
      drwxr-xr-x   - hadoop supergroup          0 2009-08-12 15:00
      /user/hadoop/input




錯誤訊息及修正:



  • list 可以有東西出來,但只要新增資料進去就會出錯,蹦一堆訊息,經過查詢發現是 datanode 沒有跑起來

    • # ./bin/hadoop dfs -ls

      • OK



    • # ./bin/hadoop dfs -put test .

      • ERROR





    • # ./bin/hadoop dfsadmin -report

      • 顯示 Datanodes available: 0 (0 total, 0 dead)



    • 解決方式, 是將原本 0.18 建立的 datanode 資訊砍掉重建, 即可處理,但將損失資料,最好請參考 Trouble Shooting 的解法 

      • # ./stop-hadoop

      • # rm /tmp/hadoop*

      • # ./bin/hadoop namenode -format

      • # ./start-hadoop





  • Trouble Shooting

    • If nameNode or file can not put into.

      • Better solution

        • # hadoop fsck



      • Worst solution (data will all lost)

        • # stop-all.sh

        • # rm -fr /fs/HDFS

        • # mkdir /fs/HDFS

        • # hadoop namenode -format

        • # start-all.sh







    • 如果dfs只能看到自已

      • 手動清掉所有node的hadoop tmp目錄(default: /tmp/hadoop-root)再重啟 dfs






2009年8月9日 星期日

UCINET 簡易 教學 使用 筆記

前陣子自己曾寫一篇關於社會網路分析的文章,發現還不少人用 UCINET 關鍵字找到,然而那篇文章只是純粹地發牢騷,並沒有記下任何的使用資訊。今天有收到別人的留言,我想,就順道回憶一下這套軟體的使用。


首先,要做的事就是將手頭社群網路建成 UCINET 軟體可輸入的資料格式,在此以文字檔為例:(前兩行是制式格式)


dl n = 個數 , format = 輸入格式
data:
...
...


其中,個數代表整個圖中有幾個 node 組成,輸入格式可分成 node list 和 edge list 兩種,若圖是有權重的,那只能用 edge list 方式輸入。



  • nodelist


dl n = 4, format = nodelist1
data:      
1 2 3
2 3 4
3 4
4 3


此例代表 node 1 跟 node 2 和 node 3 有連線; node 2 跟 node3 和 node 4 有連線,以此類推



  • edgelist


dl n = 4, format = edgelist1

data:      

1 2 10

2 3 15

3 4 1

4 3 5


此例代表 node 1 連到 node 2 ,權重為 10 ;node 2 連到 node 3 ,權重為 15 ;node 3 連到 node 4 ,權重為 1 ,以此類推


以 edge list 或 node list 的輸入格式,都是有向圖的輸入,若要弄成無向圖時,則需留意輸入,例如輸入 node 1 連到 node 2 後,要記得再建立 node 2 連到 node 1 的資訊。而使用上述的格式,是因為社群網路資訊可能很大,因此會需要用程式產生輸入資料,若資料不大,可以使用 UCINET 提供的輸入方式。


UCINET 6 -> [Data] -> [Import from text data] -> [dl]


完成圖的輸入後,緊接著就是分析的部分,此部分必須搭配演算法的意義來使用,例如最簡單的就是輸出 in-degree 和 out-degree 資訊,透過基本的資訊,可以得知哪些點可能是重要的,例如某點的 out-degree 和 in-degree 都多,但表該點可能位於圖的中心等。然而,分析並不是這般簡單的,因此才會有源源不絕的演算法蹦出來,以 Betweenness 為例,簡言之,若有某點常常出現在一些最短路徑上,那該點可能是重要的,因此,可以用 UCINET 幫你計算出該圖各點的 Betweenness 數值,數值高的就是一種重要的意義。


UCINET 6 -> [Network] -> [Centrality] -> [Freeman Betweenness] -> [Node Betweenness]


以上述提到的 node list 測資丟入


sna sample


運算完的 Betweenness 資訊如下:


                  1            2
        Betweenness nBetweenness
       ------------ ------------
    3         0.500        8.333
    2         0.500        8.333
    1         0.000        0.000
    4         0.000        0.000


其中, 2 跟 3 所得的 0.5 數值是因為 1 到 4 這條路可分成 1->2->4 和 1->3->4 ,各取 1/2 的關係。


最後,並沒有什麼演算法是萬能的,對於社群網路的分析靠的是經驗,這些都是我所缺乏的。


其他資訊:



2009年8月6日 星期四

韓劇 大長今 - 女主角 李英愛


資料來源:



沒想到在學生生涯的尾曲,從學弟那邊要到這齣 VCD 版的韓劇觀看,一開始看到集數 70 集,說真的有點懶懶的,但事實證明,一看就欲罷不能。目前我還沒看完,正看到要轉型為醫女的階段,簡單的劇情可以參考這裡 大長今 (電視劇)



雖然劇情低沉期或事件偏多,但整體呈現非常鮮明,例如處在宮中,必定有權謀利益等事,有些人就這樣被犧牲,轉換到現實生活中,不也是如此嗎?雖然生活中比較少跟生命威脅相關,卻也常常蹦出磨滅讓意志的事件。儘管了解現實生活人性的自私面,卻也容易忘了適應,呼。


我覺得這齣戲帶有教育的意義,讓人在面對困境時,更要堅定意志!不禁讓我回想這幾年的生活,真的,天助自助者,儘管每個人的時運不一定都很好,但仍要試著大步的往前走,只有持續走下去,才能不錯失任何機會。



回到本戲,我覺得李英愛還滿耐看的,逛過 wiki 後才發現她今年已經 38 歲了!往前推到 2004 年,當初拍戲也已經 33 歲。韓劇似乎很多哭戲,要怎樣哭得惹人憐,還真的是需要一些技巧,劇中大部分呈現是富有活力與可愛,而悲傷之事亦堅忍流淚,突顯出人生意志啊。我記得第一次聽到李英愛,應該是韓劇火花吧,只可惜我也還沒看過,過去我比較常看日劇。



如果有時間,滿建議可以看一下這部戲,裡頭字裡行間都帶有不少人生哲學。最後,滿可惜的,我找不太到戲劇富有活力和可愛的照片,似乎悲傷的容易被照片呈現,而逗趣的事卻必須用一連串的影音才能呈現,不曉得是不是這樣,網頁上的圖片就比較少微笑了。





照片出處



上述的圖片都帶有原始來源的網頁,歡迎點選回到原出處觀看囉!


2009年7月31日 星期五

測試能力?目標呢?

今天,結束簡單的台北行。在台北的環境中,讓自己釐清很多事情。這趟,幸運地住在同學的朋友家,正確來說是學長家,那是一間位於永和的小家庭, 好客的學長跟家人,讓我們倍感自在。


在這趟之前,我還不能適應台北的人潮,像站在海嘯前的淺灘,該往哪邊逃,常常讓人不知所措,但這就是台北的最大資源--人潮,突然間亦想起科技業那用不完的新鮮肝。不像鄉下,可以愜意地走在街上,隨著腳步看著那櫥窗內店家的生活,反而過於欣賞時,容易讓人感覺像處於雜訊過多的環境,因此,經過半天的步程,我習慣專注自己要辦的事,台北,不再那麼格格不入。唯一不幸的,在捷運站上還是容易迷失方向。這幾天一早就得體驗捷運,為了目的地,還必須轉車兩次,忠孝復興、台北車站。第一次在早上感受到捷運的人潮,特別是忠孝復興站,硬生生地被擠進車廂。


在台北,什麼東西都貴,真不曉得薪水真的夠用嗎?第一天吃魔法咖哩,聽學長閒聊買屋的事,幾乎稱得上是半輩子的薪水,就這樣砸進銀行的口袋,所以,讓我想了會,人生到底在追求什麼?是薪水嗎?是工作嗎?是婚姻嗎?是房子嗎?還是小孩嗎?或許,更重要的是要在這潮流中,找到的自己吧。


2009年7月25日 星期六

擁抱未來

最近發生不少事,慶幸的好事較多。我時常在時間點上回顧自己的生活,依舊覺得自己是位幸運的人,許多事不如意,卻冥冥之中自有安排。只是處於低潮期,不一定每個人都能夠順遂地度過難關,又怎記得看看明日的太陽呢?盡管如此,仍要大膽地走下去。


這幾天在家恰好搭上夏日的雨後,有種說不出的清爽感,就在陰陰暗暗的夏日午後。或許人生就是如此,看似糟糕的天氣,其實也能帶給人不一樣的感觸,而這可能不是即時反應的,要更多的耐心等待。


如何擁抱未來呢?或許第一步要先拋掉過去,過去容易綑綁住視野,彷彿就像在身上綁上看不見的細線,正當要往上飛的那刻,卻又發現被人往下拉了一把。只是,此刻的一切不也正是過去的一切所賦予的嗎?


嗯,人生需要更多的勇氣,沒看到最後,永遠不知輸還贏,相信未來,更要時時不斷地擁抱未來。