Ubuntu 12.04搭建hadoop單機版環境

前言:java

  本文章是轉載的,本身又加上了一些本身的筆記整理的node

  詳細地址請查看Ubuntu 12.04搭建hadoop單機版環境linux

Hadoop的三種運行模式apache

獨立模式:無需任何守護進程,全部程序都在單個JVM上執行。ubuntu

僞分佈模式:Hadoop守護進程運行在本地機器上,模擬一個小規模的集羣。vim

全分佈模式:Hadoop守護進程運行在一個集羣中。bash

一. 安裝Ubuntu;服務器

二. 在Ubuntu下建立hadoop用戶組和用戶;ssh

1. 建立hadoop用戶組:jvm

sudo groupadd hadoop

如圖:

2. 建立hadoop用戶:

sudo useradd -ms /bin/bash -g hadoop hadoop

如圖:

3. 給hadoop用戶添加sudo權限,打開/etc/sudoers文件:

sudo gedit /etc/sudoers

按回車鍵後就會打開/etc/sudoers文件了,給hadoop用戶賦予root用戶一樣的權限。

在root   ALL=(ALL:ALL)   ALL下添加hadoop   ALL=(ALL:ALL)  ALL,

hadoop  ALL=(ALL:ALL) ALL

如圖:

三. 在Ubuntu下安裝JDK

使用以下命令執行便可:

sudo apt-get install openjdk-6-jre

(這裏我本身下載的jdk,具體的安裝方法見個人另外一篇Linux下安裝JDK和Eclipse)

如圖:

四. 修改機器名

每當ubuntu安裝成功時,咱們的機器名都默認爲:ubuntu ,但爲了之後集羣中可以容易分辨各臺服務器,須要給每臺機器取個不一樣的名字。機器名由 /etc/hostname文件決定。

1. 打開/etc/hostname文件:

sudo gedit /etc/hostname

2. 將/etc/hostname文件中的ubuntu改成你想取的機器名。這裏我取"dubin-ubuntu"。 重啓系統後纔會生效。

3. 爲了完全的改變你的主機名,還須要更改vim /etc/hosts,將其中的

127.0.1.1改爲和你hostname中同樣的名字

五. 安裝ssh服務

這裏ssh能夠實現遠程登陸和管理,具體能夠參考其餘相關資料。安裝ssh的目的就是爲了啓動守護進行,且必須是無密碼登錄的。

安裝openssh-server,

sudo apt-get install ssh openssh-server

這時假設您已經安裝好了ssh,您就能夠進行第六步了哦~

6、 創建ssh無密碼登陸本機

首先要轉換成hadoop用戶,執行如下命令:

su - hadoop

如圖:

ssh生成密鑰有rsa和dsa兩種生成方式,默認狀況下采用rsa方式。

1. 建立ssh-key,,這裏咱們採用rsa方式:

ssh-keygen -t rsa -P ""

如圖:

(注:回車後會在~/.ssh/下生成兩個文件:id_rsa和id_rsa.pub這兩個文件是成對出現的)

2. 進入~/.ssh/目錄下,將id_rsa.pub追加到authorized_keys受權文件中,開始是沒有authorized_keys文件的:

cd ~/.ssh
cat id_rsa.pub >> authorized_keys

如圖:

(完成後就能夠無密碼登陸本機了。)

3. 登陸localhost:

ssh localhost

如圖:

( 注:當ssh遠程登陸到其它機器後,如今你控制的是遠程的機器,須要執行退出命令才能從新控制本地主機。)

4. 執行退出命令:

exit

七. 安裝hadoop

這裏個人安裝版本爲:hadoop-1.1.2(http://www.apache.org/dyn/closer.cgi/hadoop/common/  )

1. 假設hadoop-0.20.203.tar.gz在桌面,將它複製到安裝目錄 /usr/local/下:

sudo cp hadoop-1.1.2.tar.gz /usr/local/

2. 解壓hadoop-1.1.2.tar.gz:

cd /usr/local
sudo tar -zxf hadoop-1.1.2.tar.gz

3. 將解壓出的文件夾更名爲hadoop:

sudo mv hadoop-1.1.2 hadoop1.1.2

4. 將該hadoop1.1.2文件夾的屬主用戶設爲hadoop:

sudo chown -R hadoop:hadoop hadoop1.1.2

5. 打開hadoop/conf/hadoop-env.sh文件:

vim hadoop1.1.2/conf/hadoop-env.sh

6. 配置conf/hadoop-env.sh(找到#export JAVA_HOME=...,去掉#,而後加上本機jdk的路徑):

export JAVA_HOME=/usr/lib/jvm/java-6-openjdk

這個主要就是爲了配置hadoop運行環境的jdk路徑

7. 打開conf/core-site.xml文件:

sudo gedit hadoop/conf/core-site.xml

編輯以下:

  
  
  
  
  1. <?xmlversion="1.0"?>

  2. <?xml-stylesheettype="text/xsl"href="configuration.xsl"?>

  3. <!-- Put site-specific property overrides in this file. -->

  4. <configuration>

  5. <property>

  6. <name>fs.default.name</name>

  7. <value>hdfs://localhost:9000</value>

  8. </property>

  9. </configuration>

該文件主要是 fs.default.name,是一個描述集羣中NameNode結點的URI(包括協議、主機名稱、端口號)。該配置文件主要用於設置Hadoop的默認文件系統,而文件系統由URI指定,這裏咱們設置的是hdfs文件系統。這裏的這種配置方式是屬於僞分佈式模式,當配置爲全分佈式模式的時候,須要改成hdfs://namenod/。集羣裏面的每一臺機器都須要知道NameNode的地址。DataNode結點會先在NameNode上註冊,這樣它們的數據才能夠被使用。獨立的客戶端程序經過這個URI跟DataNode交互,以取得文件的塊列表。

8. 打開conf/mapred-site.xml文件:

vim hadoop1.1.2/conf/mapred-site.xml

編輯以下:

  
  
  
  
  1. <?xmlversion="1.0"?>

  2. <?xml-stylesheettype="text/xsl"href="configuration.xsl"?>

  3. <!-- Put site-specific property overrides in this file. -->

  4. <configuration>

  5. <property>

  6. <name>mapred.job.tracker</name>

  7. <value>localhost:9001</value>

  8. </property>

  9. </configuration>

該配置文件主要用於配置JobTracker的主機(或者IP)和端口,一樣這是僞分佈模式,當在全分佈式模式中value的值爲jobtracker:8021

9. 打開conf/hdfs-site.xml文件:

vim hadoop/conf/hdfs-site.xml

編輯以下:

  
  
  
  
  1. <configuration>

  2. <property>

  3. <name>dfs.name.dir</name>

  4. <value>/usr/local/hadoop/datalog1,/usr/local/hadoop/datalog2</value>

  5. </property>

  6. <property>

  7. <name>dfs.data.dir</name>

  8. <value>/usr/local/hadoop/data1,/usr/local/hadoop/data2</value>

  9. </property>

  10. <property>

  11. <name>dfs.replication</name>

  12. <value>2</value>

  13. </property>

  14. </configuration>

dfs.replication -它決定着系統裏面的文件塊的數據備份個數。對於一個實際的應用,它 應該被設爲3(這個  數字並無上限,但更多的備份可能並無做用,並且會佔用更多的空間)。少於三個的備份,可能會影響到數據可靠性(系統故障時,也許會形成數據丟失)

dfs.data.dir - 這是DataNode結點被指定要存儲數據的本地文件系統路徑。DataNode結點上的這個路徑沒有必要徹底相同,由於每臺機器的環境極可能是不同的。但若是每臺機器上的這個路徑都是統一配置的話,會使工做變得簡單一些。默認的狀況下,它的值hadoop.tmp.dir, 這個路徑只能用於測試的目的,由於,它極可能會丟失掉一些數據。因此,這個值最好仍是被覆蓋。

dfs.name.dir - 這是NameNode結點存儲hadoop文件系統信息的本地系統路徑。這個值只對NameNode有效,DataNode並不須要使用到它。

10. 打開conf/masters文件,添加做爲secondarynamenode的主機名,做爲單機版環境,這裏只需填寫 localhost 就Ok了。

vim hadoop/conf/masters

11. 打開conf/slaves文件,添加做爲slave的主機名,一行一個。做爲單機版,這裏也只需填寫 localhost就Ok了。

vim hadoop/conf/slaves

八. 在單機上運行hadoop

1. 進入hadoop目錄下,格式化hdfs文件系統,初次運行hadoop時必定要有該操做,

cd /usr/local/hadoop/
bin/hadoop namenode -format

2. 當你看到下圖時,就說明你的hdfs文件系統格式化成功了。

3. 啓動bin/start-all.sh:

bin/start-all.sh

4. 檢測hadoop是否啓動成功:

jps

若是有Namenode,SecondaryNameNode,TaskTracker,DataNode,JobTracker五個進程,就說明你的hadoop單機版環境配置好了!

以下圖:

後記:

1 該部署安裝環境以下:

VirtualBox-4.2.16-86992-Win

ubuntu12.04

jdk-6u33-linux-i586.bin

hadoop-1.1.2.tar.gz

通過測試徹底能夠正常運行

2 在執行hadoop命令的時候,都是調用hadoop/bin中的命令,能夠將hadoop安裝路徑設置到path中,這樣每次執行hadoop就不用加上絕對路徑了。具體的作法以下:

sudo vim /etc/profile添加兩句

export HADOOP_INSTALL=/usr/local/hadoop1.1.2

PATH=$HADOOP_INSTALL/bin:$PATH  而後註銷後輸入hadoop version便可

3 因爲在複製hadoop的時候已經建立了專門的用戶與用戶組來操做hadoop,必定要爲該hadoop安裝ssh無密碼登錄,在安裝hadoop的時候,記得也要全稱用剛建立的用戶來安裝,且必定要使用

chown -R hadoop:hadoop hadoop1.1.2來將全部的文件權限改成hadoop用戶。在安裝後,若是使用jps只是顯示幾個進程,能夠切換到root中,再次執行該命令chown -R hadoop:hadoop hadoop1.1.2

當安裝後,若是jps顯示的進程不到5個,則能夠將hadoop安裝目錄下生成data1和data2或者datalog1和datalog2刪除了,再從新利用bin/hadoop namenode -format

4 分佈式存儲的角度來講,集羣中的結點由一個NameNode和若干個DataNode組成,另有一個SecondaryNameNode做爲NameNode的備份。從分佈式應用的角度來講,集羣中的結點由一個JobTracker和若干個TaskTracker組成,JobTracker負責任務的調度,TaskTracker負責並行執行任務TaskTracker必須運行在DataNode上,這樣便於數據的本地計算。JobTracker和NameNode則無須在同一臺機器上。

相關文章
相關標籤/搜索