CentOS 6.5 hadoop 2.7.3 叢集環境搭建
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