这篇文章介绍了搭建一个三节点Hadoop集群时的顺序,三台机为内网IP。对应的hostname分别为huawei-01,huawei-03,huawei-03。其中第一台作为master,后面两台作为slaves。
先决条件
在安装Hadoop之前,请确认集群的每台机器上均安装JDK,以及搭配环境变量。
1 2 3 4 5
| # Java Environment export 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
写入对应机器。
1 2 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版本。
1 2 3
| cd /opt wget 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 .
|
修改配置文件
1 2 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地址和端口号,
1 2 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 的文件存储路径。
1 2 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
的内容
1 2 3 4 5 6
| <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
|
yarn-site.xml
1 2 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/
|
分发配置文件
1 2
| scp -r /opt/hadoop-2.7.7 huawei-02:/opt/hadoop-2.7.7 scp -r /opt/hadoop-2.7.7 huawei-03:/opt/hadoop-2.7.7
|
启动集群
格式化HDFS
启动集群
1 2
| start-dfs.sh start-yarn.sh
|
使用jps命令查看服务运行情况
1 2 3 4 5
| # master节点中运行的服务 25928 SecondaryNameNode 25742 NameNode 26387 Jps 26078 ResourceManager
|
1 2 3 4
| # slave节点中运行的服务 24002 NodeManager 23899 DataNode 24179 Jps
|
提交示例任务
1 2 3 4 5 6 7 8 9 10 11 12 13
| cd /opt/hadoop-2.7.7 hdfs 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
|