Hadoop從存儲上來講,是相似於冗餘磁盤陣列(RAID)的存儲方式,將數據分散存儲並提供以提供吞吐量,它的存儲系統就是HDFS(Hadoop Distuibute Fils System);從計算上來講,它經過MapReduce模型,將大數據的計算分發到多臺計算機上完成,再將結果合併,減小計算的時間。node
Hadoop適合於:apache
一、超大數據的計算;服務器
二、一次寫入、屢次讀取的模式;ssh
三、能夠跑在普通的硬件上。分佈式
Hadoop不適合:oop
一、低延遲的數據訪問,它是爲高數據吞吐量應用優化的;測試
二、大量的小文件大數據
Hadoop客戶端須要和namenode進行交互,而namenode中存放的是datanode的文件屬性,且都是在內存中,若是小文件過多,namenode是存放不了的;優化
三、多用戶寫入,任意修改文件。ui
Hadoop適合於一次計算,屢次讀取的場景,如搜索引擎,只支持隨機讀取不支持隨機寫入,如Hadoop和Lucene的集成就不可以直接集成,由於Lucene支持隨機寫入。
本文將從使用的角度上談了如何搭建Hadoop、如何配置Hadoop、如何驗證Hadoop及在Hadoop上面執行計算,以及可能會遇到些什麼樣的問題。
由於Hadoop須要在Linux運行,而且Hadoop是基於Java的,在繼續進行下面的步驟以前,請確認你已經準備好Linux操做系統以及Java 6或以上版本,而且已經正確的設置了JAVA_HOME。
搭建Hadpp的版本爲1.2.1 下載地址爲:http://apache.fayea.com/apache-mirror/hadoop/common/hadoop-1.2.1/
解壓縮Hadoop到任意目錄,我當前的Hadoop是將其解壓到目錄/usr/local/hadoop-1.2.1,並在/etc/profile中設置好環境變量HADOOP_HOME(這個變量不是必須的,在1.2.1已是Deprecated了,這裏我之因此設置,仍是爲了方便),以及將$HADOOP_HOME/bin目錄加入到PATH中,這樣咱們就能夠在任意地方執行hadoop命令了,爲了使用上的方便,再給」hadoop fs」設一個名爲hdfs的alias方便使用,如下是我機器上/etc/profile增長的內容:
export JAVA_HOME=/usr/local/jdk1.6.0_33 export HADOOP_HOME=/usr/local/hadoop-1.2.1 export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin #Alias for hadoop alias hdfs='hadoop fs' |
注:該文件的編輯須要root權限,修改完成後,若是想當即生效,須要經過source命令操做一下:
source /etc/profile |
不然就只有退出從新登錄纔會生效。
Hadoop須要經過SSH和其它計算服務器進行溝通,因此首先要肯定本機或者是其它Hadoop計算服務器,是否都已經安裝了ssh。
(1)、肯定系統是否安裝了ssh和ssh-keygey
能夠經過which命令來確認
which ssh which ssh-keygen |
若是出現
/usr/bin/which: no ssh in (/usr/.....)則表示系統裏面沒有安裝SSH服務,能夠經過www.openssh.com下載安裝
(2)、發佈公鑰證書
執行以下命令:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa |
在~/.ssh/ 目錄會生成id_rsa和id_rsa.pub兩個文件,將id_rsa.pub複製一份在~/.ssh/目錄下,並重命名爲authorized_keys,若是是單機搭建僞分佈式,此時ssh的準備工做已經完成了,若是使用全分佈式環境,那麼須要將authorized_keys(或authorized_keys中的內容追加到須要無密碼登錄的服務器的~/.ssh/authorized_keys文件中)及id_rsa(或id_rsa中的內容追加到須要無密碼登錄的服務器的~/.ssh/id_rsa文件中)兩個文件複製到各臺分佈式slave機器的「~/.ssh目錄中」中,這樣任意兩臺機器之間互相經過ssh訪問,都不須要輸入密碼了,若是隻是拷貝到authorized_keys到slave機器中,就只可以實現主到從的不輸密碼訪問。
注:若是須要遠程登錄的服務器上尚未.ssh目錄,那麼就在登錄用戶的目錄下新建.ssh目錄,權限至少設置成744,若是.ssh目錄下沒有authorized_keys文件,也新建該文件,並將其權限設置爲644。
(3)測試登錄驗證
在本例中,採用的是在單機中搭建僞分佈式系統,經過以下ssh命令嘗試登錄:
ssh localhost 或 ssh 127.0.0.1 |
若是再也不提示輸入密碼,直接登錄成功,那麼SSH登錄就設置成功了。