【原】Hadoop僞分佈模式的安裝

Hadoop僞分佈模式的安裝

【環境參數】

(1)Host OS:Win7 64bitjava

(2)IDE:Eclipse Version: Luna Service Release 2 (4.4.2)node

(3)虛擬機:VMware 10mysql

(4)Client OS:CentOS 6.4 32bitlinux

注意:sql

如果CentOS 64bit,則在啓動hadoop時,會報出警告。apache

緣由:Hadoop的本地庫($HADOOP_HOME/lib/native/libhadoop.so.1.0.0)是在32 bit平臺編譯的,只支持32bit,並不支持64bit的,所以,若在64bit的CentOS上啓動就會報出警告,以下所示。vim

INFO namenode.NameNode: createNameNode [-format]windows

Java HotSpot(TM) Server VM warning: You have loaded library /home/hadoop/app/hadoop-2.4.1/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard.網絡

The VM will try to fix the stack guard now.app

It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

(5)JDK版本:jdk-7u55-linux-i586.tar

(6)Hadoop Version:hadoop-2.4.1

(7)Hadoop集羣配置參數

       本集羣共三個節點,一個是Namenode節點,剩餘兩個爲Datanode節點。

7.1)Namenode節點參數

IP:192.168.234.8

主機名:namenode01

7.2)第一個DataNode節點參數

IP:192.168.234.11

主機名:datanode01

7.3)第二個DataNode節點參數

IP:192.168.234.12

主機名:datanode02

(8)本機在NAT鏈接(VMnet8)方式下,對應虛擬網絡中的IP地址:192.168.234.1 
 

【步驟描述】

0、安裝步驟簡述

       Hadoop的僞分佈式安裝主要歸納爲如下步驟:

       Linux環境的配置(IP, 主機名,hosts映射),安裝配置JDK,安裝配置hadoop,配置SSH免登錄等。

 

一、準備Linux環境(root用戶操做)

1.1修改適配器設置

點擊VMware快捷方式,右鍵打開文件所在位置 -> 雙擊vmnetcfg.exe -> VMnet1 host-only ->修改subnet ip 設置網段:192.168.234.255 子網掩碼:255.255.255.0 -> apply -> ok

回到windows --> 打開網絡和共享中心 -> 更改適配器設置 -> 右鍵VMnet8(NAT鏈接方式) -> 屬性 -> 雙擊IPv4 -> 設置windows的IP:192.168.234.1 子網掩碼:255.255.255.0 -> 點擊肯定

       在虛擬軟件上 --My Computer -> 選中虛擬機 -> 右鍵 -> settings -> network adapter -> host only -> ok      

1.2關閉防火牆

查看防火牆狀態

# service iptables status

關閉防火牆

# service iptables stop

查看防火牆開機啓動狀態

# chkconfig iptables --list

關閉防火牆開機啓動

# chkconfig iptables off

1.3修改IP、主機名和hosts文件

1.3.1修改IP

兩種方式:

第一種:經過Linux圖形界面進行修改(強烈推薦)

       進入Linux圖形界面 -> 右鍵點擊右上方的兩個小電腦 -> 點擊Edit connections -> 選中當前網絡System eth0 -> 點擊edit按鈕 -> 選擇IPv4 -> method選擇爲manual -> 點擊add按鈕 -> 添加IP:192.168.1.101 子網掩碼:255.255.255.0 網關:192.168.1.1 -> apply

      

第二種:修改配置文件方式(屌絲程序猿專用)

       vim /etc/sysconfig/network-scripts/ifcfg-eth0

                    

       DEVICE="eth0"

       BOOTPROTO="static"               ###

       HWADDR="00:0C:29:3C:BF:E7"

       IPV6INIT="yes"

       NM_CONTROLLED="yes"

       ONBOOT="yes"

       TYPE="Ethernet"

       UUID="ce22eeca-ecde-4536-8cc2-ef0dc36d4a8c"

       IPADDR="192.168.234.8"           ###

       NETMASK="255.255.255.0"          ###

       GATEWAY="192.168.234.255"            ###

      

1.3.2修改主機名

(1)編輯/etc/sysconfig/network文件

# vim /etc/sysconfig/network

             

NETWORKING=yes

HOSTNAME=namenode01    ###

 

(2)使用hostname

# hostname namenode01

 

(3)從新登陸使得新主機名生效

# logout

 

注意:修改datanode01和datanode02的節點的主機名也是這個步驟。

             

1.3.3修改主機名和IP的映射關係

編輯/etc/hosts文件。

# vim /etc/hosts                   

192.168.234.8 namenode01 (Namenode的IP地址與域名的映射)

192.168.234.11 datanode01 (第一個Datanode的IP地址與域名的映射)

192.168.234.12 datanode02 (第二個Datanode的IP地址與域名的映射)

 

1.4建立hadoop用戶、用戶組以及賦予權限

(1)建立用戶和組

建立hadoop用戶組hadoopGroup

# groupadd hadoopGroup

建立hadoop用戶,併爲其指定用戶組,用戶家目錄

# useradd hadoop -g hadoopGroup -d /home/hadoop

(2)爲hadoop用戶賦予sudo權限

編輯「/etc/sudoers」文件,添加相關命令。

Allow root to run any commands anywhere

root    ALL=(ALL)   ALL

hadoop  ALL=(ALL)   ALL

 

1.4重啓Linux

# shutdown -h now

 

二、安裝JDK

2.1在【SecureSRT】中,按下「alt+p」後出現sftp窗口,而後put d:\xxx\yy\ll\jdk-7u_65-i585.tar.gz

      

2.2解壓jdk

建立文件夾

# mkdir /home/hadoop/app

解壓

# tar -zxvf jdk-7u55-linux-i586.tar.gz -C /home/hadoop/app

             

2.3將java添加到環境變量中

# vim /etc/profile

在文件最後添加

export JAVA_HOME=/home/hadoop/app/jdk1.7.0_55

export PATH=$PATH:$JAVA_HOME/bin

      

刷新配置

# source /etc/profile

             

三、安裝hadoop2.4.1(hadoop用戶操做)

注意01:在安裝以前,要確保每臺機器上都安裝了JDK,配置了環境變量等。

注意02:將用戶切換到hadoop用戶。

注意03:hadoop2.x的配置文件$HADOOP_HOME/etc/hadoop僞分佈式安裝須要修改5個配置文件。

3.1配置hadoop(僅僅在單一節點配置,hadoop-server01)

第一個:hadoop-env.sh

       vim hadoop-env.sh

       #第27行

       export JAVA_HOME=/usr/java/jdk1.7.0_65

注意:原來的配置爲「export JAVA_HOME=${ JAVA_HOME }」       ,是靈活的,在此要將其寫死,由於原配置中,Hadoop可能會沒法識別JAVA_HOME這個環境變量。

第二個:core-site.xml

core-site.xml

       該文件中配置了Hadoop運行時的一些「公共的參數」。

 

<configuration>

<!-- 指定HADOOP所使用的文件系統schema(URI),HDFS的老大(NameNode)的地址 -->

       <property>

              <name>fs.defaultFS</name>

       <!--  配置namenode  -->

              <value>hdfs://namenode01:9000</value>

       </property>

 

       <!-- 指定hadoop運行時產生文件的存儲目錄 -->

       <property>

              <name>hadoop.tmp.dir</name>

              <value>/home/hadoop/app/hadoop-2.4.1/tmp</value>

    </property>

</configuration>

解釋1:

hdfs://namenode01:9000」是一個URI,就像mysql的URI同樣「jdbc:mysql://host:3306/db?if..」。

其中:

hdfs://」和「jdbc:mysql://」這兩個開頭都是一個「Schema」,「hdfs://」是Hadoop的協議。

 

解釋2:

「hdfs://namenode01:9000」,Schema後邊的部分爲「namenode的地址(或者域名、主機名)和端口號」。

namenode01:爲Namenode節點主機的主機名。

 

解釋3:

「hadoop.tmp.dir」爲hadoop的工做目錄。Hadoop運行過程當中產生的中間目錄都放置在該文件夾下。

 

具體的參數配置,請參考:

http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/core-default.xml

             

第三個:hdfs-site.xml 

<!-- 指定HDFS副本的數量 -->

<property>

       <name>dfs.replication</name>

       <value>1</value>

</property>

 

hdfs-site.xml:具體規定hadoop工做的一些細節。

dfs.replication:指定HDFS副本的數量。

             

第四個:mapred-site.xml (mv mapred-site.xml.template mapred-site.xml)

$ mv mapred-site.xml.template mapred-site.xml

$ vim mapred-site.xml

 

<!-- 指定mr運行在yarn上 -->

<property>

       <name>mapreduce.framework.name</name>

       <value>yarn</value>

</property>

 

             

第五個:yarn-site.xml

<!-- 指定YARN的老大(ResourceManager)的地址 -->

<property>

       <name>yarn.resourcemanager.hostname</name>

       <value>namenode01</value>

</property>

<!-- reducer獲取數據的方式 -->

<property>

       <name>yarn.nodemanager.aux-services</name>

       <value>mapreduce_shuffle</value>

</property>

 

解釋:

(1) 「yarn.nodemanager.aux-services」:規定一些「從節點」的行爲。

第六個:配置」 etc/hadoop/slave」文件

做用:決定Hadoop在啓動時,是否自動去啓動從節點「datanode」。 

$ vim slaves

輸入下列內容

namenode01

datanode01

datanode02

 

(1)將從節點「datanode」的信息寫入到該文件中。

由於上邊五個xml文件配置的都是namenode,或者yarn或者resourceManager等相關的信息,並無配置與「從節點datanode」相關的信息,所以,在slaves中須要配置相關從節點的信息。

(2) 該文件不是必須配置的。

       若配置該文件,則在Hadoop啓動的時候,能夠Hadoop會自動啓動「從節點datanode」,若沒有配置,則能夠經過手工的形式啓動「從節點」。

 

3.2將hadoop添加到環境變量      

# vim /etc/proflie

export JAVA_HOME=/home/hadoop/app/jdk1.7.0_55

export HADOOP_HOME=/home/hadoop/app/hadoop-2.4.1      

export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

 

# source /etc/profile

 

3.3遠程拷貝:將已經配置完的單一節點的Hadoop配置拷貝到另外兩臺節點中

(1)已配置好的節點:

namenode01

(2)未配置的節點:

datanode01

datanode02

 

(3)目標:

將「namenode01」節點中已經配置好的Hadoop文件(/home/hadoop/app/hadoop-2.4.1)拷貝到節點「datanode01」和節點「datanode02」所對應的目錄下。

 

(4)命令

[hadoop@ namenode01 app]$ pwd

/home/hadoop/app/hadoop-2.4.1

[hadoop@ namenode01 app]$ ls

hadoop-2.4.1

[hadoop@ namenode01 hadoop]$

scp -r hadoop-2.4.1/ hadoop@datanode01:/home/hadoop/app 

命令解析:

①scp:「Secure Copy」,通常用於「遠程拷貝」。

②「hadoop@ datanode01」:表示拷貝到「datanode01」這臺主機中的「hadoop用戶」下目錄「/home/hadoop/app」中去。

若沒有「hadoop」這個字符串,則表示將文件拷貝到其餘節點上的與「當前執行命令的用戶名」相同的那個用戶目錄下。

 

拷貝以前注意:

注意01在執行遠程拷貝以前,在遠程機器上,必須確保已經完成了初步的環境配置:

配置完IP,hostname,IP與域名的映射文件,hadoop用戶和用戶組,hadoop用戶密碼等,hadoop用戶主目錄的權限。

注意02若主拷貝方節點與目標拷貝方節點上的兩個用戶之間的權限不同,則沒法完成系統拷貝。。

注意03若另外一臺節點中沒有「app」目錄,則要先建立該目錄,再執行遠程拷貝。

      

3.4格式化namenode(是對namenode進行初始化)

切換到目錄:$HADOOP_HOME/bin中,使用其中的命令「hdfs」。

注意:在使用可以分佈式文件系統(即啓動hadoop)以前,必定可以要先格式化。

 

# hdfs namenode -format

      

若出現下述命令,則說明hadoop文件系統的格式化已經成功了。

15/03/20 13:07:38 INFO common.Storage: Storage directory /app/ha             doop-2.4.1/tmp/dfs/name has been successfully formatted.

15/03/20 13:07:39 INFO namenode.NNStorageRetentionManager: Going to              retain 1 images with txid >= 0

15/03/20 13:07:39 INFO util.ExitUtil: Exiting with status 0

15/03/20 13:07:39 INFO namenode.NameNode: SHUTDOWN_MSG:

/************************************************************

SHUTDOWN_MSG: Shutting down NameNode at namenode01/192.168.234.8

************************************************************/

 

所謂格式化也就是在用戶本身建立的「$HADOOP/tmp」目錄下,寫入一些初始的元數據文件。格式化完畢後,會在$HADOOP_HOME/tmp/current目錄下,生成HDFS的相關數據文件,以下所示。

[hadoop@namenode01 current]$ pwd

/home/hadoop/app/hadoop-2.4.1/tmp/dfs/name/current

[hadoop@namenode01 current]$ ls

edits_0000000000000000001-0000000000000000002

edits_0000000000000000003-0000000000000000005

fsimage_0000000000000000018

fsimage_0000000000000000018.md5

fsimage_0000000000000000020

fsimage_0000000000000000020.md5

seen_txid

VERSION

3.5啓動hadoop

注意:在使用可以分佈式文件系統以前,必定可以要先格式化。

先啓動HDFS

sbin/start-dfs.sh             

再啓動YARN

sbin/start-yarn.sh

             

或者也能夠經過以下Web界面來確認HDFS是否啓動成功:

若沒有啓動「start-dfs.sh」,則該界面是不可以成功啓動的。

http://192.168.234.8:50070 (HDFS管理界面,顯示NameNode信息)

http:// 192.168.234.8:8088 (MR管理界面)

3.6驗證是否啓動成功

使用jps命令驗證

27408 NameNode

28218 Jps

27643 SecondaryNameNode

28066 NodeManager

27803 ResourceManager (這個進程表明YARN,是一個分佈式的資源管理系統)

27512 DataNode                 

 

四、配置ssh免登錄

 

4.1 生成ssh免登錄密鑰

進入到個人home目錄

cd ~/.ssh 

ssh-keygen -t rsa (四個回車)

執行完這個命令後,會生成兩個文件id_rsa(私鑰)、id_rsa.pub(公鑰)

4.2拷貝公鑰

將公鑰拷貝到要免密登錄的目標機器上和本機上。

①ssh-copy-id datanode01

②ssh-copy-id datanode02

③ssh-copy-id namenode01

注意:千萬不能忘了將密鑰拷貝到「本機」上,在此,本機的主機名爲:namenode01,不然,該配置將不會成功。

相關文章
相關標籤/搜索