这篇文章介绍了搭建一个三节点Hadoop集群时的顺序,三台机为内网IP。对应的hostname分别为huawei-01,huawei-03,huawei-03。其中第一台作为master,后面两台作为slaves。
先决条件
在安装Hadoop之前,请确认集群的每台机器上均安装JDK,以及搭配环境变量。
| 12
 3
 4
 5
 
 | # Java Environmentexport JAVA_HOME=/usr/java/jdk1.8.0_181-amd64/
 export JRE_HOME=${JAVA_HOME}/jre
 export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
 export PATH=${JAVA_HOME}/bin:$PATH
 
 | 
另外,需要在三台机器/etc/hosts写入对应机器。
| 12
 3
 4
 5
 
 | # 三台机的私有网络IP
 192.168.0.125	huawei-02
 192.168.0.160	huawei-01
 192.168.0.56	huawei-03
 
 | 
还要修改对应hostname,因为DataNode上的日志文件后解释hostname(不知是不是这原因)。
下载二进制文件
Hadoop有很多版本选择,考虑会后续Hadoop会部署其它应用,所以选择兼容性最好的2.7.7版本。
| 12
 3
 
 | cd /optwget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz
 tar -zxvf hadoop-2.7.7.tar.gz -C .
 
 | 
修改配置文件
| 12
 3
 4
 
 | vim /etc/profile# Flink Environment
 export HADOOP_HOME=/opt/hadoop-2.7.7
 export PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin
 
 | 
core-site.xml
指定NameNode的IP地址和端口号,
| 12
 3
 4
 5
 6
 
 | <configuration><property>
 <name>fs.default.name</name>
 <value>hdfs://huawei-01:9000</value>
 </property>
 </configuration>
 
 | 
hdfs-site.xml
dfs.replication 指定备份数目为 3,dfs.name.dir 指定 NameNode 的文件存储路径,dfs.data.dir 指定 DataNode 的文件存储路径。
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 
 | <configuration><property>
 <name>dfs.replication</name>
 <value>3</value>
 </property>
 <property>
 <name>dfs.namenode.name.dir</name>
 <value>file:/opt/hadoop-2.7.7/data/namenode</value>
 </property>
 <property>
 <name>dfs.datanode.data.dir</name>
 <value>file:/opt/hadoop-2.7.7/data/datanode</value>
 </property>
 </configuration>
 
 | 
mapred-site.xml
| 1
 | cp mapred-site.xml.template mapred-site.xml
 | 
然后修改mapred-site.xml的内容
| 12
 3
 4
 5
 6
 
 | <configuration><property>
 <name>mapreduce.framework.name</name>
 <value>yarn</value>
 </property>
 </configuration>
 
 | 
yarn-site.xml
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 
 | <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.resource-tracker.address</name>
 <value>huawei-01:8025</value>
 </property>
 <property>
 <name>yarn.resourcemanager.scheduler.address</name>
 <value>huawei-01:8030</value>
 </property>
 <property>
 <name>yarn.resourcemanager.address</name>
 <value>huawei-01:8050</value>
 </property>
 </configuration>
 
 | 
slaves
添加slave节点的hostname到该文件中
设置环境变量
| 1
 | export JAVA_HOME=/usr/java/jdk1.8.0_181-amd64/
 | 
分发配置文件
| 12
 
 | scp -r /opt/hadoop-2.7.7 huawei-02:/opt/hadoop-2.7.7scp -r /opt/hadoop-2.7.7 huawei-03:/opt/hadoop-2.7.7
 
 | 
启动集群
格式化HDFS
启动集群
| 12
 
 | start-dfs.shstart-yarn.sh
 
 | 
使用jps命令查看服务运行情况
| 12
 3
 4
 5
 
 | # master节点中运行的服务25928 SecondaryNameNode
 25742 NameNode
 26387 Jps
 26078 ResourceManager
 
 | 
| 12
 3
 4
 
 | # slave节点中运行的服务24002 NodeManager
 23899 DataNode
 24179 Jps
 
 | 
提交示例任务
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 
 | cd /opt/hadoop-2.7.7hdfs dfs -mkdir /wordcount/input
 # 把当前路径下的 LICENSE.txt 文件复制到 HDFS 中
 hadoop fs -put ./LICENSE.txt /wordcount/input
 # 提交任务,最后两个参数分别指定任务的输入和输出
 hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /wordcount/input /wordcount/output
 # 查看输出路径
 hadoop fs -ls /wordcount/output
 # 如果一切正常,该路径下包含两个文件
 # 第一个文件是空文件,表示任务运行成功
 /wordcount/output/_SUCCESS
 # 第二个文件是输出文件,统计了 LICENSE.txt 中每个单词出现的次数
 /wordcount/output/part-r-00000
 
 |