Hadoop分布式集群配置
在Hadoop的集群中,有一个NameNode,一个ResourceManager。在高可靠的集群环境中,可以拥有两个NameNode和两个ResourceManager;在Hadoop 3版本以后,同一个NameService可以拥有3个NameNode。由于NameNode和ResourceManager是两个主要的服务,建议将它们部署到不同的服务器上。
步骤01 准备工作。
以三台服务器为集群环境,做以下准备工作。
(1) 所有主机安装JDK1.8+。建议将JDK安装到不同的主机的相同目录下,这样可以减少修改配置文件的次数。
(2) 在主节点(即执行start-dfs.sh和start-yarn.sh的主机)上向所有其他主机做SSH免密码登录。
(3) 修改所有主机的主机名称。
(4) 配置所有主机的hosts文件,添加主机名和IP的映射如下:
192.168.56.101 server101
192.168.56.102 server102
192.168.56.103 server103
(5) 关闭所有主机上的防火墙,使用以下命令:
systemctl stop firewalld
systemctl disable firewalld
(6) 完整的配置如表所示。
从表中可以看出,server101运行的进程比较多,且NameNode运行在上面,所以这台主机需要更多的内存。
特别说明,ZooKeeper集群安装,HBase的集群安装与此集群主机配置表相同,都采用表中所示的三台主机,具体配置内容详见各实验的具体描述。
步骤02 在server101上安装Hadoop。可以将Hadoop安装到任意的目录下,如在根目录下创建/app然后授予hadoop用户即可。将hadoop-3.4.0.tar.gz解压到/app目录下,并配置/app目录属hadoop用户。
$ sudo tar -zxvf hadoop3.4.0.tag.gz -C /app/
将/app目录及子目录,授权给hadoop用户和hadoop组:
$sudo chown hadoop:hadoop -R /app
配置hadoop-env.sh文件:
export JAVA_HOME=/usr/java/jdk1.8.0_281
配置文件core-site.xml:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://server101:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/app/datas/hadoop</value>
</property>
</configuration>
配置文件hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
</configuration>
配置文件mapred-site.xml:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
配置文件yarn-site.xml:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>server101</value>
</property>
<property>
<name>yarn.application.classpath</name>
<value>请自行执行hadoop classpath命令并将结果填入</value>
</property>
</configuration>
配置workers配置文件:workers配置文件用于配置执行DataNode和NodeManager的节点。
server101
server102
server103
步骤03 使用scp将Hadoop分发到其他主机。
由于scp会在网络上传递文件,而hadoop/share/doc目录下都是文档,没有必要进行复制,所以可以删除这个目录。删除doc目录:
$ rm -rf /app/hadoop-3.4.0/share/doc
然后复制server101的文件到其他两台主机的相同目录下:
$scp -r /app/hadoop-3.4.0 server102:/app/
$scp -r /app/hadoop-3.4.0 server103:/app/
步骤04 在server101上格式化NameNode。
首先需要在server101上配置Hadoop的环境变量。
$ sudo vim /etc/profile
在文件最后追加:
export HADOOP_HOME=/app/hadoop-3.4.0
export PATH=$PATH:$HADOOP_HOME/bin
在server101上执行namenode初始化命令:
$ hdfs namenode -format
步骤05 启动HDFS和YARN。
在server101上执行启动工作,由于配置了集群,此启动过程会以SSH方式登录其他两台主机,并分别启动DataNode和NodeManager。
$ /app/hadoop-3.4.0/sbin/start-dfs.sh
$ /app/hadoop-3.4.0/sbin/start-yarn.sh
启动完成后,通过宿主机的浏览器,查看9870端口,会显示集群情况,如图6-1所示。
访问地址http://server101:9870/,会发现三个DataNode节点同时存在。
查看8088端口,会发现三个NodeManager同时存在,如图所示。
最后,建议执行MapReduce测试一下集群,比如执行以下wordcount示例,如果可以顺序执行完成,则说明整个集群的配置都是正确的。
$ yarn jar hadoop-mapreduce-examples-3.2.2.jar wordcount /test/ /out002
版权归原作者 qq_53877854 所有, 如有侵权,请联系我们删除。