Hadoop 2.2.0 集羣搭建

概述

在前面我有寫過關於 Hadoop 集羣的搭建,不過之前的 Hadoop 是 1.x 版本的。目前是基於 2.x 版本的 Hadoop,與之前的 1.x 版本的差別還是挺大的。以及更爲詳細的 SSH 免密碼互連登錄的配置過程。所以,這裏也把我搭建的過程記錄下來了。希望於你有益。


版權說明

著作權歸作者所有。
商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
本文作者:Q-WHai
發表日期: 2016年5月4日
本文鏈接:http://blog.csdn.net/lemon_tree12138/article/details/51316883
來源:CSDN
更多內容:分類 >> 大數據之 Hadoop


目錄

環境說明

  1. CentOS-6.7 ( master )
  2. CentOS-6.7 ( slave1 )
  3. CentOS-6.7 ( slave2 )
  4. JDK-1.8.0_92 ( Oracle )
  5. Hadoop-2.2.0
  6. 虛擬機環境: VirtualBox 5.0

系統環境準備

關閉防火牆

$ sudo service iptables stop
$ sudo chkconfig iptables off  # 設置防火牆不隨系統啓動,這一條你可以選擇性添加

禁用 IPv6

$ sudo vim /etc/modprobe.d/dist.conf

添加如下內容

alias net-pf-10 off
alias ipv6 off

重啓後驗證操作

$ lsmod|grep ipv6

禁用 SELinux

$ sudo vim /etc/selinux/config

修改後的內容如下:

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.

# SELINUX=enforcing
SELINUX=disabled

# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

修改 hosts

(1) hostname

$ sudo vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=master
GATEWAY=172.16.2.20

(2)

$ sudo vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

172.16.2.144 master
172.16.2.171 slave1
172.16.2.91 slave2

Oracle JDK 1.8 安裝

關於 Java 的安裝,你可以有兩種選擇。一是 openjdk,另一個就是 Oracle jdk。這裏我選擇的是 Oracle jdk,而推薦的也是 Oracle jdk。
安裝過程很簡單,這裏就不贅述了。


配置 SSH

配置 SSH 的目的在於實現集羣中的機器可以免密碼相互登錄。

下載安裝

$ sudo yum -y install openssh-server
$ sudo yum -y install openssh-clients

這裏的 openssh-clients 不是必須安裝的。如果你安裝 ssh-server 完成之後,運行 ssh 出現系統無法識別 ssh 的話,需要另外安裝 openssh-clients。

驗證

OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
Bad escape character 'rsion'.

如果 SSH 安裝成功,驗證時會出現類似上面的版本信息。

創建目錄

$ mkdir -p ~/.ssh
$ chmod 700 ~/.ssh

如果你在安裝完SSH後,這些目錄都未自動生成,請自行創建。如果要免密碼登錄,.ssh 文件夾的權限也要修改。

修改配置文件

執行如下指令:

$ sudo vim /etc/ssh/sshd_config

在文件中找到如下內容,將內容前面的註釋去掉。如果沒有,就自己添加吧。

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

這一步是至關重要的,如果沒有這一步,那麼只能免密碼登錄本機,而無法免密碼登錄其他的機子了。
這裏比如,如果你想讓 master 主機免密碼登錄 slave 主機,那麼就要修改 master 主機的配置文件。

重啓 ssh

$ sudo service sshd restart

由於修改了 ssh 的配置文件,所以這裏必須重啓 ssh 服務才能生效。

創建密鑰

$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

指令的相關參數說明如下:

ssh-keygen 表示生成密鑰
-t 表示指定生成的密鑰類型
dsa 是dsa密鑰認證的意思,即密鑰類型
-P 提供密語
-f 指定生成的密鑰文件

公鑰下發

$ scp id_dsa.pub slave1:~/.ssh/

這裏是將 master 的公鑰下發到 slave 機羣中。在第一次下發的時候,會有一些連接提示及密碼提示。

創建認證文件

$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys

將 master 主機上的公鑰添加到用於認證的公鑰文件中,authorized_keys 是用於認證的公鑰文件。並修改 認證文件的權限。
此步驟是在 slave 機上完成。

登錄驗證

[hadoop@master .ssh]$ ssh slave1
Last login: Thu Apr 28 15:17:57 2016 from master
[hadoop@slave1 ~]$

補充

上面的過程只是單向的免密碼登錄。如果想要兩兩相互免密碼登錄,則需要集羣中的所有機器都有其他機器的公鑰。而具體操作也很簡單,這裏就不贅述了。


Hadoop 配置

下載安裝

這裏可以在 Apache 的官網上下載,如果官網已經下架,就去百度或是 Google 裏找,總會有的。
將下載下來的 Hadoop-2.2.0 用 WinSCP 上傳到虛擬機上(當然你也可以直接在虛擬機裏下載),解壓,並重命名爲 hadoop。

$ tar -zxvf hadoop-2.2.0.tar.gz
$ mv hadoop-2.2.0 hadoop
$ cd hadoop
$ chmod -Rv 755 ./bin/
$ chmod -Rv 755 ./sbin/

$ mkdir -p /home/hadoop/dfs/name
$ mkdir -p /home/hadoop/dfs/data
$ mkdir -p /home/hadoop/hadoop/tmp

上面對兩個文件夾進行權限修改,是因爲在這兩個文件裏有一些可執行文件,如果不修改他們的執行權限,那在啓動時就會有權限限制。

配置文件

對於上面的下載安裝步驟,基本已經 ok,不過如果想要正常使用,還是要配置,而 Hadoop 環境部署的核心就是此處的配置文件。
需要修改的配置文件列表如下:

  1. /etc/profile
  2. ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh
  3. ${HADOOP_HOME}/etc/hadoop/yarn-env.sh
  4. ${HADOOP_HOME}/etc/hadoop/core-site.xml
  5. ${HADOOP_HOME}/etc/hadoop/hdfs-site.xml
  6. ${HADOOP_HOME}/etc/hadoop/mapred-site.xml
  7. ${HADOOP_HOME}/etc/hadoop/yarn-site.xml
  8. ${HADOOP_HOME}/etc/hadoop/slaves

/etc/profile

這是系統裏的環境變量配置文件。配置此項目的目的是在於方便在任意目錄都可以使用 Hadoop/bin 裏的可執行文件(當然你也可以把 $HADOOP_HOME/sbin 加進去)。

export HADOOP_HOME=/home/hadoop/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

${HADOOP_HOME}/etc/hadoop/hadoop-env.sh

在環境變量配置文件的合適位置添加如下 JAVA_HOME 信息:

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

${HADOOP_HOME}/etc/hadoop/yarn-env.sh

在環境變量配置文件的合適位置添加如下 JAVA_HOME 信息:

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

${HADOOP_HOME}/etc/hadoop/core-site.xml

<configuration>

    <property>
        <name>fs.default.name</name>
        <value>hdfs://master:9000</value>
    </property>

    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/home/hadoop/hadoop/tmp</value>
    </property>

</configuration>

${HADOOP_HOME}/etc/hadoop/hdfs-site.xml

<configuration>

    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>master:50090</value>
    </property>

    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/home/hadoop/dfs/name</value>
    </property>

    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/home/hadoop/dfs/data</value>
    </property>

    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>

    <property>
        <name>dfs.support.append</name>
        <value>true</value>
    </property>

</configuration>

dfs.replication 的值一般設爲 3,但我們只有兩個 Slave 節點,所以 dfs.replication 的值重置爲 2。

${HADOOP_HOME}/etc/hadoop/mapred-site.xml

<configuration>

    <property>
        <name>mapreduce.job.tracker</name>
        <value>hdfs://master:9001</value>
    </property>

    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>


    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>master:10020</value>
    </property>

    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>master:19888</value>
    </property>

</configuration>

需要先重命名,默認文件名爲 mapred-site.xml.template.

${HADOOP_HOME}/etc/hadoop/yarn-site.xml

<configuration>

    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>

    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

</configuration>

需要先重命名,默認文件名爲 yarn-site.xml.template.

${HADOOP_HOME}/etc/hadoop/slaves

slave1
slave2

下發

這裏說的下發就是把配置好的 hadoop,複製到另外兩臺 Slave 機中。下發的操作是基於 SSH 的,如下:

$ scp -r ~/hadoop slave1:~/
$ scp -r ~/hadoop slave2:~/

啓動及驗證

格式化 HDFS

在啓動 Hadoop 之前,我們需要先格式化 HDFS。如下:

$ hadoop namenode –format

對於正常格式化的操作,這裏會顯示如下輸出:

DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it.

16/05/04 10:15:38 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = master/172.16.2.117
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 2.2.0
STARTUP_MSG:   classpath = /home/hadoop/hadoop/etc/hadoop: ( ... 此處省略 N 條 ... ) :/home/hadoop/hadoop/contrib/                                                                                                                                                             capacity-scheduler/*.jar
STARTUP_MSG:   build = Unknown -r Unknown; compiled by 'root' on 2013-11-22T03:4                                                                                                                                                             1Z
STARTUP_MSG:   java = 1.8.0_92
************************************************************/

 ( ... 此處省略 N 條 ... ) 
 
16/05/04 10:15:45 INFO common.Storage: Storage directory /home/hadoop/dfs/name has been successfully formatted.
16/05/04 10:15:45 INFO namenode.FSImage: Saving image file /home/hadoop/dfs/name/current/fsimage.ckpt_0000000000000000000 using no compression
16/05/04 10:15:45 INFO namenode.FSImage: Image file /home/hadoop/dfs/name/current/fsimage.ckpt_0000000000000000000 of size 198 bytes saved in 0 seconds.
16/05/04 10:15:45 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
16/05/04 10:15:45 INFO util.ExitUtil: Exiting with status 0
16/05/04 10:15:45 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at master/172.16.2.117
************************************************************/

啓動 HDFS

$ ${HADOOP_HOME}/sbin/start-dfs.sh

對於正常的啓動來說,會有類似如下的輸出內容:

Starting namenodes on [master]
The authenticity of host 'master (172.16.2.144)' can't be established.
RSA key fingerprint is 98:4f:21:03:76:e2:e9:96:77:3e:88:c5:88:70:04:cf.
Are you sure you want to continue connecting (yes/no)? yes
master: Warning: Permanently added 'master,172.16.2.144' (RSA) to the list of kn                                                                                                                                                             own hosts.
master: starting namenode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-nam                                                                                                                                                             enode-master.out
hadoop@slave1's password: hadoop@slave2's password:
slave1: starting datanode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-dat                                                                                                                                                             anode-slave1.out

slave2: starting datanode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-dat                                                                                                                                                             anode-slave2.out
Starting secondary namenodes [master]
master: starting secondarynamenode, logging to /home/hadoop/hadoop/logs/hadoop-h                                                                                                                                                             adoop-secondarynamenode-master.out

啓動 Yarn

$ ${HADOOP_HOME}/sbin/start-yarn.sh

對於正常的啓動來說,會有類似如下的輸出內容:

starting yarn daemons
starting resourcemanager, logging to /home/hadoop/hadoop/logs/yarn-hadoop-resourcemanager-master.out
hadoop@slave2's password: hadoop@slave1's password:
slave2: starting nodemanager, logging to /home/hadoop/hadoop/logs/yarn-hadoop-nodemanager-slave2.out

slave1: starting nodemanager, logging to /home/hadoop/hadoop/logs/yarn-hadoop-nodemanager-slave1.out

啓動全部

$ ${HADOOP_HOME}/sbin/start-all.sh

對於正常的啓動來說,會有類似如下的輸出內容:

[hadoop@master hadoop]$ ./sbin/start-all.sh
This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh
Starting namenodes on [master]
master: starting namenode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-namenode-master.out
slave2: starting datanode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-datanode-slave2.out
slave1: starting datanode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-datanode-slave1.out
Starting secondary namenodes [master]
master: starting secondarynamenode, logging to /home/hadoop/hadoop/logs/hadoop-hadoop-secondarynamenode-master.out
starting yarn daemons
starting resourcemanager, logging to /home/hadoop/hadoop/logs/yarn-hadoop-resourcemanager-master.out
slave2: starting nodemanager, logging to /home/hadoop/hadoop/logs/yarn-hadoop-nodemanager-slave2.out
slave1: starting nodemanager, logging to /home/hadoop/hadoop/logs/yarn-hadoop-nodemanager-slave1.out

驗證

(1) 驗證啓動的進程

$ jps

Master 端

[hadoop@master hadoop]$ jps
3202 Jps
2923 ResourceManager
2795 SecondaryNameNode
2637 NameNode

Slave 端

[hadoop@slave1 ~]$ jps
2256 DataNode
2419 Jps
2319 NodeManager

(2) 網頁驗證

# 查看 HDFS
登錄瀏覽器,輸入 http://master:50070

# 查看 RM
登錄瀏覽器,輸入 http://master:8088

關閉全部

$ ${HADOOP_HOME}/sbin/stop-all.sh

對於正常的啓動來說,會有類似如下的輸出內容:

[hadoop@master hadoop]$ ${HADOOP_HOME}/sbin/stop-all.sh
This script is Deprecated. Instead use stop-dfs.sh and stop-yarn.sh
Stopping namenodes on [master]
master: stopping namenode
slave2: stopping datanode
slave1: stopping datanode
Stopping secondary namenodes [master]
master: stopping secondarynamenode
stopping yarn daemons
no resourcemanager to stop
slave2: no nodemanager to stop
slave1: no nodemanager to stop
no proxyserver to stop

Ref

  • http://blog.csdn.net/liyong199012/article/details/24019333
  • http://shiyanjun.cn/archives/561.html

徵集

如果你也需要使用ProcessOn這款在線繪圖工具,可以使用如下邀請鏈接進行註冊:
https://www.processon.com/i/56205c2ee4b0f6ed10838a6d

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章