天天看點

Ubuntu14.04下Hadoop2.2.0叢集搭建

master: Ubuntu 14.04  salve1: Ubuntu 14.04

hadoop: hadoop 2.2.0

修改本機(master)和子節點(slaveN)機器名:打開/etc/hostname檔案

sudo gedit /etc/hostname

  (修改後需重新開機才能生效)

修改host檔案(映射各個節點IP):

   sudo gedit /etc/hosts

在後面添加内容為:

   172.22.144.115 master

   172.22.144.114 slave1

   172.22.144.116 slave2(注意修改為本機IP)

(master、slave1、slave2分别是主節點和子節點的機器名,即hostname裡的内容)

為主節點(master)和子節點(slave)分别建立hadoop使用者和使用者組:

先建立hadoop使用者組:

sudo addgroup hadoop

然後建立hadoop使用者:

 sudo adduser -ingroup hadoop hadoop

 (第一個hadoop是hadoop使用者組,第二個hadoop指使用者名)

給hadoop使用者賦予root使用者同樣的權限,打開/etc/sudoers檔案(目的:給hadoop使用者sudo權限)

sudo gedit /etc/sudoers

                在root 

ALL=(ALL:ALL)  ALL這一行下添加

                hadoop 

ALL=(ALL:ALL) ALL

本機(master)和子節點(slave)安裝ssh服務:

               sudo apt-get

update

sudo apt-get upgrade

sudo apt-get install ssh openssh-server

建立ssh無密碼登入環境:

      進入建立立的hadoop使用者,建議登出目前使用者,然後選擇hadoop使用者

ssh生成密鑰有rsa和dsa兩種生成方式,預設情況下采用rsa方式

建立ssh-key,這裡我們采用rsa方式,在終端/home/hadoop目錄下輸入:

        ssh-keygen -t rsa -P ""

        (有确認資訊直接回車)

進入~/.ssh/目錄下:

        cd /home/hadoop/.ssh

将此目錄下的id_rsa.pub追加到authorized_keys授權檔案中:

cat id_rsa.pub >> authorized_keys

将master節點上的rsa.pub通過ssh傳到子節點上(目的:公用公鑰密鑰)X代表第n個結點

        scp ~/.ssh/id_rsa.pub @slaveX:~/.ssh/

進入~/.ssh/目錄下,将id_rsa.pub追加到authorized_keys授權檔案中

       cd

/home/hadoop/.ssh

      cat id_rsa.pub >>

authorized_keys

測試ssh互信是否建立

      ssh hadoop@slave1

      (如果不需要輸入密碼就可以登入成功則表示ssh互信已經建立)

假設将jdk1.8.0下載下傳到了/home/hadoop/Downloads檔案夾中,在終端進入該檔案夾

        cd /home/hadoop/Downloads

       tar -xvf 

jdk-8-linux-x64.tar.gz 

然後運作如下的指令,在 /usr/lib 目錄中建立一個為儲存Java jdk8 檔案的目錄。

sudo mkdir -p /usr/lib/jvm/jdk1.8.0/ 

接下來運作如下指令把解壓的 JDK 檔案内容都移動到建立的目錄中。

sudo mv jdk1.8.0/* /usr/lib/jvm/jdk1.8.0/ 

下一步,運作如下指令來配置 Java

sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.8.0/bin/java" 1

接下來,拷貝和粘貼下面這一行到終端執行,以啟用 Javac 子產品。

sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.8.0/bin/javac" 1 

最後,拷貝和粘貼下面一行到終端以完成最終的安裝。

sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/lib/jvm/jdk1.8.0/bin/javaws" 1

要驗證下 Java 是否已經完全安裝的話,可以運作下面的指令來測試。

        java –version

      (如果出現jdk的版本資訊,則java環境變量配置成功)

1.假設hadoop-2.2.0.tar.gz在/home/hadoop/Downloads目錄,先進入此目錄

2. 解壓hadoop-2.2.0.tar.gz

        sudo tar -zxf

hadoop-2.2.0.tar.gz 

3. 将解壓出的檔案夾改名為hadoop;

        sudo mv hadoop-2.2.0hadoop

4. 将該hadoop檔案夾的屬主使用者設為hadoop

        sudo chown -R

hadoop

5. 打開hadoop/etc/hadoop-env.sh檔案;

        sudo gedit

hadoop/etc/hadoop/hadoop-env.sh

6. 配置etc/hadoop-env.sh(找到export JAVA_HOME=...,修改為本機jdk的路徑);

        export

JAVA_HOME=/usr/lib/jvm/jdk1.8.0

7. 打開etc/core-site.xml檔案;

hadoop/etc/hadoop/core-site.xml 

在<configuration>标簽中添加如下内容:

<configuration>

<property>

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

<value>hdfs://master:9000</value>

</property>

</configuration>

注意:master為主結點使用者名字,即hosts裡面的master結點名字

8. 打開etc /mapred-site.xml檔案,如果沒有此檔案,則将mapred-site.xml.template重命名即可

hadoop/etc/hadoop/mapred-site.xml 

在<configuration>标簽中添加如下内容

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

   <value></value>

9. 打開etc/hdfs-site.xml檔案;

hadoop/etc/hadoop/hdfs-site.xml

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

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

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

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

   <name>dfs.replication</name>

   <value>2</value>

10. 打開etc/slaves檔案,添加作為slaveX的主機名,一行一個。

hadoop/etc/hadoop/slaves 

這裡填成下列的内容 :

slave1

slave2

11、将還在/home/hadoop/Downloads目錄下的hadoop目錄移動到/usr/local/下

        sudo mv

/home/hadoop/Downloads/hadoop /usr/local/

将配置資訊複制到子節點上

hosts檔案的複制,先将檔案複制到/home/hadoop下面:

        sudo scp /etc/hosts hadoop@

        再在datanode機器上将其移到相同的路徑下面/etc/hosts

        sudo mv /home/hadoop/hosts /etc/hosts

 (這條指令在子節點上執行)

hadoop檔案夾的複制,其中的配置也就一起複制過來了!

        scp -r /usr/local/hadoop hadoop@

然後在子節點上執行

        sudo mv /home/local/hadoop

/usr/local/

    (如果提示是移動檔案夾,則加上-r參數)

并且要将所有節點的hadoop的目錄的權限進行如下的修改:

Hadoop

       (在/usr/local/目錄下執行此指令)

子節點datanode機器要把複制過來的hadoop裡面的data1,data2和logs删除掉!

配置完成

首先終端進入/usr/local/hadoop/目錄下

重新開機hadoop

        bin/stop-all.sh  

       bin/hdfs

namenode -format    (格式化叢集)

       bin/start-all.sh  

連接配接時可以在namenode上檢視連接配接情況:

        bin/hdfs dfsadmin –report

       (注意這裡是在/usr/local/hadoop下)

結果如圖:

Ubuntu14.04下Hadoop2.2.0叢集搭建

也可以直接進入網址:

Ubuntu14.04下Hadoop2.2.0叢集搭建

建立測試txt檔案

檢視目錄

        bin/hdfs dfs -ls /

(這裡的路徑為/usr/local/hadoop注意不要忘了)

建立目錄:

        bin/hdfs dfs -mkdir /input

用示例文本檔案做為輸入:

在本地建立兩個測試檔案file01和file02,并填入一些内容

        假設file01和file02在/home/hadoop目錄下

        将兩個檔案上傳至hdfs檔案系統

       bin/hdfs dfs –put /home/Hadoop/file01

/input/

      bin/hdfs dfs –put /home/Hadoop/file02

子節點離開安全模式,否則可能會導緻無法讀取input的檔案:

       bin/hdfs dfsadmin –safemode

leave

運作wordcount程式:

        bin/hadoop jar /xxx/xxx.jar wordcount

/input/ /output

 (這裡的/XXX/代表/usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar)

檢視結果:

        bin/hdfs dfs -cat

/output/part-r-00000

重複運作需要删除output,否則會抛出檔案夾已經存在的異常

        bin/hdfs dfs -rmr

/output