本文详细介绍搭建4个节点的完全分布式Hadoop集群的方法,Linux系统版本是CentOS 7,Hadoop版本是2.7.7,JDK版本是1.8。
一、准备环境
1. 在VMware workstations上创建4个Linux虚拟机,并配置其静态IP。
有关【创建Linux虚拟机及配置网络】,请参考这里。
2. 配置DNS(每个节点)
编辑配置文件,添加主节点和从节点的映射关系。
#vim /etc/hosts 192.168.44.3 hadoop01 192.168.44.4 hadoop02 192.168.44.5 hadoop03 192.168.44.6 hadoop04
3. 关闭防火墙(每个节点)
#关闭服务 [root@hadoop01 opt]# systemctl stop firewalld #关闭开机自启动 [root@hadoop01 opt]# systemctl disable firewalld Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
4. 配置免密码登录
有关【配置免密码登录方法】,请参考这里。
5. 配置Java环境(每个节点)
有关【配置java环境方法】,请参考这里。
二、搭建Hadoop完全分布式集群
在各个节点上安装与配置Hadoop的过程都基本相同,因此可以在每个节点上安装好Hadoop后,在主节点master上进行统一配置,然后通过scp 命令将修改的配置文件拷贝到各个从节点上即可。
1. 下载Hadoop安装包,解压,配置Hadoop环境变量
有关【Hadoop安装包下载方法】,请参考这里。
本文下载的Hadoop版本是2.7.7,指定一个目录(比如:/opt),使用rz命令上传Hadoop安装包到Linux系统,解压到指定目录,配置Hadoop环境变量,并使其生效。实现命令如下:
#解压到/opt目录
[root@hadoop01 opt]# tar -zxvf hadoop-2.7.7.tar.gz
#链接/opt/hadoop-2.7.7到/opt/hadoop,方便后续配置
[root@hadoop01 opt] #ln -s hadoop-2.7.7 hadoop
#配置Hadoop环境变量
[root@hadoop02 opt]# vim /etc/profile #Hadoop export HADOOP_HOME=/opt/hadoop # 该目录为解压安装目录 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop #保存后,使profile生效 [root@hadoop02 opt]# source /etc/profile
2. 配置Hadoop环境脚本文件中的JAVA_HOME参数
#进入Hadoop安装目录下的etc/hadoop目录 [root@hadoop01 ~]#cd /opt/hadoop/etc/hadoop #分别在hadoop-env.sh、mapred-env.sh、yarn-env.sh文件中添加或修改如下参数:
[root@hadoop01 hadoop]# vim hadoop-env.sh
[root@hadoop01 hadoop]# vim mapred-env.sh
[root@hadoop01 hadoop]# vim yarn-env.sh
export JAVA_HOME="/opt/jdk" # 路径为jdk安装路径
3. 修改Hadoop配置文件
Hadoop安装目录下的etc/hadoop目录中,需修改core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、slaves(3.0之后为workers)文件,根据实际情况修改配置信息。
(1)core-site.xml
1 <configuration> 2 <property> 3 <!-- 配置hdfs地址 --> 4 <name>fs.defaultFS</name> 5 <value>hdfs://hadoop01:9000</value> 6 </property> 7 <property> 8 <!-- 保存临时文件目录,需先在/opt/hadoop-2.7.7下创建tmp目录 --> 9 <name>hadoop.tmp.dir</name> 10 <value>/opt/hadoop-2.7.7/tmp</value> 11 </property> 12 13 <property> 14 <name>hadoop.proxyuser.root.hosts</name> 15 <value>*</value> 16 </property> 17 <property> 18 <name>hadoop.proxyuser.root.groups</name> 19 <value>*</value> 20 </property> 21 </configuration>
更多配置信息,请参考core-site.xml。
(2)hdfs-site.xml
1 <configuration> 2 <property> 3 <!-- 主节点地址 --> 4 <name>dfs.namenode.http-address</name> 5 <value>hadoop01:50070</value> 6 </property> 7 <property> 8 <name>dfs.namenode.name.dir</name> 9 <value>file:/opt/hadoop/dfs/name</value> 10 </property> 11 <property> 12 <name>dfs.datanode.data.dir</name> 13 <value>file:/opt/hadoop/dfs/data</value> 14 </property> 15 <property> 16 <!-- 备份份数 --> 17 <name>dfs.replication</name> 18 <value>2</value> 19 </property> 20 <property> 21 <!-- 第二节点地址 --> 22 <name>dfs.namenode.secondary.http-address</name> 23 <value>hadoop02:9001</value> 24 </property> 25 <property> 26 <name>dfs.webhdfs.enabled</name> 27 <value>true</value> 28 </property> 29 <property> 30 <name>dfs.permissions</name> 31 <value>false</value> 32 <description>配置为false后,可以允许不要检查权限就生成dfs上的文件,需防止误删操作</description> 33 </property> 34 </configuration>
更多配置信息,请参考hdfs-site.xml。
(3)mapred-site.xml
1 <configuration> 2 <property> 3 <name>mapreduce.framework.name</name> 4 <value>yarn</value> 5 </property> 6 <property> 7 <name>mapreduce.jobhistory.address</name> 8 <value>hadoop01:10020</value> 9 </property> 10 <property> 11 <name>mapreduce.jobhistory.webapp.address</name> 12 <value>hadoop01:19888</value> 13 </property> 14 </configuration>
更多配置信息,请参考mapred-site.xml。
(4)yarn-site.xml
1 <configuration> 2 <property> 3 <name>yarn.nodemanager.aux-services</name> 4 <value>mapreduce_shuffle</value> 5 </property> 6 <property> 7 <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name> 8 <value>org.apache.hadoop.mapred.ShuffleHandler</value> 9 </property> 10 <property> 11 <name>yarn.resourcemanager.address</name> 12 <value>hadoop01:8032</value> 13 </property> 14 <property> 15 <name>yarn.resourcemanager.scheduler.address</name> 16 <value>hadoop01:8030</value> 17 </property> 18 <property> 19 <name>yarn.resourcemanager.resource-tracker.address</name> 20 <value>hadoop01:8031</value> 21 </property> 22 <property> 23 <name>yarn.resourcemanager.admin.address</name> 24 <value>hadoop01:8033</value> 25 </property> 26 <property> 27 <name>yarn.resourcemanager.webapp.address</name> 28 <value>hadoop01:8088</value> 29 </property> 30 31 <property> 32 <name>yarn.nodemanager.resource.memory-mb</name> 33 <!-- NodeManager中的配置,这里配置过小可能导致nodemanager启动不起来 34 大小应该大于 spark中 executor-memory + driver的内存 --> 35 <value>6144</value> 36 </property> 37 <property> 38 <!-- RsourceManager中配置 39 大小应该大于 spark中 executor-memory + driver的内存 --> 40 <name>yarn.scheduler.maximum-allocation-mb</name> 41 <value>61440</value> 42 </property> 43 <property> 44 <!-- 使用核数 --> 45 <name>yarn.nodemanager.resource.cpu-vcores</name> 46 <value>2</value> 47 </property> 48 49 <property> 50 <name>yarn.log-aggregation-enable</name> 51 <value>true</value> 52 </property> 53 <property> 54 <name>yarn.log-aggregation.retain-seconds</name> 55 <value>604800</value> 56 </property> 57 <property> 58 <name>yarn.nodemanager.vmem-check-enabled</name> 59 <value>false</value> 60 <description>忽略虚拟内存的检查,如果你是安装在虚拟机上,这个配置很有用,配上去之后后续操作不易出问题。</description> 61 </property> 62 <property> 63 <!-- 调度策略,设置为公平调度器 --> 64 <name>yarn.resourcemanager.scheduler.class</name> 65 <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value> 66 </property> 67 </configuration>
更多配置信息,请参考yarn-site.xml。
(5)slaves文件
#增加从节点地址(若配置了hosts,可直接使用主机名,亦可用IP地址)
[root@hadoop01 hadoop]# vim slaves
hadoop02
hadoop03
hadoop04
4. 将配置好的文件夹拷贝到其他从节点
[root@hadoop01 hadoop-2.7.7]# scp -r /opt/hadoop-2.7.7 root@hadoop02:/opt/
[root@hadoop01 hadoop-2.7.7]# scp -r /opt/hadoop-2.7.7 root@hadoop03:/opt/
[root@hadoop01 hadoop-2.7.7]# scp -r /opt/hadoop-2.7.7 root@hadoop04:/opt/
5. 初始化 & 启动
#格式化 [root@hadoop01 hadoop-2.7.7]# bin/hdfs namenode -format #启动 [root@hadoop01 hadoop-2.7.7]# sbin/start-dfs.sh [root@hadoop01 hadoop-2.7.7]# sbin/start-yarn.sh
6. 验证Hadoop启动成功
#主节点 [root@hadoop01 hadoop-2.7.7]# jps 5895 Jps 5624 ResourceManager 5356 NameNode #从节点 [root@hadoop02 hadoop]# jps 5152 SecondaryNameNode 5085 DataNode 5245 NodeManager 5357 Jps [root@hadoop03 opt]# jps 5080 DataNode 5178 NodeManager 5278 Jps [root@hadoop04 opt]# jps 5090 NodeManager 5190 Jps 4991 DataNode
7. Hadoop Web端口访问
注:先开放端口或直接关闭防火墙
# 查看防火墙状态 firewall-cmd --state # 临时关闭 systemctl stop firewalld # 禁止开机启动 systemctl disable firewalld
在浏览器输入:http://hadoop01:8088,打开Hadoop Web管理页面。
在浏览器输入:http://hadoop01:50070打开Hadoop Web页面。
注意:如果输入主节点名称无法打开Web页面,则需要配置Windows上的hosts,路径如下:
C:\Windows\System32\drivers\etc\hosts
192.168.44.5 hadooop01 192.168.44.6 hadooop02 192.168.44.7 hadooop03 192.168.44.8 hadooop04