Hadoop環境搭建

添加:

1        SSH無密碼登錄配置(方法2)

實現主機A免密登錄到主機B。

1.1 主機A生成密鑰對

# ssh-keygen -t rsa

1.2 複製公鑰的免密登錄目標主機B

# ssh-copy-id -i ~/.ssh/id_rsa.pub <主機B的hostname或ip>

1.3 免密登錄

# ssh <主機B的hostname或ip>


--------------------------------------------------------------------------------

1     系統環境

CentOS 6.5 32bit

hadoop-2.6.4.tar.gz

jdk-7-linux-i586.rpm

2     ip配置

2.1   修改配置文件

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

   配置示例如下:

DEVICE=eth0

BOOTPROTO=static

BROADCAST=192.168.91.255

IPADDR=192.168.91.10

IPV6INIT=no

IPV6_AUTOCONF=no

NETMASK=255.255.255.0

NETWORK=192.168.91.0

ONBOOT=yes

GATEWAY=192.168.1.1

DNS1=192.168.1.1

   各配置說明:

DEVICE=eth0 #描述網卡對應的設備別名,例如ifcfg-eth0的文件中它爲eth0

BOOTPROTO=static #設置網卡獲得ip地址的方式,可能的選項爲static,dhcp或bootp,分別對應靜態指定的 ip地址,通過dhcp協議獲得的ip地址,通過bootp協議獲得的ip地址

BROADCAST=192.168.0.255#對應的子網廣播地址

HWADDR=00:07:E9:05:E8:B4#對應的網卡物理地址

IPADDR=12.168.1.2 #如果設置網卡獲得 ip地址的方式爲靜態指定,此字段就指定了網卡對應的ip地址

IPV6INIT=no

IPV6_AUTOCONF=no

NETMASK=255.255.255.0#網卡對應的網絡掩碼

NETWORK=192.168.1.0#網卡對應的網絡地址

ONBOOT=yes #系統啓動時是否設置此網絡接口,設置爲yes時,系統啓動時激活此設備

GATEWAY=192.168.1.1

DNS1=192.168.1.1

2.2   重啓網絡使配置生效

    service network restart

3     Java環境配置

3.1   查看已有的jdk

    rpm -qa | grep java

3.2   安裝jdk

    rpm -ivh java-xxx-linux-i586-rpm

    rpm包需到oracle官網下載,安裝後默認位於/usr/java/xxx。

3.3   設置環境變量

3.3.1  新建java的環境變量配置

    vi /etc/profile.d/java.sh

   內容如下:

   export JAVA_HOME=/usr/java/xxx

   exportCLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

   export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

3.3.2  給java.sh分配權限

    chmod 755 /etc/profile.d/java.sh

3.3.3  使配置生效

    . /etc/profile

   測試代碼:

HelloWorld.java

public classHelloWorld {

      public static void main(String[] args) {

            System.out.println("helloworld in linux");

      }

}

4     SSH無密碼登錄配置

    本處示例兩臺服務器A和B之間的SSH登錄配置,通過以下配置後實現A通過SSH登錄B,B通過SSH登錄A配置過程與A登錄B一樣。

    示例A、B配置信息爲:

    Host  HostName  HostIp

     A     hosta     ipa

     B     hostb     ipb

4.1   修改主機名和IP

    主機名可通過以下命令修改HOSTNAME來修改:

    vi /etc/sysconfig/network

    查看HOSTNAME:

    hostname

4.2   配置hosts文件

    實現ping主機名可ping通:

    vi /etc/hosts

    內容如下:

    destHostIp destHostName

    ...(需要訪問幾臺服務器就添加幾條)

    如:ipa hosta

       ipb hostb

4.3   安裝openssh和rsync

    查看是否已安裝:

    rpm –qa | grep openssh

    rpm –qa | grep rsync

    安裝:

    yum install openssh

    yum install rsync

    service sshd restart

4.4   主機A配置

    配置當前主機A對目標登錄主機B做SSH免密登錄的核心在於兩點:

    1、A和B都參考4.4.4進行SSH配置。

    2、把A的公鑰發給B,B將A的公鑰添加到自己的authorized_keys 授權密鑰文件裏(位置:~/.ssh/authorized_keys)。

4.4.1  生成密鑰對

    ssh-keygen

    詢問其保存路徑時直接回車採用默認路徑。生成的密鑰對:id_rsa和id_rsa.pub,默認存儲在[ ~/.ssh ]目錄下,[.ssh]目錄權限爲700。爲便於區別,可將公鑰重命名,如:id_rsa_hostA.pub。

4.4.2  追加公鑰到自己授權的key裏面去

       可將自己持有的公鑰,如自己的和其他主機的公鑰添加到授權文件裏,使得給出公鑰的一方能夠通過ssh登錄本主機,如:

    cat ~/.ssh/id_rsa_hostA.pub >> ~/.ssh/authorized_keys

    cat ~/.ssh/id_rsa_hostB.pub >> ~/.ssh/authorized_keys

4.4.3  修改文件authorized_keys權限

    chmod 600 ~/.ssh/authorized_keys

4.4.4  設置SSH配置(需root權限)

    vi /etc/ssh/sshd_config

    內容如下:

    RSAAuthentication yes # 啓用 RSA 認證

    PubkeyAuthentication yes # 啓用公鑰私鑰配對認證方式

    AuthorizedKeysFile .ssh/authorized_keys # 公鑰文件路徑(和上面生成的文件同)

    重啓使生效:

    service sshd restart

4.5   A將公鑰發給目標主機B

    目標主機爲要通過SSH登錄到的主機。

    scp ~/.ssh/id_rsa_hostA.pub 遠程用戶名@遠程服務器IP:~/.ssh

    如:

    scp ~/.ssh/[email protected]:~/.ssh

4.6   主機B配置

    主機B使用上一步中公鑰複製到的用戶賬戶登錄,如hadoop賬戶,在賬戶HOME目錄下(如:/home/hadoop)下可看到複製過來的A的公鑰。

    若在賬戶HOME目錄下無[.ssh]目錄則新建,並設置目錄權限爲700:

    mkdir ~/.ssh

    chmod 700 ~/.ssh

    參考4.4.2-4.4.4,把A的公鑰添加到授權文件並配置SSH。

4.7   測試

    在主機A命令行輸入:

    ssh hadoop@ipb

    或:

    ssh hadoop@hostb

    可實現登錄到主機B。

    其中hadoop爲4.6中接收主機A的公鑰的賬戶。

5     Hadoop安裝配置(完全分佈式模式)

       本例配置4臺服務器的集羣,服務器配置後的信息如下表5-1

Server

TYPE

HostName

IP

1

NameNode

nn

192.168.1.100

2

DataNode

dn01

192.168.1.101

3

DataNode

dn02

192.168.1.102

4

SecondaryNameNode

snn

192.168.1.99

    下列配置步驟需每臺服務器都進行配置。

5.1   安裝

5.1.1  下載

    到官網http://hadoop.apache.org/releases.html/ 下載合適版本到自定路徑。

wget http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz

5.1.2  解壓

    tar -xvf hadoop-2.7.2.tar.gz

5.1.3  移動至合適位置

    mv hadoop-2.7.2 /usr/hadoop

    安裝完成。

5.2   配置hadoop全局變量(可選)

    vi /etc/profile.d/hadoop.sh

    內容如下:

    export HADOOP_HOME=/bigdata/hadoop-2.7.2

    exportPATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

    使配置生效:

    . /etc/profile

5.3   指定配置文件位置

       hadoop默認讀取位於hadoop根目錄下的etc/hadoop文件夾作爲配置文件的位置,可根據需要在etc下創建不同的配置目錄,通過連接(ln命令,符號鏈接)指定當前生效的配置文件目錄。注意修改默認的hadoop文件夾名稱(如改爲hadoop_default),避免與“hadoop”鏈接同名導致hadoop無法正確找到配置文件。

    如當前使用集羣配置,配置所在的文件夾名稱爲hadoop_cluster,則創建連接如下:

    ln -s hadoop_cluster hadoop

    文件夾hadoop_cluster可直接複製自默認文件夾hadoop,如:

    cp -R hadoop hadoop_cluster

5.4   配置hadoop-env.sh

       配置etc/hadoop文件夾裏的hadoop-env.sh文件,設置JAVA_HOME值,若系統JAVA_HOME值已存在,則可跳過。如:

    # The java implementation to use.

    export JAVA_HOME=/usr/java/jdk1.8

5.5   配置hostname、ip和ssh

       參考第2、4點,按照表5-1進行服務器hostname、ip和ssh的配置。

5.6   配置hadoop配置文件

       配置文件位於etc/hadoop/下。

       官方配置手冊:

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

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

http://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml

http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-common/yarn-default.xml

5.6.1  core-site.xml

       NameNode的配置信息。

<configuration>

    <property>

        <name>fs.defaultFS</name>

        <value>hdfs://nn:9000/</value><!-- 注意主機名不能包含下劃線等特殊字符 -->

    </property>

</configuration>

5.6.2  hdfs-site.xml

<configuration>

    <property>

       <name>dfs.replication</name>

        <value>2</value>  <!-- 2個DataNode -->

    </property>

</configuration>

5.6.3  mapred-site.xml

<configuration>

    <property>

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

        <value>yarn</value>

    </property>

</configuration>

5.6.4  yarn-site.xml

<configuration>

         <property>

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

        <value>nn</value>  <!-- 指定服務器nn爲資源管理服務器 -->

    </property>

    <property>

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

       <value>mapreduce_shuffle</value>

    </property>

</configuration>

5.6.5 slaves

    寫入所有DataNode的hostname,一行一個:

dn01

dn02

5.7   配置Sencondary NameNode

       經過5.6配置後,namenode和secondary namenode位於同一個主機,即namenode所在的主機上。若想將secondary namenode配置在另外一臺單獨的服務器上,則需在5.6的配置基礎上做些修改。

5.7.1  新增master配置文件

    在etc/hadoop目錄下,

    vi master

    添加需要當作secondary namenode的ip或hostname,可填寫多臺,一行一個:

snn

5.7.2  修改core-site.xml

    在配置文件中增加如下內容:

<property>

    <name>fs.checkpoint.period</name>

    <value>20</value>

    <description>

        The number of seconds between twoperiodic checkpoints.

    </description>

</property>

<property>

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

    <value>hdfs://nn:9000</value>

</property>

<property>

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

    <value>如:/home/hadoop/tmp</value>

</property>

<property>

    <name>fs.checkpoint.size</name>

    <value>67108864</value>

</property>

5.7.3  修改hdfs-site.xml

    在配置文件中增加如下內容:

<property>

    <name>dfs.http.address</name>

    <value>nn:50070</value>

    <description>

        The address and the base port where thedfs namenode web ui will listen on.

        If the port is 0 then the server willstart on a free port.

    </description>

</property>

<property>

    <name>dfs.namenode.secondary.http-address</name>

    <value>snn:50090</value>

</property>

5.8   啓動集羣

5.8.1  格式化NameNode

       若集羣爲首次啓動,則需先格式化NameNode:

    bin/hdfs namenode -format

5.8.2  啓動NameNode daemon和DataNode daemon

       sbin/start-dfs.sh

    啓動成功後,可以通過http://localhost:50070/訪問NameNode管理界面。

    關閉:

    sbin/stop-dfs.sh

5.8.3 啓動ResourceManager daemon和NodeManager daemon

       sbin/start-yarn.sh

       啓動成功後,可以通過http://localhost:8088/訪問ResourceManager管理界面。

    關閉:

    sbin/stop-yarn.sh

5.9   驗證

    運行命令jps查看進程:

    jps

    每個服務器都有NodeManager。

5.9.1  服務器nn

       xxxx NameNode

    xxxx ResourceManager

5.9.2  服務器dn01

    xxxx ResourceManager

    xxxx DataNode

5.9.3  服務器dn02

    xxxx ResourceManager

    xxxx DataNode

5.9.4 服務器snn

6     常見問題

6.1   reverse mapping checking failed

       0.0.0.0: reverse mapping checking getaddrinfofor localhost [127.0.0.1] failed - POSSIBLE BREAK-IN ATTEMPT!

    解決:

    假設從A登錄B,則修改A主機上的ssh_config:

    vi /etc/ssh/ssh_config

    啓用:GSSAPIAuthentication no

6.2   Does not contain a valid host:port authority

       解決:

    主機名稱不能包含下劃線和其他特殊字符。

 

發佈了46 篇原創文章 · 獲贊 22 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章