本教程講述在單機環境下搭建Hadoop偽分散式集群環境,幫助初學者方便學習Hadoop相關知識。 首先安裝Hadoop之前需要準備安裝環境。 安裝Centos6.5(64位)。(操作系統再次不做過多描述,自行百度) 安裝JDK1.7(64位)。 安裝Hadoop2.2(穩定版本64位) 註意:以上三 ...
本教程講述在單機環境下搭建Hadoop偽分散式集群環境,幫助初學者方便學習Hadoop相關知識。
首先安裝Hadoop之前需要準備安裝環境。
- 安裝Centos6.5(64位)。(操作系統再次不做過多描述,自行百度)
- 安裝JDK1.7(64位)。
- 安裝Hadoop2.2(穩定版本64位)
註意:以上三者版本需要統一,必須同為64位/32位
1.安裝JDK1.7
下載JDK1.7,然後拷貝到指定目錄
cd /usr/local/
解壓縮:tar -zxvf jdk1.7
配置環境變數:
vim /etc/profile.d/java.sh
添加如下內容:
CLASSPATH=$JAVA_HOME/lib:$CLASSPATH PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME CLASSPATH PATH
執行:
source /etc/profile.d/java.sh
java -version顯示出JDK相關信息
2.配置hosts文件,使訪問更加方便
vim /etc/hosts
在文件末尾加入:
192.168.1.1(本機ip) taurus(本機功能變數名稱)
3.關閉防火牆:
查看防火牆狀態:service iptables status
關閉防火牆:chkconfig iptables off(永久性生效)
service iptables stop(即時生效,重啟後複原)
4.SSH無密碼驗證配置
創建hadoop用戶組
groupadd hadoop
創建hadoop用戶
useradd group group
為hadoop用戶設置密碼
passwd hadoop
創建.ssh文件
mkdir .ssh
使用命令生成密鑰:
ssh-keygen -t rsa
用公鑰生成認證文件
cp id_rsa.pub authorized_keys
賦予文件許可權
chmod 700.ssh chmod 600 .ssh/*
然後使用ssh連接當前節點,ssh taurus(本機功能變數名稱) 如果提示ssh未安裝執行命令:
yum -y install openssh-clients
如果還是提示下列錯誤:
ssh: connect to host taurus port 22: Connection refused
說明ssh-server沒有安裝
sudo apt-get install openssh-server 進行安裝
然後在使用ssh localhost應該會連接成功。
5.開始搭建偽分散式環境
下載hadoop2.2.0安裝包
wget http://hadoop.f.dajiangtai.com/hadoop2.2/hadoop-2.2.0-x64.tar.gz
解壓安裝包:
tar -zxvf hadoop-2.2.0-x64.tar.gz
重命名hadoop-2.2.0-x64.tar.gz
mv hadoop-2.2.0-x64.tag.gz hadoop
將haddop文件夾的許可權賦予hadoop用戶
chown -R hadoop:hadoop hadoop
創建hadoop數據目錄--3個
root@taurus:/usr/local# mkdir -p /data/dfs/name root@taurus:/usr/local# mkdir -p /data/dfs/data root@taurus:/usr/local# mkdir -p /data/tmp
將創建的文件夾許可權賦予hadoop用戶
root@taurus:/usr/local# chown -R hadoop:hadoop hadoop /data
然後切換到hadoop用戶,進入hadoop文件夾下etc/hadoop目錄:
su hadoop cd etc/hadoop vim core-site.xml
添加如下內容到core-site.xml文件
預設HDFS路徑
存放數據的公共目錄
設置hadoop安全機制的代理用戶和用戶組
修改hdfs-site.xml文件,添加如下內容:
Namenode文件目錄
Datanode文件目錄
數據快副本
HDFS許可權
接下來配置mapred-site.xml文件:
由於沒有mspred-dite.xml文件,因此需要複製mapred-site.xml.template
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml添加如下內容:
制定mapreduce環境為yarn;
配置yarn-site.xml文件,添加如下內容:
為了使mapreduce程式運行起來,需要nodemanager啟動載入shuffle
修改slaves文件:(指定namenode路徑)由於當前配置偽分佈時集群,所以namenode和datanode在同一個節點上。
配置hadoop環境變數:
su root
vim /etc/profile
添加如下內容:
使配置文件生效使用source命令:
source /etc/profile
以上我們就配置完成了,接下來測試運行
su hadoop
進入安裝目錄
cd /usr/local/hadoop
然後格式化namenode
bin/hadoop namenode -format
沒有報錯,接下來我們就可以啟動hadoop了:
cd /usr/lcoal/hadoop sbin/satrt-all.sh
如果啟動時報Error: JAVA_HOME is not set and could not be found
解決辦法:修改/etc/hadoop/hadoop-env.sh中設的JAVA_HOME。
應當使用絕對路徑:
export JAVA_HOME=${JAVA_HOME} //文檔原來的(錯誤) export JAVA_HOME=/usr/local/jdk1.7 //正確,應該這麼改
然後再次啟動sbin/start-all.sh
成功後,jps顯示如下:
打開瀏覽器:
訪問http://taurus(對應你本機功能變數名稱):50070 --查看namenode文件和集群的狀態
接下來使用hadoop自帶wordcount程式運行測試
在hadoop文件目錄下,執行如下操作:
vim wordcount.txt
添加如下內容:
alan hadoop
alan hadoop
alan hadoop
保存退出
查看hadoop根目錄下文件:
hadoop fs -ls /
創建一個測試目錄:
hadoop fs -mkdir /taurus
將剛纔創建的文件上傳到測試目錄:
hadoop fs -put /usr/local/hadoop/wordcount.txt /sample
執行wordcount程式:
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-example-2.2.0.jar wordcount /sample/wordcount.txt /sample/wordcount-out
在瀏覽器訪問http://taurus(自己的功能變數名稱):8088/cluster/apps
查看程式的運行狀態。
在瀏覽器訪問http://taurus(自己的功能變數名稱):50070
查看程式的運行結果。
至此,hadoop的但節點集群配置就全部完成了。