Hadoop入門進階課程3--Hadoop2.X64位環境搭建
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,博主為石山園,博客地址為 http://www.rzrgm.cn/shishanyuan 。該系列課程是應邀實驗樓整理編寫的,這里需要贊一下實驗樓提供了學習的新方式,可以邊看博客邊上機實驗,課程地址為 https://www.shiyanlou.com/courses/237
【注】該系列所使用到安裝包、測試數據和代碼均可在百度網盤下載,具體地址為 http://pan.baidu.com/s/10PnDs,下載該PDF文件
1、搭建環境
部署節點操作系統為CentOS,防火墻和SElinux禁用,創建了一個shiyanlou用戶并在系統根目錄下創建/app目錄,用于存放Hadoop等組件運行包。因為該目錄用于安裝hadoop等組件程序,用戶對shiyanlou必須賦予rwx權限(一般做法是root用戶在根目錄下創建/app目錄,并修改該目錄擁有者為shiyanlou(chown –R shiyanlou:shiyanlou /app)。
Hadoop搭建環境:
l 虛擬機操作系統: CentOS6.6 64位,單核,1G內存
l JDK:1.7.0_55 64位
l Hadoop:2.2.0 64位(該部署包為第2個實驗所編譯完成)
2、部署Hadooop2.X
2.1配置Hadoop環境
在Apache網站上提供Hadoop2.X安裝包只支持32位操作系統安裝,在64位服務器安裝會出現3.1的錯誤異常。這里我們使用上一步驟編譯好的hadoop-2.2.0-bin.tar.gz文件作為安裝包(也可以在/home/shiyanlou/install-pack目錄中找到hadoop-2.2.0.tar.gz安裝包)
2.1.1 下載并解壓hadoop安裝包
解壓縮并移動到/app目錄下
cd /home/shiyanlou/install-pack
tar -xzf hadoop-2.2.0.tar.gz
mv hadoop-2.2.0 /app
2.1.2 在Hadoop目錄下創建子目錄
在hadoop-2.2.0目錄下創建tmp、name和data目錄
cd /app/hadoop-2.2.0
mkdir tmp
mkdir hdfs
mkdir hdfs/name
mkdir hdfs/data
2.1.3配置hadoop-env.sh
1. 打開配置文件hadoop-env.sh
cd /app/hadoop-2.2.0/etc/hadoop
sudo vi hadoop-env.sh
2. 加入配置內容,設置了hadoop中jdk和hadoop/bin路徑
export HADOOP_CONF_DIR=/app/hadoop2.2.0/etc/hadoop
export JAVA_HOME=/app/lib/jdk1.7.0_55
export PATH=$PATH:/app/hadoop-2.2.0/bin
3. 編譯配置文件hadoop-env.sh,并確認生效
source hadoop-env.sh
hadoop version
2.1.4配置yarn-env.sh
打開配置文件yarn-env.sh,設置了hadoop中jdk路徑,配置完畢后使用source yarn-env.sh編譯該文件
export JAVA_HOME=/app/lib/jdk1.7.0_55
2.1.5配置core-site.xml
1. 使用如下命令打開core-site.xml配置文件
cd /app/hadoop-2.2.0/etc/hadoop
sudo vi core-site.xml
2. 在配置文件中,按照如下內容進行配置
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop:9000</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/app/hadoop-2.2.0/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>hadoop.proxyuser.hduser.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hduser.groups</name>
<value>*</value>
</property>
</configuration>
2.1.6配置hdfs-site.xml
1. 使用如下命令打開hdfs-site.xml配置文件
cd /app/hadoop-2.2.0/etc/hadoop
sudo vi hdfs-site.xml
2.在配置文件中,按照如下內容進行配置
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/app/hadoop-2.2.0/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/app/hadoop-2.2.0/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
2.1.7配置mapred-site.xml
1.默認情況下不存在mapred-site.xml文件,可以從模板拷貝一份,并使用如下命令打開mapred-site.xml配置文件
cd /app/hadoop-2.2.0/etc/hadoop
cp mapred-site.xml.template mapred-site.xml
sudo vi mapred-site.xml
2.在配置文件中,按照如下內容進行配置
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop:19888</value>
</property>
</configuration>
2.1.8配置yarn-site.xml
1.使用如下命令打開yarn-site.xml配置文件
cd /app/hadoop-2.2.0/etc/hadoop
sudo vi yarn-site.xml
2.在配置文件中,按照如下內容進行配置
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>hadoop:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>hadoop:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>hadoop:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>hadoop:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>hadoop:8088</value>
</property>
</configuration>
2.1.9配置slaves文件
在slaves配置文件中設置從節點,這里設置為hadoop,與Hadoop1.X區別的是Hadoop2.X不需要設置Master
cd /app/hadoop-2.2.0/etc/hadoop
vi slaves
2.1.10格式化namenode
cd /app/hadoop-2.2.0/bin
./hdfs namenode -format
2.2啟動Hadoop
2.2.1啟動hdfs
cd /app/hadoop-2.2.0/sbin
./start-dfs.sh
2.2.2驗證當前進行
使用jps命令查看運行進程,此時在hadoop上面運行的進程有:namenode、secondarynamenode和datanode三個進行
2.2.3啟動yarn
cd /app/hadoop-2.2.0/sbin
./start-yarn.sh
2.2.4驗證當前進行
使用jps命令查看運行進程,此時在hadoop上運行的進程除了:namenode、secondarynamenode和datanode,增加了resourcemanager和nodemanager兩個進程:
2.3測試Hadoop
2.3.1創建測試目錄
cd /app/hadoop-2.2.0/bin
./hadoop fs -mkdir -p /class3/input
2.3.2準備測試數據
./hadoop fs -copyFromLocal ../etc/hadoop/* /class3/input
2.3.3運行wordcount例子
cd /app/hadoop-2.2.0/bin
./hadoop jar ../share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount /class3/input /class3/output
2.3.4查看結果
使用如下命令查看運行結果:
./hadoop fs -ls /class3/output/
./hadoop fs -cat /class3/output/part-r-00000 | less
3、問題解決
3.1CentOS 64bit安裝Hadoop2.2.0中出現文件編譯位數異常
在安裝hadoop2.2.0過程中出現如下異常:Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
通過分析是由于lib/native目錄中有些文件是在32位編譯,無法適應CentOS 64位環境造成
有兩種辦法解決:
l 重新編譯hadoop,然后重新部署
l 暫時辦法是修改配置,忽略有問題的文件

![clip_image002[10] clip_image002[10]](https://images0.cnblogs.com/blog/107289/201507/092254347368532.jpg)
![clip_image004[10] clip_image004[10]](https://images0.cnblogs.com/blog/107289/201507/092254365644175.jpg)
![clip_image006[10] clip_image006[10]](https://images0.cnblogs.com/blog/107289/201507/092254417522556.jpg)
![clip_image008[9] clip_image008[9]](https://images0.cnblogs.com/blog/107289/201507/092254431587326.jpg)
![clip_image010[9] clip_image010[9]](https://images0.cnblogs.com/blog/107289/201507/092254447059053.jpg)
![clip_image012[9] clip_image012[9]](https://images0.cnblogs.com/blog/107289/201507/092254464086266.jpg)
![clip_image014[9] clip_image014[9]](https://images0.cnblogs.com/blog/107289/201507/092254500809378.jpg)
![clip_image016[9] clip_image016[9]](https://images0.cnblogs.com/blog/107289/201507/092254537523490.jpg)
![clip_image018[9] clip_image018[9]](https://images0.cnblogs.com/blog/107289/201507/092254557522146.jpg)
![clip_image020[9] clip_image020[9]](https://images0.cnblogs.com/blog/107289/201507/092255060029880.jpg)
![clip_image024[9] clip_image024[9]](https://images0.cnblogs.com/blog/107289/201507/092255120025848.jpg)
![clip_image026[9] clip_image026[9]](https://images0.cnblogs.com/blog/107289/201507/092255163469588.jpg)
![clip_image028[9] clip_image028[9]](https://images0.cnblogs.com/blog/107289/201507/092255201748185.jpg)
![clip_image030[9] clip_image030[9]](https://images0.cnblogs.com/blog/107289/201507/092255231587439.jpg)
![clip_image032[9] clip_image032[9]](https://images0.cnblogs.com/blog/107289/201507/092255295332592.jpg)
![clip_image034[9] clip_image034[9]](https://images0.cnblogs.com/blog/107289/201507/092255334552161.jpg)
![clip_image036[9] clip_image036[9]](https://images0.cnblogs.com/blog/107289/201507/092255399247284.jpg)
![clip_image038[9] clip_image038[9]](https://images0.cnblogs.com/blog/107289/201507/092255436584910.jpg)
![clip_image040[9] clip_image040[9]](https://images0.cnblogs.com/blog/107289/201507/092255507688905.jpg)
![clip_image042[9] clip_image042[9]](https://images0.cnblogs.com/blog/107289/201507/092255547057001.jpg)
![clip_image044[9] clip_image044[9]](https://images0.cnblogs.com/blog/107289/201507/092255575969985.jpg)
![clip_image046[9] clip_image046[9]](https://images0.cnblogs.com/blog/107289/201507/092256010643627.jpg)
![clip_image048[9] clip_image048[9]](https://images0.cnblogs.com/blog/107289/201507/092256054399123.jpg)
![clip_image050[9] clip_image050[9]](https://images0.cnblogs.com/blog/107289/201507/092256066899408.gif)
浙公網安備 33010602011771號