系統環境:
操作系統:CentOS 6.5
Hadoop:2.6.0
為了方便起見,打印當前系統狀態
vim /etc/hosts,host信息如下:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.211.55.150 master
準備工作
- 安裝idk 1.7
- 配置su命令免密碼,詳見我的另一篇文章《免密碼使用sudo和su》
以下流程有些步驟必須需要切換到root權限執行,為了便于敘述,后續所有步驟都在root權限下操作 - 配置ssh免密碼登錄
ssh-keygen -t rsa -P "" //然后一直回車即可
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
配置完成后可以使用ssh localhost
測試下是否配置成功
- 下載hadoop2.6.0 apache官網下載地址
Hadoop安裝
+ 解壓并移動文件到hadoop文件夾
su root
cd /
tar -zxvf hadoop-2.6.0.tar.gz
mkdir hadoop
mv hadoop-2.6.0 hadoop
- 系統環境變量
export HADOOP_HOME=/hadoop/hadoop-2.6.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
- Hadoop環境變量
cd /hadoop/hadoop-2.6.0/etc/hadoop
vi hadoop-env.sh
修改:
export JAVA_HOME=/usr/jdk1.7.0_80
Hadoop單機模式驗證
所謂的本地模式:在運行程序的時候,比如wordcount是在本地磁盤運行的
到這一步時,單機模式已經部署完畢,我們可以跑一個小程序驗證下。
- 我們先切換到Hadoop目錄,創建一個input文件夾,并拷貝一些文件到該文件夾中。
cd $HADOOP_HOME
mkdir input
cp etc/hadoop/*.xml input
- 執行下hadoop自帶的wordcound小程序驗證
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.0.jar wordcount input output
- 查看執行結果
cat output/*
這里就不演示運算結果了,一般也不會出什么問題,我們繼續配置偽分布模式。
Hadoop偽分布模式
切換路徑到/hadoop/hadoop-2.6.0/etc/hadoop
- vi core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/tmp</value>
</property>
<!--
接收Client連接的RPC端口,用于獲取文件系統metadata信息。
-->
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
- vi hfs-site.xml
<configuration>
<!--
備份只有一份。
-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datannode.data.dir</name>
<value>/hadoop/dfs/data</value>
</property>
</configuration>
如果不想讓程序運行在yarn上,到此為止配置已經完成,我們可以驗證下。
首先我們需要創建hadoop臨時文件夾和hdfs文件夾
cd /hadoop
mkdir tmp
mkdir dfs/{name,data}
- 格式化namenode
hdfs namenode -format
- 啟動集群
start-dfs.sh
啟動后我們可以通過管理頁面上看到相應的信息,顯示如下頁面證明啟動成功。
瀏覽器輸入:localhost:50070
當然,我們可以運行下wordcount驗證下(方法同yarn部分)
yarn配置
還是切換路徑到/hadoop/hadoop-2.6.0/etc/hadoop
- vi mapred-site.xml
這里需要注意,2.6.0并沒有提供mapred-site.xml文件,而是提供了一個mapred-site.xml.template文件,這里我們需要將擴展名中的.template去掉
mv mapred-site.xml.template mapred-site.xml
接著修改文件內容
<configuration>
<!--
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
</property>
-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
這里還要注意下,如果不想程序運行在yarn上,還需要將template后綴加上,要不會運行失敗。
- vi yarn-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
下面還是驗證運行wordcount驗證下:
- 先停止集群
stop-all.sh
- 啟動集群
start-dfs.sh
start-yarn.sh
- 查看hadoop運行狀態
hdfs dfsadmin -report
啟動成功后也可以在hadoop進程管理頁面中查看,瀏覽器輸入localhost:8088
在這里我們可以看到hadoop運行的程序詳細信息,由于目前還沒有執行任何程序,所以這里什么都沒顯示。
- 在hdfs上創建input文件夾
hdfs dfs -mkdir -p input
- 拷貝一些本地文件到hdfs的input文件夾中,執行路徑切換到/hadoop/hadoop-2.6.0
hdfs dfs -put etc/hadoop input
- 執行wordcount程序
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.0.jar wordcount input output
執行過程如圖:
執行成功后,控制臺中會顯示 Job job_1452520008224_0001 completed successfully。
- 查看結果
hdfs dfs -cat output/*
詞頻統計結果,部分截圖(這個結果和你input文件夾內容相關)
你可以將結果從hdfs內拷貝到當前路徑中
hdfs dfs -get output output
hdfs常用命令,可以詳見本人另一篇文章 《常用HDFS命令》
到此,Hadoop單機模式和偽分布式模式已經介紹完。
問題說明:
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
網上查了查,很多解釋說是hadoop-2.6.0.tar.gz安裝包是在32位機器上編譯的,64位的機器加載本地庫.so文件時出錯。可我找了下,發現官網上下載的安裝包實際上就是64位的。估計有可能是某些系統不支持本地庫吧,** 這個不影響使用 **,大家可以無視。