一、部署Hadoop本地模式
- 搭建linux環境
我用的centos7 - 在/opt目錄下創建目錄
mkdir module
- 安裝jdk
- 下載hadoop https://hadoop.apache.org/releases.html 並解壓到/opt/module目錄
- 配置hadoop環境變量
vi /etc/profile
JAVA_HOME=/usr/local/jdk1.8.0_151
HADOOP_HOME=/opt/module/hadoop-2.10.0
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH:$HADOOP_HOME/bin
export JAVA_HOME CLASSPATH PATH
配置完畢,刷新
source /etc/profile
這就安裝完畢了,簡單吧。。。
二、運行Demo
- 建立一個測試用的輸入文件
echo 'hadoop mapreduce hivehbase spark stormsqoop hadoop hivespark' > data/wc.input
- 運行命令
官方提供的計算單詞數量的程序
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.0.jar wordcount ../data/wc.input output
- 運行完成后,會創建一個output目錄,里面中有 _SUCCESS 文件說明 JOB 運行成功,part-r-00000 是輸出結果文件。結果示例如下:
三、偽分布式部署
進入hadoop目錄
cd /opt/module/hadoop-2.10.0/etc/hadoop
- 配置hadoop-env.sh
export JAVA_HOME=/usr/local/jdk1.8.0_151
- 配置core-site.xml
<configuration>
<!-- 指定HDFS中namenode的路徑 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://eshop01:9000</value>
</property>
<!-- 指定HDFS運行時產生的文件的存儲目錄 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.10.0/data/tmp</value>
</property>
</configuration>
- 配置hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
- 啟動集群
- 格式化NameNode(第一次啟動格式化)
bin/hdfs namenode -format
- 啟動namenode
sbin/hadoop-daemon.sh start namenode
- 啟動datanode
sbin/hadoop-daemon.sh start datanode
- 輸入地址: http://192.168.1.21(虛擬機ip):50070/ 查看啟動效果
四、HDFS操作
- hdfs創建目錄
bin/hdfs dfs -mkdir -p /usr/mmc
- 上傳本地文件到hdfs
bin/hdfs dfs -put /opt/module/data/wc.input /usr/mmc
- 刪除文件
bin/hdfs dfs -rm -r /usr/mmc
網頁上查看效果:
五、啟動YARN
- 配置yarn-env.sh
export JAVA_HOME=/usr/local/jdk1.8.0_151
- 配置yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop101</value>
</property>
</configuration>
hadoop101那里要配置為你虛擬機的hostname
- 配置mapred-env.sh
export JAVA_HOME=/usr/local/jdk1.8.0_151
- 配置mapred-site.xml(由mapred-site.xml.template重命名得到)
mv mapred-site.xml.template mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
- 啟動yarn
sbin/yarn-daemon.sh start resourcemanager
sbin/yarn-daemon.sh start nodemanager
- 運行mapreduce程序
- 先傳一個文件到hdfs上
hdfs dfs -mkdir -p /usr/mmc/input
hdfs dfs -put ../data/wc.input /usr/mmc/input
- 運行程序
注意:運行之前用jps查看下,這些都啟動沒有NameNode、NodeManager 、DataNode、ResourceManager
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.0.jar wordcount /usr/mmc/input /usr/mmc/output
- 查看運行進度
http://192.168.1.21:8088/cluster
此時可以看到執行的進度了,但是那個History鏈接還是點不動,需要啟動歷史服務器
- 配置歷史服務器
- 打開mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>eshop01:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>eshop01:19888</value>
</property>
</configuration>
- 啟動
sbin/mr-jobhistory-daemon.sh start historyserver
六、日志聚集
注意:開啟日志聚集需要重啟Nodemanager,resourcemanager,historymanager
- 配置yarn-site.xml,增加如下配置
<!--開啟日志聚集功能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志保留時間 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
-
啟動Nodemanager,resourcemanager,historymanager
-
運行實例程序
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.10.0.jar wordcount /usr/mmc/input /usr/mmc/output
- 查看log
http://192.168.1.21:19888/jobhistory 點擊指定job進去,點log