發表文章

目前顯示的是有「hadoop」標籤的文章

OpenStack Sahara (3)

圖片
關於OpenStack Sahara, 其中還有一個特點, 就是Elastic Data Processing (EDP), 根據 OpenStack文件 上的敘述, EDP被定義為: Sahara EDP uses a collection of simple objects to define and execute jobs. These objects are stored in the sahara database when they are created, allowing them to be reused. This modular approach with database persistence allows code and data to be reused across multiple jobs. The essential components of a job are: executable code to run input and output data paths, as needed for the job any additional configuration values needed for the job run 根據上述定義, EDP是一種工作 (job) 管理的架構, 藉由Sahara database, 同時重複利用執行的程式以及被處理的資料,

OpenStack Sahara (2)

圖片
在進一步介紹Sahara之前, 我們要先了解hadoop的設計原理, hadoop是一開始雲端的平行運算平台, 基於Google提出的MapReduce架構所設計, 在一開始雲端的環境中, 儲存的虛擬化比較成熟, VM的概念並不盛行, 因此, hadoop是基於實體機的架構進行設計, 在hadoop的架構下, 分成兩個主要的部份: HDFS, 一個分散式資料儲存系統; MapReduce: 基於HDFS的平行運算, (來自: https://cvw.cac.cornell.edu/MapReduce/locality ) 在上圖中, 藍色方塊代表HDFS中的資料鏡像, MapReduce基於資料鏡像的位置, 進行資料的運算, 也就是所謂: 搬程式不搬資料 , 這樣的架構假設了資料大小遠大於程式, 適合於大資料平行化處理, 考慮到硬碟的讀取速度, 通常要至少大於1TB的資料較有效率, 注意: hadoop事先設計HDFS, 在設計基於HDFS的平行運算架構, 因此, MapReduce的平行運算天生就是為了處理大資料, 容錯, 以及實體機而設計, 基於這樣的先天設計, hadoop適用於TB以上的資料平行運算, 本身自帶容錯機制, 而且對於運算資源的調控極為笨拙.

OpenStack Sahara (1)

圖片
OpenStack中的Sahara專案是為了提供OpenStack平台快速布建hadoop服務, 為了瞭解Sahara, 我們要先了解hadoop是甚麼, 以hadoop 2.0為例, hadoop提供的運算平台有以下三種特色: 以資料為基礎的計算架構, 也就是MapReduce 資料備份與提取機制, HDFS, 用以處理雲端節點故障的錯誤 在YARN(hadoop 2.0)中, 則加入了運算資源調度的功能 雖然hadoop原本設計給實體機作為雲端運算平台, 但對於IaaS架構而言, 利用VM提供hadoop架構有以下好處: 通常一個hadoop cluster只會提供一種特殊應用, 在有多個cluster下, VM可以減低管理cluster的麻煩 對於早期布署與小規模應用, IaaS提供一個友善的環境發展演算法與scaling機制 考慮到以上好處, OpenStack有Sahara計畫支持hadoop在OpenStack上的布署, 同時, 在其他公有雲平台, 如Amazon和Azure都有提供相對應的服務, 提供使用者一個快速布建與測試hadoop cluster的服務,

hbase-client java 程式的編譯與執行

完成hbase從即架設之後, 接下來, 就要利用hbase來存取資料, 在hbase的架構中, 原生的存取方式有三種: thrift, java program 以及 hbase shell, 在這篇文章中, 我們假設hbase中已經有一個myHBaseTable, 在myHBaseTable中, 只有一個column: myFamily, 接著, 我們想執行以下的程式: import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.client.Get; import org.apache.hadoop.hbase.client.HTable; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.ResultScanner; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.util.Bytes; public class hbasetest {     public static Configuration conf;     static {         conf = HBaseConfiguration.create();         conf.set("hbase.zookeeper.property.clientPort", "2222");         conf.set("hbase.zookeeper.quorum", "master.hbase.mbwcl.nctu.edu.tw");     }     public static void main(String[] args) throws IOException {         HTable ta

hbase 0.96 on hadoop 1.1.2 安裝

在完成了hadoop安裝後, 我們可以繼續安裝hbase, hadoop的安裝可以參考: hadoop 1.1.2安裝(1) , hadoop1.1.2安裝(2) , 在安裝hbase前, 要先確認hadoop的版本是否 相容(chapter 4.1) : HBase-0.92.x HBase-0.94.x HBase-0.96 Hadoop-0.20.205 S X X Hadoop-0.22.x S X X Hadoop-1.0.x S S S Hadoop-1.1.x NT S S Hadoop-0.23.x X S NT Hadoop-2.x X S S 在hbase 0.96版本中, 就已經開始支援hadoop 2.0 (YARN), 不過, 考量到我們對於haddop 1.x版本較為熟悉, 我們還是以hadoop 1.1.2作為使用的hadoop版本範例,

hadoop1.1.2安裝 (2)

在 上一篇文章 中, 介紹完hadoop 1.1.2的環境建立後, 在這一篇文章中, 將介紹hadoop 1.1.2的參數設定, 在hadoop資料夾中, 所有設定檔都在hadoop/conf/, 首先, 我們先設定hbase-env.sh: # The java implementation to use.  Required. export JAVA_HOME=/usr/lib/jvm/java-6-oracle/ # The maximum amount of heap to use, in MB. Default is 1000. export HADOOP_HEAPSIZE=1000 # Where log files are stored.  $HADOOP_HOME/logs by default. export HADOOP_LOG_DIR=/opt/logs/hadoop # The directory where pid files are stored. /tmp by default. export HADOOP_PID_DIR=/opt/pids/hadoop 在上述設定中, 一開始, 先設定 java 的路徑(安裝的路徑, 上面是預設路徑), 第二項則是 java 程式使用的 heap (記憶體大小), 第三項則是 LOG 的位置, 第四項則是 PID (Process ID) 的存放位置, 盡量設在 hadoop 資料夾以外的地方 (放在/opt/data/hadoop), 接著, 設定 core-site.xml: <configuration>     <property>         <name>fs.default.name</name>   <value>hdfs://master.hbase.mbwcl.nctu.edu.tw:9000</value>     </property> </configuration> 在 hadoop 中, 所有的設定都是以 xml 的格式, 儲存至檔案中, 在 core-site.xml 設定中, 設定 hd

hadoop1.1.2 安裝 (1)

在這一篇文章中, 我們將開始介紹如何安裝 hadoop, 我們以1.1.2版本為基礎, 介紹 hadoop 的安裝流程, hadoop 是一個叢集運算與儲存的計算框架, 在 hadoop 1.x 版本中, 可以分成兩個部分: HDFS (hadoop distributed file system) 以及 MapReduce, HDFS 是 hadoop 中的儲存架構, 提供分散式的資料儲存, 而 MapReduce 是計算的框架, 提供分散式的運算框架, 有關 hadoop 更詳細的介紹, 可以參考之前的文章. 在安裝hadoop之前, 必須先確定環境已經設定正確, 包括了: java JDK安裝(1.6版以上) , 共通的使用者權限( 帳戶 以及SSH), 以及網路的對應( /etc/hostname , /etc/hosts, 關閉IPV6 ), 這一部分的設定與說明, 我們可以參考網路上的資源, 或是之前的文章, 在完成上述設定後, 我們已經建立了一個叢集: master.hbase.mbwcl.nctu.edu.tw 192.168.2.59 slave01.hbase.mbwcl.nctu.edu.tw 192.168.2.60 slave02.hbase.mbwcl.nctu.edu.tw 192.168.2.61 接著, 我們就進行hadoop 1.1.2的安裝, 在hadoop的架構中, 所有的程式都以java程式執行, 因此, 我們只需要下載hadoop的執行程式, 分布在每個節點上, 透過SSH的方式在節點上執行, 並透過網路資料交換(socket), 確認節點的任務進行. 在linux的環境下, 我們先將/opt資料夾更改存取權限, 以及擁有者(user:hadoop), 使/opt成為hadoop的根目錄: $ sudo chown -R user:hadoop /opt $ sudo chmod -R 777 /opt 接著, 在/opt目錄下, 用wget的方式, 獲取hadoop的壓縮檔, $ wget https://archive.apache.org/dist/hadoop/core/hadoop-1.1.2/hadoop-1.1.2.tar.gz 在

hadoop介紹

圖片
hadoop為一個雲端運算框架. 在雲端的分類中,hadoop屬於PaaS(Platform as a Service), 也就是說hadoop在雲端上提供一個運算的框架,提供使用者計算模型與資料儲存, 方便使用者直接存取大量分散式的虛擬機資源. hadoop一共提供兩種服務, 一個是分散式的資料儲存(HDFS, hadoop distributed file system), 另一種則是基於HDFS的平行運算架構,MapReduce. 在接下來的文章中, 我們將非常簡短的介紹一下HDFS和MapReduce.

在 ubuntu 中關閉 IPV6

(問題) 如何關閉ubuntu中IPV6的功能? (方法) 在一些應用中(如:hadoop)不支援IPV6, 因此,必須在安裝強先把預設的IPV6功能關閉.指令如下:

在ubuntu中設定hostname

(問題) 在ubuntu中,如何設定並且更改hostname? (方法) hostname是Linux中機器的識別方式, 在ubuntu中,hostname存放的位置為/opt/ect/hostname,

增加ubuntu使用者

(問題) 如何增加一個ubuntu中的使用者? (方法) 首先,問題是為什麼要增加一個新的使用者? 在作業系統中(包括Windows和Linux),為了安全性管理, 不同的使用者,擁有不同的存取權限, 為什麼要設定權限呢?這是考量到系統的安全性. 將hadoop的程式安裝獨立於其他使用者,能夠減少資料被錯誤取用的狀況.

在ubuntu上安裝oracle Java

(問題) 如何在ubuntu上透過指令的方式安裝oracle Java? (方法) 因為版權的問題,ubuntu不能直接透過apt-get的方式安裝oracle Java, 若是我們仍想要透過指令安裝oracle Java, 則必須先將webupd8team的位址加入ubuntu更新的來源中.