僞分佈式即爲所有節點均配置在一臺機器上,後期添加其餘框架配置時建議現在僞分佈式進行測試,成功後再移植到完全分佈式
環境準備
1.網卡IP設置爲靜態(NAT模式)
- 修改網卡配置
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
2.重啓網絡服務
# service network restart
3.修改主機名
這裏我使用主機名爲master
# vi /etc/sysconfig/network
4.關閉防火牆
- 關閉防火牆
# service iptables stop
- 設置成開機不啓動
# chkconfig iptables off
- 關閉selinux
# vi /etc/sysconfig/selinux
5.添加主機名映射
- Linux上添加主機名映射
# vi /etc/hosts
- Windows本地添加主機名映射
路徑:C:\Windows\System32\drivers\etc\hosts
6.創建普通用戶
後期操作幾乎都用普通用戶進行,這裏我使用普通用戶名爲hadoop(若存在普通用戶可不用再次創建)
# useradd hadoop
# echo 123456 | passwd --stdin hadoop
7.安裝JDK
- 查看自帶jdk
# rpm -qa | grep java
- 卸載自帶jdk
# rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.50.1.11.5.el6_3.x86_64 tzdata-java-2012j-1.el6.noarch java-1.7.0-openjdk-1.7.0.9-2.3.4.1.el6_3.x86_64
- 新建文件夾並修改權限
# chown -R hadoop:hadoop /opt
$ mkdir -p /opt/modules
$ mkdir -p /opt/softwares
- 上傳jdk壓縮包
這裏使用filezilla上傳jdk-7u79-linux-x64.tar.gz壓縮包到/opt/softwares/下
- 解壓jdk
$ cd /opt/softwares/
$ tar -zxf jdk-7u79-linux-x64.tar.gz -C /opt/modules/
- 修改環境變量
# vi /etc/profile
- 修改配置文件,加入以下部分
##JAVA_HOME
JAVA_HOME=/opt/modules/jdk1.7.0_79
export PATH=$PATH:$JAVA_HOME/bin
- 檢查是否配置成功
# source /etc/profile
# java -version
若出現信息則配置成功
僞分佈式搭建
1.上傳壓縮包
這裏使用filezilla上傳hadoop-2.5.0-cdh5.3.6.tar.gz壓縮包到/opt/softwares/下
2.解壓壓縮包
$ tar -zxf hadoop-2.5.0-cdh5.3.6.tar.gz -C /opt/modules/
3.配置HDFS
這裏使用Notepad++連接主機來進行配置文件修改,配置文件路徑爲/opt/modules/hadoop-2.5.0-cdh5.3.6/etc/hadoop/
- hadoop-env.sh
export JAVA_HOME=/opt/modules/jdk1.7.0_79
- core-site.xml
<!--HDFS集羣訪問入口地址-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:8020</value>
</property>
<!--聲明存放數據的目錄-->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/modules/hadoop-2.5.0-cdh5.3.6/data</value>
</property>
- hdfs-site.xml
<!--Block的副本數,數據塊的副本數不能大於datanode的節點數量-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
- slaves
聲明哪些服務器是datanode,每行一個主機名
master
- 格式化文件系統
$ bin/hdfs namenode -format
- 啓動HDFS
$ sbin/hadoop-daemon.sh start namenode
$ sbin/hadoop-daemon.sh start datanode
- 通過瀏覽器登錄web控制檯,顯示以下界面則爲搭建成功
http://master:50070/
多次格式化導致元數據不統一解決方案
- 刪除hadoop下的data文件夾後,重新格式化
$ rm -rf data
$ bin/hdfs namenode -format
測試
- 創建測試文件
$ cd /opt
$ vi test.txt
- 在hdfs上創建文件夾
$ cd /opt/modules/hadoop-2.5.0-cdh5.3.6/
$ sbin/hadoop-daemon.sh start namenode
$ sbin/hadoop-daemon.sh start datanode
$ bin/hdfs dfs -mkdir /input
- 上傳文件
$ bin/hdfs dfs -put /opt/test.txt /input/
4.配置YARN
- yarn-env.sh和mapred-env.sh
export JAVA_HOME=/opt/modules/jdk1.7.0_79
- yarn-site.xml
<!-- NodeManager獲取數據的方式是shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
- mapred-site.xml
如果只有mapred-site.xml.template,就重命名爲mapred-site.xml
<!--mapreduce計算模型運行在yarn平臺-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
- 啓動YARN
$ sbin/yarn-daemon.sh start resourcemanager
$ sbin/yarn-daemon.sh start nodemanager
通過瀏覽器登錄web控制檯
http://master:8088/cluster
測試
利用官方自帶的jar包,進行文件的單詞統計,這裏是用的測試文件爲之前測試HDFS時上傳的test.txt
需要注意最後的目錄爲存放結果的文件夾,必須是不存在的
$ bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0-cdh5.3.6.jar wordcount /input/test.txt /output/
任務執行時,在web控制檯能查看任務執行情況
查看結果
$ bin/hdfs dfs -cat /output/*
5.配置日誌服務器
- yarn-site.xml
<!--啓用日誌聚合功能-->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!--日誌保存時間-->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>86400</value>
</property>
- mapred-site.xml
<!--進程通信-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<!--客戶端訪問入口-->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
- 重啓YARN
$ sbin/yarn-daemon.sh stop nodemanager
$ sbin/yarn-daemon.sh stop resourcemanager
$ sbin/yarn-daemon.sh start resourcemanager
$ sbin/yarn-daemon.sh start nodemanager
- 啓動歷史服務器
$ sbin/mr-jobhistory-daemon.sh start historyserver
- 重新運行任務
注意,目標文件夾必須不存在,要修改目標文件夾
$ bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0-cdh5.3.6.jar wordcount /input/test.txt /output2/
- 查看日誌
cat logs/mapred-hadoop-historyserver-master.log
可以看見剛剛任務運行成功的信息被保存到日誌中