CentOS 6.5 hadoop 2.7.3 叢集環境搭建

所需硬體,軟體要求

使用 virtualbox 構建三臺虛擬機器模擬真實物理環境

作業系統:CentOS6.5

主機列表:

master  ip: 192.168.3.171
slave1  ip: 192.168.3.135
slave2  ip: 192.168.3.136

為三臺主機新增同一使用者,設定密碼:

# 新增使用者
useradd hadoop
# 修改密碼
passwd hadoop

SSH 免密碼登入安裝,配置

保證由master主機能夠免密碼登入到datanodes節點機上

# master 生成公鑰

  $ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
  $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  $ chmod 0600 ~/.ssh/authorized_keys

複製 master 公鑰到 datanodes節點機

# 複製 master 主機公鑰到 datanode 節點機的 /tmp 目錄 
scp  ~/.ssh/id_rsa.pub [email protected]:/tmp/authorized_keys

scp  ~/.ssh/id_rsa.pub [email protected]:/tmp/authorized_keys

追加 /tmp/authorized_keys 到 ~/.ssh/authorized_keys

cat /tmp/authorized_keys >>  ~/.ssh/authorized_keys

注意:

1) .ssh目錄的許可權必須是700

2) .ssh/authorized_keys檔案許可權必須是600

JDK的安裝與解除安裝

解除安裝 JDK

# 檢查當前安裝的JDK
rpm -qa|grep gcj
rpm -qa|grep jdk
rpm -e  --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64
rpm -e  --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64

#查詢當前系統中相關java 目錄並刪除
whereis java
java: /etc/java /usr/lib/java /usr/share/java

#刪除查詢出的結果目錄
rm -fr /usr/share/java
rm -fr /usr/lib/java
rm -fr /etc/java

安裝JDK

在usr目錄下建立java目錄並且下載JDK並且解壓到 /usr/java 目錄下

cd /usr
mkdir java
cd java
wget http://download.oracle.com/otn-pub/java/jdk/8u102-b14/jdk-8u102-linux-x64.tar.gz
tar -zxvf jdk-8u102-linux-x64.tar.gz

編輯 vim /etc/profile 檔案並且在末尾追加

JAVA_HOME=/usr/java/jdk1.8.0_102
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
export PATH JAVA_HOME CLASSPATH

在不重新啟動作業系統的情況下使 /etc/profile 檔案生效

source /etc/profile

檢查java的安裝狀態

[[email protected] java]# javac
用法: javac <options> <source files>
其中, 可能的選項包括:
  -g                         生成所有除錯資訊
  -g:none                    不生成任何除錯資訊
  -g:{lines,vars,source}     只生成某些除錯資訊
  -nowarn                    不生成任何警告
  -verbose                   輸出有關編譯器正在執行的操作的訊息
  -deprecation               輸出使用已過時的 API 的源位置
  -classpath <路徑>            指定查詢使用者類檔案和註釋處理程式的位置
  -cp <路徑>                   指定查詢使用者類檔案和註釋處理程式的位置
  -sourcepath <路徑>           指定查詢輸入原始檔的位置
  -bootclasspath <路徑>        覆蓋引導類檔案的位置
  -extdirs <目錄>              覆蓋所安裝擴充套件的位置
  -endorseddirs <目錄>         覆蓋簽名的標準路徑的位置
  -proc:{none,only}          控制是否執行註釋處理和/或編譯。
  -processor <class1>[,<class2>,<class3>...] 要執行的註釋處理程式的名稱; 繞過預設的搜尋程序
  -processorpath <路徑>        指定查詢註釋處理程式的位置
  -parameters                生成元資料以用於方法引數的反射
  -d <目錄>                    指定放置生成的類檔案的位置
  -s <目錄>                    指定放置生成的原始檔的位置
  -h <目錄>                    指定放置生成的本機標標頭檔案的位置
  -implicit:{none,class}     指定是否為隱式引用檔案生成類檔案
  -encoding <編碼>             指定原始檔使用的字元編碼
  -source <發行版>              提供與指定發行版的源相容性
  -target <發行版>              生成特定 VM 版本的類檔案
  -profile <配置檔案>            請確保使用的 API 在指定的配置檔案中可用
  -version                   版本資訊
  -help                      輸出標準選項的提要
  -A關鍵字[=值]                  傳遞給註釋處理程式的選項
  -X                         輸出非標準選項的提要
  -J<標記>                     直接將 <標記> 傳遞給執行時系統
  -Werror                    出現警告時終止編譯
  @<檔名>                     從檔案讀取選項和檔名
[[email protected] java]# 
[[email protected] java]# java -version
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)

安裝 Hadoop2.7.3

下載hadoop-2.7.3

cd /tmp
wget http://apache.fayea.com/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz

解壓 hadoop-2.7.3.tar.gz

tar -zxvf hadoop-2.7.3.tar.gz

複製檔案到 /usr 目錄下

cp -R /tmp/hadoop-2.7.3  /usr/hadoop

配置hadoop的環境變數,在/etc/profile下追加

vim /etc/profile 

追加如下的環境變數設定

HADOOP_HOME=/usr/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

修改 etc/hadoop/hadoop-env.sh 檔案

vim etc/hadoop/hadoop-env.sh

# The java implementation to use.
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/usr/java/jdk1.8.0_102

修改 etc/hadoop/core-site.xml 檔案

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

<configuration>
<property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://Master:9000</value>
    </property>

</configuration>

修改 etc/hadoop/hdfs-site.xml 檔案

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

<configuration>

        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>Master:50090</value>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/usr/hadoop/tmp/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/usr/hadoop/tmp/dfs/data</value>
        </property>

</configuration>

修改 etc/hadoop/yarn-site.xml 檔案

<configuration>

        <!-- Site specific YARN configuration properties -->
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>Master</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>

</configuration>

修改 etc/hadoop/mapred-site.xml 檔案

<!-- Put site-specific property overrides in this file. -->
<configuration>
        <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>

修改 etc/hadoop/slaves 檔案,新增

192.168.3.135
192.168.3.136

打包資料夾 /usr/hadoop ,複製到 datanode 節點機,保證節點機環境配置與master保持一致格式化檔案系統

hdfs namenode -format

啟動檔案服務

start-dfs.sh
Make the HDFS directories required to execute MapReduce jobs:

建立使用者檔案系統資料夾

hdfs dfs -mkdir /user
hdfs dfs -mkdir /user/hadoop

複製檔案本地檔案到分散式檔案系統 input 下

hdfs dfs -mkdir input
hdfs dfs -put etc/hadoop/*.xml input

執行提供的預設的例子

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'

複製分散式檔案系統檔案到本地系統

hdfs dfs -get output output
cat output/*

或檢視分散式檔案系統檔案內容
hdfs dfs -cat output/*

啟動 ResourceManager守護程序和NodeManager守護程序,啟動mapResource jobhistory 歷史記錄服務

start-yarn.sh
mr-jobhistory-daemon.sh start historyserver

分別在各個主機上執行 jps 檢視服務情況

[[email protected] hadoop]# 
[[email protected] hadoop]# jps
10210 Jps
9698 SecondaryNameNode
9864 ResourceManager
9497 NameNode
[[email protected] hadoop]# 


[[email protected] hadoop]# jps
8071 NodeManager
8279 Jps
7961 DataNode
[[email protected] hadoop]# 


[[email protected] hadoop]# jps
5266 NodeManager
5155 DataNode
5444 Jps
[[email protected] hadoop]# 
[[email protected] hadoop]# 

web 訪問頁面

http://master:50070/

http://master:8088/cluster

這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

停止服務

stop-dfs.sh
stop-yarn.sh
mr-jobhistory-daemon.sh stop historyserver

服務備註:

start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh start historyserver