blog.Ring.idv.tw

建構屬於自己的Cloud Computing - Hadoop

建構屬於自己的Cloud Computing - Hadoop


本文的主旨在於整個Hadoop的環境安裝教學,其它的相關資訊將會另闢說明~

筆者採用目前Hadoop-0.16.4「Stable」版本來建構~

硬體環境

我採用了三台機器來建構,並且為它們都裝上「Debian Linux 4.0r3 (amd64)」的作業系統~ 如下述所示:

主機名稱:hdp-1 IP:192.168.0.10 功能:NameNode、JobTracker、DataNode、TaskTracker

主機名稱:hdp-2 IP:192.168.0.11 功能:DataNode、TaskTracker

主機名稱:hdp-3 IP:192.168.0.12 功能:DataNode、TaskTracker

我在安裝時為這些主機都建立一個名為「hdp」的使用者帳號~

建構步驟

.下載「hadoop-0.16.4.tar.gz」並解壓縮~ 然後搬到「hdp」的家目錄

wget http://ftp.tcc.edu.tw/pub/Apache/hadoop/core/stable/hadoop-0.16.4.tar.gz
tar zxvf hadoop-0.16.4.tar.gz
mv hadoop-0.16.4 /home/hdp/

{重要}修改「三台」主機的「/etc/hosts」,讓彼此的主機名稱和IP位址都能順利地被解析

127.0.0.1       localhost       localhost
192.168.0.10    hdp-1   hdp-1
192.168.0.11    hdp-2   hdp-2
192.168.0.12    hdp-3   hdp-3

.接著安裝你的Java環境在「每台機器」上,這裡我們以「jdk1.6.0_06」為例,並將目錄搬移至「/usr/java/」底下

./jdk-6u6-linux-x64.bin
mkdir /usr/java
mv jdk1.6.0_06 /usr/java/

.「每台機器」請安裝必要的相關軟體,因為Hadoop會透過SSH來啟動和停止各節點的程式

sudo apt-get install ssh

.然後設定你的SSH可以透過公鑰認證的方式來連線,相關細節可參考「鳥哥的Linux 私房菜 - 遠端連線伺服器 Telnet/SSH/XDMCP/VNC/RSH」,筆者在這裡列出我的相關設定

ssh-keygen -t rsa
cd /home/hdp/.ssh/
cat id_rsa.pub >> authorized_keys
ssh hdp-1

現在應該就不需要密碼即可登入hdp-1本身的機器了~ 不過我們也要利用這樣的方式來登入另外兩台機器,分別為hdp-2、hdp-3,所以請一併地在這兩台機器下的「/home/hdp/」都建立一個「.ssh」的目錄夾,然後用「scp」拷貝「authorized_keys」到這些機器上即可:

sudo scp authorized_keys hdp-2:/home/hdp/.ssh/ 
sudo scp authorized_keys hdp-3:/home/hdp/.ssh/ 
ssh hdp-2
ssh hdp-3

.接著開始進行修改Hadoop的相關設定,首先先修改「conf/masters」、「conf/slaves」這兩個設定檔(修改hdp-1即可)。

Secondary NameNode設定:(<HADOOP_HOME>/conf/masters)

hdp-2

Slave設定:(<HADOOP_HOME>/conf/slaves)

hdp-1
hdp-2
hdp-3

.然後修改一下「conf/hadoop-env.sh」來設定Hadoop的環境變數

export JAVA_HOME=/usr/java/jdk1.6.0_06

.接著修改Hadoop的相關參數設定「conf/hadoop-site.xml」,範例如下:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
  <name>fs.default.name</name>
  <value>hdfs://hdp-1:9000/</value>
</property>
<property>
  <name>mapred.job.tracker</name>
  <value>hdp-1:9001</value>
</property>
<property>
  <name>dfs.name.dir</name>
  <value>/home/hdp/dfs/name</value>
  </property>
<property>
  <name>dfs.data.dir</name>
  <value>/home/hdp/dfs/data</value>
</property>
<property>
  <name>dfs.replication</name>
  <value>1</value>
</property>
</configuration>

.最後用「scp」將「hdp-1」的Hadoop整個環境設定及目錄結構拷貝到另外兩台機器上

scp -r /home/hdp/hadoop-0.16.4 hdp-2:/home/hdp/
scp -r /home/hdp/hadoop-0.16.4 hdp-3:/home/hdp/

到這邊大致上就完成屬於你自己的Cloud Computing環境建構了~ 接下來就是啟動Hadoop,並用個小範例來玩玩嚕~

啟動Hadoop

.先格式化一個新的分散式的檔案系統HDFS

<HADOOP_HOME>/bin/hadoop namenode -format

會出現如下所示的相關訊息:

08/06/09 23:45:54 INFO dfs.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = hdp-1/192.168.0.10
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 0.16.4
STARTUP_MSG:   build = http://svn.apache.org/repos/asf/hadoop/core/branches/branch-0.16 -r 652614; compiled by 'hadoopqa' on Fri May  2 00:18:12 UTC 2008
************************************************************/
08/06/09 23:45:55 INFO fs.FSNamesystem: fsOwner=hadoop,hadoop,dialout,cdrom,floppy,audio,video,plugdev,netdev,powerdev
08/06/09 23:45:55 INFO fs.FSNamesystem: supergroup=supergroup
08/06/09 23:45:55 INFO fs.FSNamesystem: isPermissionEnabled=true
08/06/09 23:45:55 INFO dfs.Storage: Storage directory /home/hadoop/dfs/name has been successfully formatted.
08/06/09 23:45:55 INFO dfs.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at hdp-1/192.168.0.10
************************************************************/

.接著就給它啟動「Hadoop」嚕~

<HADOOP_HOME>/bin/start-all.sh

要驗證所有過程是否無誤~ 可以參閱「<HADOOP_HOME>/logs/」相關的紀錄檔~

或是開啟NameNode的網頁介面來觀察,若依筆者的設定則需開啟「http://hdp-1:50070/」來觀察,配置正確的話應該有三台DataNode是活著的 ^^v

跑Hadoop範例

這裡我們用官方的一個「WordCount」範例來介紹~

主要建立兩個文字檔,裡頭的單字都用空格來區隔~ 以方便範例程式來運作~

比較重要的是「<HADOOP_HOME>/bin/hadoop dfs -put ./testdata input」,這一行就是用來將「testdata」目錄夾寫入到「HDFS」裡~

mkdir testdata
cd testdata
echo "hello world bye hello" > file1.txt
echo "hadoop hello goodbye hadoop" > file2.txt
cd ..
<HADOOP_HOME>/bin/hadoop dfs -put ./testdata input

最後就跑給它看嚕~ 看看小飛象能飛得多快~ 哈哈~ ^^b

<HADOOP_HOME>/bin/hadoop jar hadoop-0.16.4-examples.jar wordcount input output

執行結果:

08/06/10 00:03:24 INFO mapred.FileInputFormat: Total input paths to process : 2
08/06/10 00:03:25 INFO mapred.JobClient: Running job: job_200806092347_0001
08/06/10 00:03:26 INFO mapred.JobClient:  map 0% reduce 0%
08/06/10 00:03:28 INFO mapred.JobClient:  map 33% reduce 0%
08/06/10 00:03:29 INFO mapred.JobClient:  map 100% reduce 0%
08/06/10 00:03:35 INFO mapred.JobClient:  map 100% reduce 100%
08/06/10 00:03:36 INFO mapred.JobClient: Job complete: job_200806092347_0001
08/06/10 00:03:36 INFO mapred.JobClient: Counters: 12
08/06/10 00:03:36 INFO mapred.JobClient:   Job Counters
08/06/10 00:03:36 INFO mapred.JobClient:     Launched map tasks=3
08/06/10 00:03:36 INFO mapred.JobClient:     Launched reduce tasks=1
08/06/10 00:03:36 INFO mapred.JobClient:     Data-local map tasks=1
08/06/10 00:03:36 INFO mapred.JobClient:   Map-Reduce Framework
08/06/10 00:03:36 INFO mapred.JobClient:     Map input records=2
08/06/10 00:03:36 INFO mapred.JobClient:     Map output records=8
08/06/10 00:03:36 INFO mapred.JobClient:     Map input bytes=50
08/06/10 00:03:36 INFO mapred.JobClient:     Map output bytes=82
08/06/10 00:03:36 INFO mapred.JobClient:     Combine input records=8
08/06/10 00:03:36 INFO mapred.JobClient:     Combine output records=6
08/06/10 00:03:36 INFO mapred.JobClient:     Reduce input groups=5
08/06/10 00:03:36 INFO mapred.JobClient:     Reduce input records=6
08/06/10 00:03:36 INFO mapred.JobClient:     Reduce output records=5

執行完成之後,我們再將HDFS下的output資料夾抓出來看~

<HADOOP_HOME>/bin/hadoop dfs -get output output
cat output/*

輸出的結果就是:

bye     1
goodbye 1
hadoop  2
hello   3
world   1

成功啦~ 恭禧你!! ^^v

要停止Hadoop的運作只要下「bin/stop-all.sh」指令即可~

結論

本文一整個打了很多字~ 如果有介紹未盡詳細的地方,請參閱相關資源~

或是連結到本站的另一篇「一個值得研究的領域 - Hadoop」~

如果在安裝過程之中有任何問題~ 非常歡迎留言討論~ 如果本文有任何謬誤的地方,也請不吝地給予指正,必當感激!!

2008-06-10 00:13:02

67 comments on "建構屬於自己的Cloud Computing - Hadoop"

  1. 1. Geniusking 說:

    最近開始STUDY HADOOP
    這篇文章幫了我不少
    感謝!

    2008-07-02 00:19:47

  2. 2. Shen 說:

    不客氣 ^^ 謝謝你的支持呀!
    有機會歡迎常來一起討論唷!! ^^v

    2008-07-02 00:27:06

  3. 3. Geniusking 說:

    你好,我START HADOOP後
    看localhost:50070的網頁
    發現LIVE DATA NODE是0
    會不會因為我只有一台電腦的關系啊!?
    其他的詳細設定這裡不方便貼
    你有其他的聯絡方式嗎?

    2008-07-22 22:45:09

  4. 4. Shen 說:

    嗯~ 一台電腦應該也是要看得到Live Datanodes:1,也就是官網上所描述的「Pseudo-Distributed Mode」~ 不過這樣實質意義不大~
    我會建議你,如果只是要學習MapReduce programming model,我想是不需要架設Hadoop的~ 用Local Model的方式來練習即可~ 在Windows平臺上用Cygwin模擬來玩~ 否則除非你是要Fully-Distributed Mode才需要架設~

    2008-07-23 00:45:12

  5. 5. Geniusking 說:

    謝謝大大的建議
    我想先在一台電腦試試,之後再加其他電腦進來
    架不起來所以沒辦法跑範例有點sad

    2008-07-23 11:23:45

  6. 6. Geniusking 說:

    不好意思,再請教一下,我看官方的說明文件http://hadoop.apache.org/core/docs/current/quickstart.html

    做到這裡時
    Copy the input files into the distributed filesystem:
    $ bin/hadoop dfs -put conf input
    出現的訊息是
    08/07/23 14:10:54 WARN fs.FileSystem: "localhost:9000" is a deprecated filesystem name. Use "hdfs://localhost:9000/" instead.
    08/07/23 14:10:54 WARN fs.FileSystem: "localhost:9000" is a deprecated filesystem name. Use "hdfs://localhost:9000/" instead.
    08/07/23 14:10:54 WARN fs.FileSystem: "localhost:9000" is a deprecated filesystem name. Use "hdfs://localhost:9000/" instead.
    08/07/23 14:10:54 WARN fs.FileSystem: "localhost:9000" is a deprecated filesystem name. Use "hdfs://localhost:9000/" instead.
    put: Target input/conf is a directory

    不知道要取代什麼
    他又說conf是資料匣,可是這是官方給的指令
    你有遇過這個問題嗎?謝謝

    2008-07-23 14:16:24

  7. 7. Shen 說:

    OK, 我之前用Cygwin跑Hadoop 0.17.1也遇過~
    你將「conf/hadoop-site.xml」這個參數檔裡頭的「fs.default.name」、「mapred.job.tracker」兩個參數值將「localhost:9000」、「localhost:9001」改成「hdfs://localhost:9000/」、「hdfs://localhost:9001/」應該就可以了!
    good luck!

    2008-07-23 15:38:20

  8. 8. 克里斯明穎 說:

    不好意思~是否可以請問一下~當我已經正常執行完wordcount的範例之後~在當我使用 "bin/hadoop dfs -get /user/my.username/output ./output.txt" 的指令的時候發現我出現了下列的訊息 "get: null" ~ 請問可能的問題出在哪裡~THX~

    PS:我已經使用Web介面看過DataNode裡面~確實存在了output的資料夾~裡面也有個檔案叫 "part-00000" 其內容正好就是執行的結果 ><

    2008-08-22 00:35:59

  9. 9. Shen 說:

    呃... 我沒遇過這樣的情形~
    你的環境為何?Hadoop版本?
    建議你先測試「bin/hadoop dfs -cat /user/my.username/output/*」看能不能印出你跑完的資料~
    還有就是你上述的指令應該是要將「output」目錄下的東西都抓出來~ 所以不太需要給它「.txt」的副檔名~ 除非你只是要抓一個檔出來,例如:「bin/hadoop dfs -get /user/my.username/output/part-00000 ./output.txt」
    good luck!

    2008-08-22 01:26:34

  10. 10. 克里斯明穎 說:

    我的環境是三台 VMWare 的 Fedora core 5 guest
    one master + two slave.
    JDK = 1.6.7
    HADOOP = 0.17.2
    後來我發現當我昨天晚上想睡覺~就先將 hadoop shutdown. 然後隔天早上起來再次重起 hadoop. 再試一次就成功了....真是奇怪 ><

    2008-08-22 13:41:45

  11. 11. jlupaopao 說:

    回复6楼:
    put: Target input/conf is a directory
    的原因可能是以前你的操作已经生成了一个input文件夹,可以换一个名字检验一下

    2008-08-22 20:56:55

  12. 12. Allen 說:

    板大你好~
    這幾天我也在架設hadoop
    我是使用兩台ubuntu,hadoop 0.18的版本
    照著板大所寫的教學後出了一點問題
    在namenode(hdp1)的web操作介面上(hdp1:50070)只看的到一個活的node(也就是hdp1自己本身)
    無法抓到第二個node(hdp2)
    看了一下hdp2的log檔發現似乎是hdp2無法連到hdp1?
    (hdp2的authorized_key也要丟給hdp1嗎??)
    測試過hdp1可以直接ssh到hdp2不須輸入密碼
    hdp2本身使用Pseudo-Distributed MODE也可以work
    不知道板大有沒有遇過這種問題可以指點一下
    謝謝~

    2008-09-30 23:51:01

  13. 13. Shen 說:

    呃... 抱歉~ 我沒遇過~
    而且遺憾的是~ 我目前手邊沒有機器能協助你排解困難~
    所以~ 照你如此詳細的描述,我只能建議你再次確認整個設定~ 如:是否整個環境設定及目錄結構都已拷貝到另外的機器上(hdp-2)?

    (hdp2的authorized_key也要丟給hdp1嗎??)
    不用~

    等我有機器時再來裝一下0.18版試試看~
    good luck!

    2008-10-01 00:10:04

  14. 14. Allen 說:

    問題終於解決了,原來是port被IPv6綁定住了!害我搞了好幾天@@"想再請問一下板大是否知道web介面中Last Contact這一欄是做什麼用的?在我連到web介面時這一欄會從0~3不規則的變動,不知這樣是否正常?謝謝

    2008-10-03 20:05:43

  15. 15. Shen 說:

    恭禧! ^^
    Last Contact確切的目的我目前無法回答你,但是這個值會持續變動是正常的!
    有興趣的話,你可以去看它的dfshealth.jsp原始碼:
    ......(約97~100行)
    long timestamp = d.getLastUpdate();
    long currentTime = System.currentTimeMillis();
    out.print("<td class=\"lastcontact\"> " +
    ((currentTime - timestamp)/1000) +
    或者你也可以下「bin/hadoop dfsadmin -report」來觀察~ 裡頭也有個「Last contact」持續不斷的更新目前的時間~
    而上述jsp程式中的變數「d」指的是「DatanodeDescriptor」class,而這個class是繼承「DatanodeInfo」(getLastUpdate()屬於這個class)~
    總之就是用來描述「Datanode」的健康情況用的~ ^^ 供您參考

    2008-10-03 21:24:01

  16. 16. tiger 說:

    诸位好:我也按照描述见了一个4台主机的环境,运行wordcount的时候总是出错, 但偶尔也会成功一次,奇怪啊
    WARN org.apache.hadoop.mapred.TaskTracker:
    getMapOutput(attempt_200810231615_0001_m_000000_0,0) failed :

    org.apache.hadoop.util.DiskChecker$DiskErrorException: Could not find taskTracker/jobcache/job_200810231615_0001/attempt_200810231615_0001_m_00000
    0_0/output/file.out.index in any of the configured local directories

            at
    org.apache.hadoop.fs.LocalDirAllocator$AllocatorPerContext.getLocalPathToRead(LocalDirAllocator.java:359)
    at
    org.apache.hadoop.fs.LocalDirAllocator.getLocalPathToRead(LocalDirAllocator.java:138)
    at
    org.apache.hadoop.mapred.TaskTracker$MapOutputServlet.doGet(TaskTracker.java:2402)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
            at
    org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:427)
            at
    org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:475)
            at
    org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:567)
            at org.mortbay.http.HttpContext.handle(HttpContext.java:1565)
           at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebAppl

    环境如下:
    linux ras2.6.9
    hadoop 0.1.8.1

    hadoop-site.xml 内容如下:
    <configuration>
    <property>
    <name>fs.default.name</name>
    <value>site1:9000</value>
    </property>
    <property>
    <name>mapred.job.tracker</name>
    <value>site2:9001</value>
    </property>
    <property>
    <name>dfs.replication</name>
    <value>1</value>
    </property>
    </configuration>

    masters:
    site1
    site2

    slaves:
    site3
    site4

    2008-10-24 11:39:57

  17. 17. Ekin 說:

    我跑wordcount在mapreduce的時間很久然後會出現Too many fetch-failures訊息,這是什麼意思阿??

    2009-02-13 15:35:53

  18. 18. Shen 說:

    請問您的Hadoop版本為何?
    在0.15.0版本上這是一個Bug (https://issues.apache.org/jira/browse/HADOOP-1930)

    2009-02-13 16:22:30

  19. 19. Ekin 說:

    我用的是0.17.2.1版
    不過我只用了兩台PC去架....
    這樣有影響嗎??
    不過最後也能跑出結果....
    只是等了大約20分鐘以上~~

    2009-02-13 16:54:15

  20. 20. Shen 說:

    @Ekin
    有幾台Datanode?兩台都是嗎?處理的資料量多大?
    還是有更明確的錯誤訊息?
    因為我沒遇過這樣的情形,祝你好運!

    2009-02-13 18:16:26

  21. 21. Ekin 說:

    Shen大你好...
    我在hadoop-site.xml中的設定
    ....
    <property>
    <name>fs.default.name</name>
    <value>hdp-1:9000</value>
    </property>
    <property>
    <name>mapred.job.tracker</name>
    <value>hdp-2:9001</value>
    </property>
    ....

    跑程式時卻會發生
    ipc.Client: Retrying connect to server: hdp-2:9001. Already tried 1 time(s)
    ........

    如果把mapred.job.tracker設定成hdp-1:9001就沒問題.....
    這樣是不就限定namenode和jobtracker要在同一台機器上?

    2009-02-18 14:15:06

  22. 22. Shen 說:

    跑程式時發生的?
    這樣的情況會不會在啟動時就已經出現無法連線的問題了,建議你查看一下log file.
    先檢查一下「/etc/hosts」確定主機和IP解析是正確無誤的,或是啟動之後開啟「http://hdp-1:50070/」檢查一下有幾台Datanode是活著的。
    good luck!

    2009-02-19 23:42:41

  23. 23. Conan 說:

    請問
    什麼情況下會找不到Datanode?
    我有時會出現這樣的情形,比如原本已經有三台架設好的,且運作也正常,當我再多架一台slave,也修改了conf/slaves,也改了/etc/hosts了,但卻所有的Datanode都找不到了
    謝謝

    2009-03-20 00:19:26

  24. 24. Shen 說:

    嗯~ 關於你的問題,由於我目前手上沒有任何的機器與環境,所以沒有辦法協助你解決問題,你可以試著將你的問題丟到hadoop mailing list(http://hadoop.apache.org/core/mailing_lists.html)。
    good luck!

    2009-03-20 16:55:14

  25. 25. VincentHu 說:

    Hi,This a pretty good artical.....
    我有一個問題,想請教先進,除了Word Count之外,你對於利用Hadoop去時作其它的功能的方式了解嗎?因為我正在找任何一個範例,是除了Word Count以外的範例

    2009-05-25 23:05:12

  26. 26. Shen 說:

    @VincentHu
    WordCount是一個最基本用來解釋MapReduce如何運作的例子,就像學習任何程式中的HelloWorld範例。
    Hadoop的應用很廣泛,常見於一些Machine Learning領域(如:Apache Mahout)或是搜尋引擎(Apache Nutch),另外NYT也用它應用於大量批次轉換檔案格式,另外也有像HBase這樣的Distributed Storage System也架構在Hadoop之上,這些都是值得探討的地方。
    筆者的部落格也有幾篇應用Hadoop的例子,希望對您有幫助,謝謝。

    2009-05-25 23:29:47

  27. 27. tim 說:

    可以請問一下嗎 我用 hadoop 0.18.3
    vmware架設了三個,形成cloud
    在使用瀏覽器觀看時可以順利看到三台電腦
    http://<hadoopIP>:50070/dfshealth.jsp

    可是我想按 "Browse the filesystem" 卻沒辦法成功看到檔案,找不到解決辦法。可以提供我意見嗎 謝謝

    2009-06-17 00:39:58

  28. 28. Shen 說:

    @tim
    我想您可以試著檢查一下領域名稱和IP的對應,或是您可以提供更詳細的說明。

    2009-06-17 19:57:25

  29. 29. leo 說:

    請問14樓的 shen
    你是如何解決在namenode(hdp1)的web操作介面上(hdp1:50070)只看的到一個活的node(也就是hdp1自己本身)
    無法抓到第二個node(hdp2)

    我也遇到這個問題,可以麻煩你詳細說明一下嗎?

    2009-06-24 02:19:03

  30. 30. Conan 說:

    您好
    想請問一下如何在程式指令查詢正在執行中的Job
    功能類似bin/hadoop job -list
    我是想要用來查詢、啟動、kill Job用的
    謝謝

    2009-07-29 22:56:02

  31. 31. yuki 說:

    @28樓的Shen:

    我也遇到一樣的問題

    安裝了叢集環境的Hadoop
    可以開啟 http://IP:50070/dfshealth.jsp的頁面
    顯示的Live Nodes數目正確,也都有其他的Cluster Summary

    但是當我點選"Browser the filesystem"時
    卻會出現找不到此網頁的錯誤訊息
    請問要如何查驗問題呢?

    也想請問一下,要如何驗證您說的"檢查領域名稱與IP對應"呢?

    謝謝

    2010-04-09 10:13:13

  32. 32. Shen 說:

    在你使用瀏覽器的電腦上修改 /etc/hosts (for Linux)
    如果是Windows平台請檢查 C:\WINDOWS\system32\drivers\etc\hosts

    2010-04-09 11:13:47

  33. 33. yuki 說:

    @shen
    謝謝!
    果然是這邊的問題 :P
    (之前以為是server的etc/hosts的問題,原來是要改browser上的)


    打擾了~

    2010-04-09 11:55:03

  34. 34. Cookie 說:

    想要請問Shen大
    我在使用hadoop要他跑這一篇所舉的範例時
    他會顯示FAILED的訊息

    但是奇怪的是雖然在執行的過程中緩慢,可是結果卻是正常的
    在使用http://ubuntu01:50070查看Live Nodes狀態時,他的Used率卻都是顯示0%

    我把所有的參數列在這裡供Shen大參考

    http://www.google.com/notebook/public/17208103153723465626/BDRMZDAoQpNqC8YUl?hl=zh-TW

    感恩解惑

    2010-05-04 11:13:21

  35. 35. Shen 說:

    試著修改一下你的/etc/hosts檔案:
    將下面這一行:
    127.0.1.1 ubuntu01.mshome.net ubuntu01
    改成:
    127.0.1.1 ubuntu01.mshome.net

    拿掉ubuntu01就是了,試試看.

    2010-05-04 11:21:35

  36. 36. Cookie 說:

    感恩Shen大

    果然/etc/hosts這份文件佔了部份的問題
    原先是想說他預設就有這個內容,所以不做更動,
    沒想到會造成這樣的錯誤,
    雖然他預設這樣寫確實是不對的(內容應該要一個IP對應到一個Hostname)

    另外想要請教一些問題:
    1、在Hadoop剛Sartart-all.sh時到http://ubuntu01:50070/應會顯示Safe Mode is ON字樣,但是我這裡會一直讀取網頁,遲遲不會顯示任何東西,直到過了約十分鐘後會先出現ubuntu02、和ubuntu03的node訊息(ubuntu01還未出現):

    http://cid-f54311d61d5f3f46.skydrive.live.com/self.aspx/.Public/Hadoop/NoSafeMode01.JPG
    http://cid-f54311d61d5f3f46.skydrive.live.com/self.aspx/.Public/Hadoop/NoSafeMode02.JPG

    直到在過了約5分鐘ubuntu01才會正常顯示:
    http://cid-f54311d61d5f3f46.skydrive.live.com/self.aspx/.Public/Hadoop/NoSafeMode03.JPG
    http://cid-f54311d61d5f3f46.skydrive.live.com/self.aspx/.Public/Hadoop/NoSafeMode04.JPG

    這段等待期http://ubuntu01:50030/與http://ubuntu01:50060/皆在讀取中

    2、每一次在執行/opt/hadoop/bin/hadoop namenode -format指令後皆要在將另外兩台機器上面把其datanode tmp檔刪除(rm -rf /opt/hadoop/tmp/hadoop-cookie/dfs/data),否則在start-all的另外兩台的datanode將不會開啟(執行jps後將不會出現datanode)。

    感恩解惑

    2010-05-04 18:21:07

  37. 37. Cookie 說:

    不好意思上述應該不能稱之為問題,應該是說這兩個現象是否正常

    感恩^^

    2010-05-04 18:22:29

  38. 38. Shen 說:

    1. 十分鐘是有點久了點... 第一次啟動Hadoop就如此嗎?詳細的情形要看log檔才知道是怎麼回事。
    2. 是的,要格式化hdfs之前都需要將之前的資料刪除。

    2010-05-04 18:56:27

  39. 39. Cookie 說:

    了解,詳細情形還在查找

    非常感恩Shen大解惑^^

    2010-05-10 08:23:06

  40. 40. amy 說:

    請問您架設的三台主機的規格是什麼?謝謝!

    2010-09-19 20:09:26

  41. 41. Shen 說:

    to amy:

    那些電腦已經不存在了,所以也無從得知。

    2010-09-20 00:56:49

  42. 42. cd 說:

    請問shen大一個問題
    當我都設定好時 要去run wordcount範例程式的時候
    我打
    bin/hadoop jar hadoop-0.20.2-examples.jar wordcount input ouput
    可是終端機的畫面直接停住 任何文字都沒有跑出來 感覺像是死當
    可以幫我解惑嗎?謝謝!

    2010-12-23 19:08:23

  43. 43. Shen 說:

    直接停住?我想你直接去看Log檔會比較清楚到底發生什麼情況。
    或是回頭再確認一次安裝步驟,例如:是否有格式化?DataNode是否正常啟動等等。

    2010-12-23 22:58:02

  44. 44. cathy 說:

    您好,我剛開始study cloud,讀了很多文章但觀念還是不太清楚
    想請問您
    如果我只是要用一台個人電腦架設測試用的雲端平台
    裝設VMware vSphere4的話
    還需要用到Hadoop嗎?

    另外Hadoop是直接拿來控管虛擬資源的軟體嗎
    可是我看很多人再用JAVA改程式
    讓我不太能理解
    Hadoop是拿來寫的還是拿來用的呢?

    謝謝您

    2011-02-12 15:52:43

  45. 45. Shen 說:

    Dear cathy,

    如果你要的是IaaS相關的建置軟體的話,請參考Xen or VMware等軟體,這和Hadoop沒有直接的相關。

    Hadoop是一個可讓你用來作大量資料分散式處理或儲存的一個平台,而你需要自行撰寫MapReduce程式,讓它在Hadoop的平台上執行,執行的結果會儲存在HDFS的分散式檔案系統中。

    2011-02-14 08:43:02

  46. 46. Betty 說:

    您好^^
    我在Windows平臺上用Cygwin模擬hadoop0(當作master&slave),
    另外也利用vmware架設2台主機hadoop1,hadoop2(當作slave),
    start=all.sh之後
    http://140.118.20.81:50030的node數為3,
    但是http://140.118.20.81:50070的live datanode數為1,
    而且node名稱會一直變動(ex.haddop0->hadoop1->haddop2->....)
    請問是什麼原因呢??
    是因為實際上使用的電腦只有一台嗎???

    2011-09-04 16:50:36

  47. 47. Shen 說:

    Dear Betty,

    如果你只是想玩MapReduce的話,建議採用Local Mode Hadoop即可,若你想測試實際的Hadoop Cluster,還是建議用獨立的機器去玩.. 用VM去跑有點不切實際

    2011-09-05 09:24:30

  48. 48. carina 說:

    你好,請問我是使用VM裡的terminal來輸入,可是才到"修改「三台」主機的「/etc/hosts」"這個步驟時就卡住了,我沒有辦法輸入指令去修改這部分的資料,可以請問輸入的步驟跟指令有哪些嗎?謝謝你

    2011-10-10 13:17:42

  49. 49. Shen 說:

    @carina
    sudo vim /etc/hosts

    2011-10-11 10:26:00

  50. 50. carina 說:

    你好,不好意思,我的意思是我在輸入sudo vim /etc/hosts並輸入密碼之後進去的畫面,沒有辦法做修改,請問這邊應該輸入什麼指定呢?謝謝你

    2011-11-17 07:06:31

  51. 51. Shen 說:

    @carina
    權限不夠?還是忘了切換到「編輯」模式?

    2011-11-17 09:02:46

  52. 52. apple 說:

    大大你好:

    我照著你的說明安裝2台機器,但是live node都只有顯示1

    我已經有關閉ipv6用下面這條指令

    HADOOP_OPTS=-Djava.net.preferIPv4Stack=true

    但是還是不行,請問一下要如何解決?

    2012-02-04 17:53:24

  53. 53. jazz 說:

    @apple
    建議先查一下兩台 datanode 的 log,這樣比較有辦法除錯。

    2012-02-06 09:18:15

  54. 54. apple 說:

    我是用hadoop-0.20.2的版本

    他好像將hadoop-site.xml給拆成mappred-site.xml core-site.xml hdfs-site.xml

    請問mappred-site.xml的內容是否為
    property>
    <name>mapred.job.tracker</name>
    <value>hdp-1:9001</value>
    </property>

    hdfs-site.xml內容是否為
    <property>
    <name>dfs.replication</name>
    <value>1</value>
    </property>

    core-site.xml內容是否為
    <property>
    <name>fs.default.name</name>
    <value>hdfs://hdp-1:9000</value>
    </property>
    <property>
    <name>hadoop.tmp.dir</name>
    <value>/home/hdp/dfs/data</value>
    </property>

    比較有疑問的是我並沒有/home/hdp/dfs/data這個資料夾
    是要自行建立嗎?
    謝謝

    2012-02-06 12:45:31

  55. 55. jazz 說:

    @apple

    > 比較有疑問的是我並沒有/home/hdp/dfs/data這個資料夾是要自行建立嗎?

    您可以修改成自己有寫入權限的路徑。這篇文章是用 hdp 這個身份去執行 hadoop。

    2012-02-06 13:46:14

  56. 56. apple 說:

    Q1:所以只要指定成有寫入權限的路徑就好了?
    Q2:可以幫忙解釋一下這個property的作用嗎?

    2012-02-06 15:28:16

  57. 57. jazz 說:

    A1: 是的,假設您的身份是 apple ,那可以指定成 /home/apple/dfs。然後 mkdir -p ~/hadoop 剩下的執行 start-all.sh 時就會把 mapred 跟 dfs 等目錄建起來。
    A2: hadoop.tmp.dir 跟另外四個參數有關,也就是存放 namenode, jobtracker, datanode, tasktracker, secondarynamenode 的目錄預設值都跟 hadoop.tmp.dir 有關。

    參數說明詳 http://hadoop.apache.org/common/docs/current/core-default.html

    http://hadoop.apache.org/common/docs/current/hdfs-default.html

    dfs.name.dir 預設值 ${hadoop.tmp.dir}/dfs/name
    dfs.data.dir 預設值 ${hadoop.tmp.dir}/dfs/data

    http://hadoop.apache.org/common/docs/current/mapred-default.html

    mapred.local.dir 預設值 ${hadoop.tmp.dir}/mapred/local
    mapred.system.dir 預設值 ${hadoop.tmp.dir}/mapred/system
    mapred.temp.dir 預設值 ${hadoop.tmp.dir}/mapred/temp

    2012-02-07 17:22:44

  58. 58. start 說:

    想問一下 我想用這個軟體來做像是 google這種搜尋引擎
    例如:我放1000筆圖片在這資料庫 而我要找第N個圖
    這個軟體做得到嗎><?

    2012-02-21 22:16:55

  59. 59. Shen 說:

    Hadoop是用來分散式處理,你的需求比較像是需要HBase

    2012-02-22 14:50:25

  60. 60. start 說:

    我描述有點錯誤
    應該說我想要在雲端建立個圖庫 將圖片運算後再傳回PC(甚至是手機)
    在網路上看過些paper
    JSP應該就能做到這樣吧?
    還是一定要hadoop或是hbase這種程式呢?

    2012-02-23 09:10:34

  61. 61. Shen 說:

    不一定需要Hadoop或HBase, 除非量很大,否則資料庫可能就可以簡單的應用。

    2012-02-24 16:11:21

  62. 62. start 說:

    我現在是在做專題
    很謝謝你提供這麼多資訊及耐心回答
    不知道你願不願意再跟我多透露點訊息
    就是以圖書系統為例好像比較多是資料庫 然後對資料裡做查詢
    那如果說今天是圖片呢?
    Amazon好像做過從手機拍一本書 再從資料庫尋找就能知道這本書的價錢
    我想問的是如果說今天我也想做小型的這種資料庫
    我是有想說用access 但是好像mysql比較OK是這樣嗎?
    能否給點方向 或是該看什麼書籍
    謝謝你

    2012-02-24 23:00:39

  63. 63. Jazz 說:

    以圖書系統為例,一般都是掃描 ISBN 條碼來取得書籍的描述。這是最容易做的方式。

    如果要作到拍書皮封面,比對圖片書籍,技術上會需要:
    (1) 所有書籍的封面 -> 經過圖形辨識產生每張圖的特徵值(RGB, 邊緣外框, 形狀等) -> 存到資料庫供後續比對用 (DataSet A)
    (2) 手機上傳圖片 -> 經過相同的圖形辨識程式,產生目標圖的特徵值。(DataSet B)
    (3) 將 DataSet B 與 DataSet A 進行兩兩比對,計算相似度(您必須自行定義相似度的計算方式),然後根據相似度分數高低,列出對應的圖書資料。

    2012-02-27 12:00:07

  64. 64. lala 說:

    不好意思...
    我想請問一下,就是我最近開始在大學專題
    也是第一次接觸hadoop這個軟體(ubuntu)
    使用了一台NameNode,兩台DataNode
    專題老師要求我們將些許資料匯入到DataNode裡
    但我們還不熟hadoop...
    所以想請問一下,我們該使用甚麼資料庫去儲存資料
    是Hbase 還是 MySQL 還是有較符合初學者使用的資料庫可以儲存資料呢?
    感謝^^

    2012-03-09 22:49:18

  65. 65. jazz 說:

    Hadoop 的 DataNode 是檔案系統,就像您電腦的檔案總管。
    負責存放的是「檔案」。因此老師要求您放些許資料到 DataNode,應該是放「檔案」。
    雖然 HBase 是基於 Hadoop HDFS 的資料庫,但它的 Key-Value 設計可能與過去大家學的 MySQL 關聯式資料庫(Rational Database)觀念相差非常多,也沒有標準 SQL 語法可用。使用前請三思,莫為了「用」而用。
    - Jazz

    2012-03-11 01:02:01

  66. 66. lala 說:

    請問一下...
    如果我是在兩台DataNode中使用MySQL來存放資料...
    再由NameNode來抓取資料 會不會有任何問題
    不好意思...因為是新手很多資料的不清楚~

    2012-03-11 16:25:44

  67. 67. jazz 說:

    只能說 datanode 跟 mysql 是兩回事....
    一個是檔案系統,一個是資料庫。
    資料庫雖然是裝在檔案系統之上,但 MySQL 硬是要裝在 HDFS 上,
    條件是要把 HDFS 掛載起來,況且這樣做效能也不好。

    2012-03-12 14:30:59

Leave a Comment

Copyright (C) Ching-Shen Chen. All rights reserved.

::: 搜尋 :::

::: 分類 :::

::: Ads :::

::: 最新文章 :::

::: 最新回應 :::

::: 訂閱 :::

Atom feed
Atom Comment