Linux搭建Hadoop集群

集群介绍和前期准备

本次搭建使用了4台机器。
一台笔记本电脑(系统为fedora)作master。

一台笔记本电脑(系统为Windows)通过VMware安装fedora虚拟机作slave01。

一台笔记本电脑(系统为Windows)通过VMware安装fedora虚拟机作slave02。

一台笔记本电脑(系统为fedora)作slave03。

机器处于同一局域网下。

这里使用四台主机搭建分布式集群环境,更多台机器同样可以使用如下配置。

实现四台电脑之间的连接,虚拟机需要改为桥接模式

Linux虚拟机修改IP(桥接模式,fedora)

笔记本电脑(系统为fedora)修改ip,按一下图片步骤
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

修改主机名和配置hosts

IP在不同局域网环境下有可能不同,可以用ifconfig命令查看当前主机打IP。

ifconfig

即可获得当前slave03的IP在局域网地址,如下图:
在这里插入图片描述
台机器的名称和IP如下,
主机名称 IP地址

master		192.168.0.117
slave01		192.168.0.118
slave02		192.168.0.119
slave03		192.168.0.120

四台电脑主机的用户名分别为hadoop,hadoop,hadoop,hadoop.

四台机器可以ping双方的ip来测试四台电脑的连通性。

在master节点主机上的Shell中运行如下命令,测试能否连接到slave01节点主机

ping 192.168.0.118

如果出现如下图,说明连接成功

[hadoop@master~]$ ping 192.168.0.118
PING 192.168.0.118 (192.168.0.118) 56(84) bytes of data.
64 bytes from 192.168.0.118: icmp_seq=1 ttl=64 time=73.8 ms
64 bytes from 192.168.0.118: icmp_seq=2 ttl=64 time=5.98 ms
64 bytes from 192.168.0.118: icmp_seq=3 ttl=64 time=7.58 ms
64 bytes from 192.168.0.118: icmp_seq=4 ttl=64 time=5.90 ms
64 bytes from 192.168.0.118: icmp_seq=5 ttl=64 time=13.6 ms

为了更好的在Shell中区分四台主机,修改其显示的主机名,执行如下命令

sudo vim /etc/hostname

master的/etc/hostname添加如下配置:

master

同样slave01的/etc/hostname添加如下配置:

slave01

同样slave02的/etc/hostname添加如下配置:

slave02

同样slave03的/etc/hostname添加如下配置:

slave03

重启
重启四台电脑,重启后在终端Shell中才会看到机器名的变化,如下图:

修改四台机器的/etc/hosts文件,添加同样的配置:

sudo vim /etc/hosts
配置如下:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.117  master
192.168.0.118  slave01
192.168.0.119  slave02
192.168.0.120  slave03  

配置ssh无密码登录本机和访问集群机器

四台主机电脑分别运行如下命令,测试能否连接到本地localhost

ssh localhost

登录成功会显示如下结果:

Last login: Sat Nov 16 18:29:55 2019 from ::1

如果不能登录本地,请运行如下命令。

ssh-keygen -t rsa -P ""
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

如果免密不成功就进入
SSH免密
在保证了四台主机电脑都能连接到本地localhost后,
如果 ssh localhost 还需要输入密码则

chmod  600  ~/.ssh/authorized_keys

还需要让master主机免密码登录slave01和slave02主机,slave03主机。在master执行如下命令,将master的

id_rsa.pub传送给三台slave主机。

scp ~/.ssh/id_rsa.pub slave01:/home/hadoop/
scp ~/.ssh/id_rsa.pub slave02:/home/hadoop/
scp ~/.ssh/id_rsa.pub slave03:/home/hadoop/

在slave01,slave02,slave03主机上分别运行ls命令

ls

可以看到slave01、slave02、slave03主机分别接收到id_rsa.pub文件

[hadoop@master~]$ ls
公共  模板  视频  图片  文档  下载  音乐  桌面  con  con-12  id_rsa.pub

接着在slave01、slave02,、slave03主机上将master的公钥加入各自的节点上,在

slave01和slave02,slave03执行如下命令:

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub

然后master主机再执行免密码登录:

ssh slave01

JDK和Hadoop安装配置

分别在master主机和slave01、slave02, slave03主机上安装JDK和Hadoop,并加

入环境变量。

卸载openjdk

[root@master ~]#rpm -qa|grep java
		tzdata-java-2012j-1.el6.noarch
		java-1.7.0-openjdk-1.7.0.9-2.3.4.1.el6_3.i686
		java-1.6.0-openjdk-1.6.0.0-1.50.1.11.5.el6_3.i686
[root@master ~]# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.9-2.3.4.1.el6_3.i686
[root@master ~]#rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.50.1.11.5.el6_3.i686

再次查询OpenJDK,openJDK已删除

[root@master ~]# rpm -qa|grep java
		tzdata-java-2012j-1.el6.noarch

安装jdk1.8
先修改 /opt文件的权限

sudo chmod 777 -R /opt

在解压

 tar -zxvf  jdk-8u211-linux-x64 -C /opt/

编辑~/.bashrc文件,添加如下内容:

export JAVA_HOME=/opt//jdk-8u211-linux-x64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

接着让环境变量生效,执行如下代码:

source ~/.bashrc

安装Hadoop

先在master主机上做安装Hadoop,暂时不需要在slave01,slave02,slave03主机上

安装Hadoop.稍后会把master配置好的Hadoop发送给slave01,slave02,slave03.

在master主机执行如下操作:

tar -zxf  hadoop-2.7.1 -C /opt/    # 解压到/opt/中

编辑~/.bashrc文件,添加如下内容:

export HADOOP_HOME=/opt/hadoop-2.7.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

接着让环境变量生效,执行如下代码:

source ~/.bashrc

Hadoop集群配置

修改master主机修改Hadoop如下配置文件,这些配置文件都位

于/opt/hadoop-2.7.1/etc/hadoop目录下。

修改slaves:

这里把DataNode的主机名写入该文件,每行一个。这里让master节点主机仅作为

NameNode使用。

slave01
slave02
slave03

修改core-site.xml

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://master:9000</value>
                <description>**master为主节点主机名**.</description>
        </property>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>file:/opt/hadoop-2.7.1/local/hadoop/tmp</value>
                <description>Abase for other temporary directories.</description>
        </property>
</configuration>

修改hdfs-site.xml:dfs.replication 一般设为 3

<configuration>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>master:50090</value>
                <description>**master为主节点主机名**.</description>
        </property>
        <property>
                <name>dfs.replication</name>
                <value>3</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/opt/hadoop-2.7.1/local/hadoop/tmp/dfs/name</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/opt/hadoop-2.7.1/local/hadoop/tmp/dfs/data</value>
        </property>
</configuration>

修改 mapred-site.xml (可能需要先重命名,默认

文件名为 mapred-site.xml.template),然后配置修改如下:

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>master:10020</value>
                 <description>**master为主节点主机名**.</description>
        </property>
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>master:19888</value>
                <description>**master为主节点主机名**.</description>
        </property>
</configuration>

修改 yarn-site.xml

<configuration>
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>master</value>
                 <description>**master为主节点主机名**.</description>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
        <property>		
	        <name>yarn.nodemanager.vmem-check-enabled</name>
	        <value>false</value>
        </property>
</configuration>

配置好后,将 master 上的 /opt/hadoop-2.7.1文件和/opt//jdk-8u211-linux-x64 文件

夹复制到各个节点上。在 master 节点主机上执行:

需要修改slave01,slave02,slave03 的 /opt文件的权限

sudo chmod 777 -R /opt

在执行

scp -r  /opt/hadoop-2.7.1 slave01:/opt/
scp -r /opt//jdk-8u211-linux-x64 slave01:/opt/
scp -r  /opt/hadoop-2.7.1 slave02:/opt/
scp -r /opt//jdk-8u211-linux-x64 slave02:/opt/
scp -r  /opt/hadoop-2.7.1 slave03:/opt/
scp -r /opt//jdk-8u211-linux-x64 slave03:/opt/

启动hadoop集群

在master主机上执行如下命令:

hdfs namenode -format
start-all.sh

运行后,在master,slave01,slave02,slave03运行jps命令,查看:

jps

master运行jps后,如下图:
在这里插入图片描述
slave01、slave02,slave03运行jps,如下图:
在这里插入图片描述
子结点和主节点并访问: master:50070 查看datanode的活节点
主节点访问: master:8088 查看能启动的子节点个数。
子结点访问: master:8042

Hadoop集群成功

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐