Hadoop分布式集群安装配置

1.1 安装环境

操作系统deepin 15.11, VMware Workstation,hadoop 3.1.3 版本。在deepin 操作系统中安装 VMware Workstation,在 VMware Workstation中安装两个deepin系统,采用两个节点作为集群环境,一个作为Master节点,一个作为Slave 节点。

1.2 hadoop的安装准备

在Master节点和Slave节点都需要进行如下准备工作,主要是配置hadoop用户,安装SSH server和安装Java 环境。

  1. 在安装虚拟机系统时,每个系统都创建hadoop用户。
  2. 选择一个节点作为Master, ctrl+alt+t打开终端,通过命令行方式进行安装,更新apt,执行如下命令。
	sudo apt-get update 
  1. 安装vim ,用于后续修改配置文件。
	sudo apt-get install vim
  1. 安装SSH并登录主机。
	sudo apt-get install openssh-server
	ssh localhost 
  1. 配置SSH无密码登录,由于hadoop 远程登录只能无密码登录,因此需要配置无密登录。
	退出登录: exit
	cd ~/.ssh/
	sh-keygen -t rsa
   cat ./id_rsa.pub >> ./authorized_keys

在这里插入图片描述

在这里插入图片描述

  1. 安装Java 环境,采用jdk-8u162-linux-x64.tar.gz,在Documents/目录下。
	cd  /usr/lib
	sudo mkdir jvm
	cd  ~/Documents/
	sudo tar -zxvf   ./jdk-8u162-linux-x64.tar.gz  -C  /usr/lib/jvm

在这里插入图片描述

  1. 配置环境变量,在配置文件开头位置添加如下内容。
    打开配置文件:
	cd  ~
	vim ~/.bashrc
添加内容:
	export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
	export JRE_HOME=${JAVA_HOME}/jre
	export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
	export PATH=${JAVA_HOME}/bin:$PATH
  1. 查看jdk是否安装成功。
	Java -version

在这里插入图片描述

1.3 安装Hadoop
在Master 节点安装hadoop ,并把/usr/local/中的hadoop 文件夹复制到其他Slave节点的/usr/local目录下。

  1. hadoop-3.1.3.tar.gz 在目录~/Documents/下,安装到/usr/local目录下。
	cd  ~/Documents/
	sudo tar zxf  hadoop3.1.3.tar.gz  -C  /usr/local
  1. 修改文件夹名,并修改文件的权限。
	cd  /usr/local/
	sudo mv ./hadoop-3.1.3/ ./hadoop
	sudo chown  -R hadoop  ./hadoop

在这里插入图片描述

  1. 查看是否安装成功。
	cd  /usr/local/hadoop
	./bin/hadoop version

在这里插入图片描述

1.4 Hadoop集群配置

  1. 网络配置,配置每个节点的网络,采用桥接来实现节点之间的互联,通过NAT模式连接网络。
    1)通过Edit->Virtual Netwrok Editor,点击Add Network添加一个网络,设置连接方式为桥接。
    2)设置vmnet8中的子网号为192.168.138.0,子网掩码255.255.255.0和网关192.168.138.133,点击NAT Setting即可设置网关。

在这里插入图片描述
在这里插入图片描述

  1. 配置需要每个节点主机的IP 地址,在子网192.168.138.0下,设置IP地址,Master 节点的IP为:192.168.138.128, Slave节点的IP 为:192.168.138.131。
    1)通过ifconfig来查看网卡的IP地址,如下图所示,ens33即为桥接网卡。

在这里插入图片描述

2)节点计算机静态IP 配置,执行如下命令打开配置文件。
Master节点:

sudo vim  /etc/network/interfaces
添加内容:
auto ens33 
iface ens33 inet  static
address 192.168.138.128

通过如下命令使设置生效,出现OK字样则成功:

sudo  /etc/init.d/networking restart

Slave节点:
用同样的方法设置,添加的内容为:

auto ens33 
iface ens33 inet  static
address 192.168.138.131
  1. 修改主机名,将Master节点的主机名为Master,将Slave节点的主机名改为Slave,分别在两个节点中执行如下命令。
    sudo vim /etc/hostname
  2. 在Master节点和Slave节点修改自己节点的IP 映射,添加如下相同内容。
    执行如下命令,注释掉文件中除127.0.0.1 localhost 的其他的IP 地址映射。
	sudo  vim /etc/hosts
	添加IP映射:
	192.168.138.128     Master
	192.168.138.131	    Slave
  1. 重启每个节点,完成主机名更新。
  2. 测试每个节点是否能Ping 通,通过如下命令测试。
	ping   Master  -c   3
	ping   Slave    -c  3 

在这里插入图片描述
在这里插入图片描述

  1. SSH无密吗登录节点,配置Master 节点可以远程登录其他Slave节点。由于修改过主机名,所以需要删除原来的SSH 公钥。在Master节点执行如下命令生成公钥。
	cd     ~/.ssh
	rm   ./id_rsa*
	ssh-keygen   -t   rsa
  1. 让Master 节点能无密登录SSH 本机,在Master节点执行如下命令.
	cat   ./id_rsa.pub   >>   ./authorized_keys
  1. 通过远程拷贝文件,将主机Master ssh公钥传输到Slave 节点。
	scp    ~/.ssh/id_rsa.pub   hadoop@Slave:/home/hadoop/

在这里插入图片描述

  1. 在Slave 节点将 ssh 公钥加入授权,执行如下命令,需要删除原先SSH公钥。
	mkdir    ~/.ssh
	cat     ~/id_rsa.pub   >>   ~/.ssh/authorized_keys
	rm   ~/id_rsa.pub

在这里插入图片描述
11. 在Master 节点上测试远程登录Slave 节点,可以看到主机名改变为Slave。

	ssh   Slave

在这里插入图片描述
12. 在Master节点配置hadoop 的PATH 变量,则可以直接使用hadoop,hdfs 相关命令而不需要转到相关目录。
打开配置文件:

	vim  ~/.bashrc
	添加内容:
	export   PATH=$PATH:/usr/local/hadoop/bin:/usr/loacl/hadoop/sbin
	使配置生效:
	source  ~/.bashrc
  1. 在Master节点修改配置目录/usr/local/hadoop/etc/hadoop目录下的5个配置文件。
  1. workers 文件
    Master作为NameNode,Slave作为 DataNode。将DataNode的主机名写入workers 文件,删除localhost。添加如下内容。
	Slave
  1. core-site.xml
    修改标签中的内容如下。
	<configuration>
        		<property>
                		<name>fs.defaultFS</name>
                		<value>hdfs://Master:9000</value>
        		</property>
        		<property>
                		<name>hadoop.tmp.dir</name>
                		<value>file:/usr/local/hadoop/tmp</value>
                		<description>Abase for other temporary directories.</description>
        		</property>
	</configuration>	
  1. hdfs-site.xml
    修改标签中的内容如下。
	<configuration>
        		<property>
                		<name>dfs.namenode.secondary.http-address</name>
                		<value>Master:50090</value>
        		</property>
        		<property>
               		 <name>dfs.replication</name>
                		<value>1</value>
        		</property>
        		<property>
                		<name>dfs.namenode.name.dir</name>
                		<value>file:/usr/local/hadoop/tmp/dfs/name</value>
        		</property>
        		<property>
                		<name>dfs.datanode.data.dir</name>
                		<value>file:/usr/local/hadoop/tmp/dfs/data</value>
        		</property>
	</configuration>
  1. mapred-site.xml
    修改标签中的内容如下。
	<configuration>
        		<property>
                		<name>mapreduce.framework.name</name>
               		 <value>yarn</value>
        		</property>
        		<property>
                		<name>mapreduce.jobhistory.address</name>
                		<value>Master:10020</value>
        		</property>
        		<property>
                		<name>mapreduce.jobhistory.webapp.address</name>
               		 <value>Master:19888</value>
        		</property>
	</configuration>
  1. yarn-site.xml
    修改标签中的内容如下。
	<configuration>
        		<property>
                		<name>yarn.resourcemanager.hostname</name>
                		<value>Master</value>
        		</property>
        		<property>
               		 <name>yarn.nodemanager.aux-services</name>
               		 <value>mapreduce_shuffle</value>
       		 </property>
	</configuration>
  1. 在Master节点通过远程拷贝Master 节点的/usr/loacl/hadoop目录到其他Slave 节点。首先先删除之前的临时文件和日志。
	cd    /usr/local
	sudo  rm  -r  ./hadoop/tmp
	sudo  rm  -r   ./hadoop/logs/*
	tar   -zcf   ~/hadoop.master.tar.gz    ./hadoop
	cd  ~
	scp   ./hadoop.master.tar.gz    Slave:/home/hadoop
  1. 在Slave 节点解压文件。
	sudo    rm   -r    /usr/local/hadoop
	sudo tar  -zxf   ~/hadoop.master.tar.gz   -C    /usr/local
	sudo  chown  -R   hadoop   /usr/local/hadoop
  1. 在Master 节点执行 NameNode 的格式化。
	hdfs   namenode    -format

在这里插入图片描述
17. 在Master 节点上启动hadoop 集群,执行如下命令。

	start-dfs.sh
	start-yarn.sh
	mr-jobhistory-daemon.sh  start historyserver

在这里插入图片描述
18. 通过jps 查看集群的节点启动的进程信息,分别在Master 和 Slave 节点执行jps。
Master 节点:
在这里插入图片描述
Slave 节点:
在这里插入图片描述

  1. 在Master节点查看集群的DataNode 是否正常启动。
	hdfs  dfsadmin    -report

在这里插入图片描述
通过网页查看Slave 节点的相关信息:
在这里插入图片描述

  1. 关闭hadoop集群。
	stop-yarn.sh
	stop-dfs.sh
	mr-jobhistory-daemon.sh stop historyserver
	或者通过如下命令关闭集群。
	stop-all.sh

1.5 总结

问题1:

  • Master 节点NameNode 没有启 动,DataNode节点却启动了;
  • 执行hdfs dfsadmin -report命令出现如下信息:
    report:Call From Master/192.168.138.128 to Master:9000 failed on connection exception: java.net.ConnectException:拒绝连接;For more details see :http://wiki.apache.org/hadoop/ConnectionRefused

解决:分析发现,我没有配置slaves文件,在hadoop3.1.3版本中,不存在slaves文件,通过网络查询资料以及和同学交流,我发现slaves文件更改成了workes文件,因此配置workes文件;由于前后操作不当,因此导致了此问题。通过如下方式解决:
关闭集群,删除临时文件和日志,重新执行hdfs namenode -format.

问题2:

  • 当关机重启后,集群无法启动,无法ping 通 ;

解决:分析发现各节点的IP发生了变化,导致 集群无法启动,是由于采用了NAT 进行网络连接,NAT模式在每次重启计算机会动态分配IP 地址;采用桥接来实现各节点的连通,配置静态IP.

参考文献

1.厦门大学数据库实验室,http://dblab.xmu.edu.cn/blog/install-hadoop-cluster/
2.网络配置,https://www.cnblogs.com/guangluwutu/p/9705136.html
https://www.cnblogs.com/lilongxin/p/9034245.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秘境之眼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值