Linux搭建Hadoop集群(fedora,hadoop2.7.1)
# linux与Linux虚拟机,Hadoop集群## 前面是关于Linux虚拟如何修改ip,并让Linux能能在同一局域网下ping到Linux虚拟机 。## Hadoop集群配置在下面↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓## Linux虚拟机改ip
Linux搭建Hadoop集群
集群介绍和前期准备
本次搭建使用了4台机器。
一台笔记本电脑(系统为fedora)作master。
一台笔记本电脑(系统为Windows)通过VMware安装fedora虚拟机作slave01。
一台笔记本电脑(系统为Windows)通过VMware安装fedora虚拟机作slave02。
一台笔记本电脑(系统为fedora)作slave03。
机器处于同一局域网下。
这里使用四台主机搭建分布式集群环境,更多台机器同样可以使用如下配置。
实现四台电脑之间的连接,虚拟机需要改为桥接模式
笔记本电脑(系统为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集群成功
更多推荐
所有评论(0)