| | 1 | ◢ | <[wiki:NTUOSS160412 回課程大綱]> ▲ | <[wiki:NTUOSS160412/Lab2 實作二]> ◣ |
| | 2 | |
| | 3 | = 實作一 Lab1 = |
| | 4 | |
| | 5 | {{{ |
| | 6 | #!html |
| | 7 | <p style="text-align: center;"><big style="font-weight: bold;"><big>單機模式<br/>Local (Standalone) Mode</big></big></p> |
| | 8 | }}} |
| | 9 | [[PageOutline]] |
| | 10 | {{{ |
| | 11 | #!text |
| | 12 | 請先連線至 nodeN.3du.me , N 為您的報名編號 |
| | 13 | }}} |
| | 14 | |
| | 15 | == STEP 0 : 確認實驗環境 == |
| | 16 | |
| | 17 | * 此次課程,將運行於 Ubuntu 12.04.2 LTS 版本。 |
| | 18 | * 為了方便課程進行,將採用遠端的 Amazon EC2 VM 為主要實驗環境,將只能使用到 2014/07/06 23:00 為止。 |
| | 19 | * 首先請連線至 nodeN.3du.me ,請將 N 更換為您的報名編號。 |
| | 20 | |
| | 21 | || '''帳號''' || ubuntu || '''密碼''' || 現場說明 || |
| | 22 | |
| | 23 | * 使用 PuTTY 登入 Amazon EC2 的[http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html 官方說明文件] |
| | 24 | * 其次,為了讓大家未來可以持續做課程實作練習,也將分享如何申請 http://koding.com 的虛擬機器服務。 |
| | 25 | |
| | 26 | == 下載 pietty == |
| | 27 | |
| | 28 | * 您可以使用自己慣用的 SSH Client 來做練習,這裡只是提供一個國人修改自 PuTTY 的中文化 SSH Client。 |
| | 29 | * http://ntu.csie.org/~piaip/pietty/archive/pietty0327.exe |
| | 30 | |
| | 31 | * 如果講師提供的是 *.pem 的金鑰檔案,請下載 [http://the.earth.li/~sgtatham/putty/latest/x86/puttygen.exe PuttyGen] 並參考 Amazon EC2 的[http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html 官方說明文件],將 *.pem 轉換成 *.ppk 金鑰檔案。 |
| | 32 | |
| | 33 | * 為了連線至 Amazon EC2 ,您必須先設定 PuTTY / PieTTY 採用 [http://the.earth.li/~sgtatham/putty/latest/x86/puttygen.exe PuttyGen] 產生的 *.ppk 金鑰,才有辦法連到 nodeN.3du.me |
| | 34 | * 設定參考畫面: |
| | 35 | * 請輸入遠端主機網址 nodeN.3du.me ,選擇 PuTTY 模式,然後參考下圖設置 ppk 金鑰。 |
| | 36 | * [[Image(YMU110509/Lab1:pietty_01.jpg)]] |
| | 37 | * 然後選擇 SSH auth 選擇私鑰 userN.ppk |
| | 38 | * [[Image(III140614/Lab2:EC2_PPK.PNG)]] |
| | 39 | |
| | 40 | == <補充> 拿 Ubuntu 12.04 Live CD 當自習環境 == |
| | 41 | |
| | 42 | * 備註:經測試 Ubuntu 12.04 Live CD 在虛擬機器環境下運行,需要__'''至少 3GB RAM '''__才能正常執行後續的實作!! |
| | 43 | * 若您是使用自己的 Ubuntu 12.04 Live CD 請先安裝 git |
| | 44 | {{{ |
| | 45 | ~$ sudo apt-get -y install git |
| | 46 | }}} |
| | 47 | |
| | 48 | == STEP 1 : 從 github 取得本次課程的範例 == |
| | 49 | |
| | 50 | {{{ |
| | 51 | ~$ git clone https://github.com/jazzwang/hadoop_labs.git |
| | 52 | }}} |
| | 53 | |
| | 54 | * 您應該會看到類似底下的結果: |
| | 55 | {{{ |
| | 56 | #!text |
| | 57 | ~$ git clone https://github.com/jazzwang/hadoop_labs.git |
| | 58 | Cloning into 'hadoop_labs'... |
| | 59 | remote: Counting objects: 249, done. |
| | 60 | remote: Compressing objects: 100% (166/166), done. |
| | 61 | remote: Total 249 (delta 115), reused 176 (delta 44) |
| | 62 | Receiving objects: 100% (249/249), 53.64 KiB, done. |
| | 63 | Resolving deltas: 100% (115/115), done. |
| | 64 | }}} |
| | 65 | * 檢查是否有 hadoop_labs 目錄 |
| | 66 | {{{ |
| | 67 | ~$ cd hadoop_labs/ |
| | 68 | ~/hadoop_labs$ ls -al |
| | 69 | }}} |
| | 70 | |
| | 71 | == STEP 2 : 執行安裝腳本 == |
| | 72 | |
| | 73 | * 首先, 我們來介紹 Hadoop 的三種安裝模式 |
| | 74 | * <參考> http://hadoop.apache.org/docs/stable/single_node_setup.html |
| | 75 | {{{ |
| | 76 | #!text |
| | 77 | Now you are ready to start your Hadoop cluster in one of the three supported modes: |
| | 78 | |
| | 79 | * Local (Standalone) Mode |
| | 80 | * Pseudo-Distributed Mode |
| | 81 | * Fully-Distributed Mode |
| | 82 | }}} |
| | 83 | |
| | 84 | * 開始動手吧~請剪貼以下的步驟: |
| | 85 | {{{ |
| | 86 | ~$ cd ~/hadoop_labs |
| | 87 | ~/hadoop_labs$ sudo apt-get -y install wget |
| | 88 | ~/hadoop_labs$ lab000/hadoop-local-mode |
| | 89 | }}} |
| | 90 | |
| | 91 | * 等待安裝的過程中,讓我們來講解 [https://raw.github.com/jazzwang/hadoop_labs/master/lab000/hadoop-local-mode hadoop-local-mode 這隻 Shell Script] 做了哪些事情。 |
| | 92 | 1. 安裝 Java Runtime Environment (JRE) 與 Java Development Kit (JDK) - 雖然目前 Oracle 已經釋出 JDK/JRE7,但 JDK/JRE 6 還是 Hadoop 開發者有經過大量測試驗證的版本。未來若要進行商業運轉,建議安裝 CDH4 或 HDP 搭配 JRE7。 |
| | 93 | 2. 下載 hadoop-$VERSION.tar.gz |
| | 94 | 3. 解壓縮到 ${HOME}/hadoop |
| | 95 | 4. 設定 ${HOME}/hadoop/conf.local/hadoop-env.sh |
| | 96 | 5. 設定 ${HOME}/.bashrc 加入 PATH 環境變數 |
| | 97 | |
| | 98 | * 安裝完成,首先先讓我們觀察有幾個 java process |
| | 99 | {{{ |
| | 100 | ~/hadoop_labs$ jps |
| | 101 | }}} |
| | 102 | |
| | 103 | * 觀察有沒有開 port |
| | 104 | {{{ |
| | 105 | ~/hadoop_labs$ netstat -nap | grep java |
| | 106 | }}} |
| | 107 | |
| | 108 | * 讓我們來複習一下 HDFS 的基本操作 |
| | 109 | {{{ |
| | 110 | ~/hadoop_labs$ cd ~ |
| | 111 | ~$ ls |
| | 112 | ~$ source ~/.bashrc |
| | 113 | ~$ hadoop fs -ls |
| | 114 | ~$ hadoop fs -mkdir tmp |
| | 115 | ~$ hadoop fs -ls |
| | 116 | ~$ ls |
| | 117 | ~$ hadoop fs -put ${HOME}/hadoop/conf.local input |
| | 118 | ~$ hadoop fs -ls |
| | 119 | ~$ ls |
| | 120 | }}} |
| | 121 | |
| | 122 | == 實作習題 == |
| | 123 | |
| | 124 | 試回答以下問題: |
| | 125 | |
| | 126 | 1. 當您下 jps 指令之後,除了 jps 以外,看到幾個 java process ? |
| | 127 | {{{ |
| | 128 | #!text |
| | 129 | (A) 0,只有 jps 一個結果 |
| | 130 | (B) 1 |
| | 131 | (C) 2 |
| | 132 | (D) 3 |
| | 133 | (E) 4 |
| | 134 | }}} |
| | 135 | 2. 回到家目錄,執行 hadoop fs -ls 指令,您看到的結果跟直接下 ls 有無不同? |
| | 136 | {{{ |
| | 137 | #!text |
| | 138 | (A) hadoop fs -ls 會顯示完整路徑,並將隱藏檔案也秀出來. ls 只會秀出一般的檔案 |
| | 139 | (B) 顯示 can not access |
| | 140 | }}} |
| | 141 | 3. 在家目錄, 執行 hadoop fs -mkdir tmp 指令,對家目錄有何影響? |
| | 142 | {{{ |
| | 143 | #!text |
| | 144 | (A) 在家目錄底下多了一個 tmp 目錄 |
| | 145 | (B) 家目錄沒有任何改變 |
| | 146 | }}} |