Hadoop 踩坑笔记 -no.3 HA集群框架 UnknownHost

Hadoop 踩坑笔记 -no.3 HA集群框架 UnknownHost,第1张

问题如标题,老规矩先复述一下HA框架的搭建步骤

    再网上淘到了一篇非常详细的博客

    https://www.cnblogs.com/qingyunzong/p/8634335.html

    鄙人便是按照以上步骤填坑的,这篇文章的步骤粗略的分为:

    1.hadoop的core-site.xml,hdfs-site.xml.....的文件配置

    2.zkServer的配置 

    3.启动journode,zkServer,format namenode

    4.启动hdfs以及yarn集群

    5.检验hdfs以及yarn

    前四步一切顺利,然后到了最后一步,向hdfs put的时候,报了unknownhost异常,找不到ns(我配置core-site.xml中的fs.defaultFS的字段为hdfs:\\ns\),哈?????为啥,怎么把我的命名空间当作域名来解析了,然后从网上各种百度解决方法,然而都是我已经想到的

    1.检查hosts文件是否配置正确

    2.检查hadoop的slave文件是否正常

    3.将hdfs-site.xml的本机host ip改为0.0.0.0

反复检查这三项检查了俩小时,甚至还改了fs.defaultFs为其他字段,就这样尝试了n遍,直到三天后发现自己型橡再hdfs-site.xml的失败尝试切换的代理ZKFC 的配置名写错了原本是dfs.client.failover.proxy.provider.ns,自己写成了dfs.client.failover.provider.ns,恍然大漏租蔽悟原来hadoop读取配置文件的时候没有读取到zkfc的配置以为只有单个namenode,而返州不是高可用的集群,所以把ns当作域名解析了。

可以

准备工作

1.安装虚拟机 VMware Workstation

2.在虚拟机上安装linux *** 作系统 

这里在虚拟机上安装的linux *** 作系统为ubuntu10.04。其实用哪个linux系统都是可以的,比如用centos, redhat, fedora等均可,完全没有问题。

3.准备3个虚拟节点 

如果已经完成第2步,那就已经准备好了第一个虚拟节点。准备第二个和第三个虚拟节点有两种方法: 

method1:分别安装两遍linux系统,太繁琐,放弃。 此态

method2:在刚安装的第一个虚拟节点,将整个系统目录复制来形成第二个和第三个虚拟节点。 

按照hadoop集群的基本要求,其中一个是master节点,用于运行hadoop程序中的namenode,secondorynamenode和jobtracker任务。另外两个节点为slave节点,其中一个用于冗余目的局塌。slave节点用于运行hadoop程序中的datanode和tasktracker任务。所以模拟hadoop集群至少要有3个节点。

4.重命名主机名 

因为前面复制粘贴产生的两个节点和第一个节点的主机名一样。 

重命名主机名:Vim /etc/hostname 

以下是我对三个结点的ubuntu系统主机分别命名为:master, node1, node2 

 

 

安装

1.配置hosts文件 

(1)hosts文件 

用于确定每个节点的IP地址,方便后续中master节点能快速查到并访问各个节点。三个虚拟节点上均需要配置此文件。 

(2)查看和修改ip地址 

**查看**ip地址使用ipconfig命令:可以知道是192.168.1.100 

 

**更改**ip地址使用sudo ipconfig eth1: 

 

(3)hosts文件地址 

hosts文件路径为/etc/hosts,这里hosts文件配置如下: 

2.建立hadoop运行账号 

为hadoop集群专门设置一个用户组和用户。上述3个虚机结点均需要进行以下步骤来完成hadoop运行帐号的建立: 

step1:新建hadoop组:sudo groupadd hadoop 

step2:增加一个zhm用户,属于上面的hadoop组,且具有admin权限:sudo useradd -s /bin/bash -d /home/zhm -m zhm -g hadoop -G admin 

step3:设置zhm用户的登录密码:sudo passwd zhm 

step4:切换到zhm用户中:sudo zhm

3.配置ssh免密码连入 

(1)可靠性验证 

hadoop集群的各个节点之间需要进行数据访问,因此被访问的节点对于访问该节点的用户节点必须进行可靠性验证。hadoop采取是ssh的方法,通过秘钥验证及数据加密进行远程安全登录 *** 作。 

(2)ssh 

ssh通过RSA算法来产生公钥和秘钥,在数据传输过程中对数据进行加密来保障数据的可靠与安全。公钥部分为公共,网络任意节点均可以访问。私钥部分用于对数据加密。 

(3)免密码连入 

(注意下面输入下面这些命令时,一定要看清节点名和所在目录等前提条件) 

如果hadoop对每一个节点的访问都进行验证,将大大降低效率,所以可以配置SSH免密连入。 

step1:每个节点分别产生公钥和密钥(这里的命令没看懂)。 

 

产生目录在用户主目录下的.ssh目录中,id_dsa为公钥,id_dsa.pub为私钥。 

cd .ssh/ 到达此目录下 

ls 列出该目录下所有文件 

 

step2:将公钥文件复制成authorized_keys文件,这个步骤是必须的。 

cat id_dsa.pub >>authorized_keys 

 

step3 : 将step1~step2在另外两个节点重复完成。 

step4:单机回环ssh免密码登录测试 

即在单机节点上用ssh登录,检测是否成功。成功后注销退出。 

注意标红圈的指示,有以上信息表示 *** 作成功,单点回环SSH登录及注销成功:ssh localhost yes 查看登录成功信息 exit

step5:将step4在另外两个节点重复完成桐扒圆。 

**step6:**master节点通过ssh免密登录两个slave节点 

为了实现这个功能,两个slave结点的公钥文件中必须要包含主结点的公钥信息,这样master就可以顺利安全地访问这两个slave结点。 

如下过程显示了node1结点通过scp命令远程登录master结点,并复制master的公钥文件到当前的目录下,这一过程需要密码验证。接着,将master结点的公钥文件追加至authorized_keys文件中 

scp zhm@master:~/ .ssh/id_dsa.pub ./master_dsa.pub (注意,前面是node1哦!ps这个命令没看懂) 

cat master_dsa.pub >>authorized_keys 

 

step7 : 将step6在另一个slave节点中重复完成。 

**step8:**master通过ssh远程免密码连接slave测试 

ssh node1 yes(首次连接需要) exit 

 

再执行一遍ssh node1,如果没有yes出现,就表示成功了。 

 

step9 : 将step8在另一个slave节点中重复完成。 

**step10 : **master自身进行ssh免密登录测试 

 

4.下载并安装hadoop安装包 

目前我使用的版本为hadoop-0.20.2,因为《hadoop权威指南》这本书也是针对这个版本介绍的。 

解压后hadoop软件目录在/home/zhm/hadoop下

5.配置namenode,修改site文件 

(1)准备工作:安装jdk 

下载的版本:jdk1.7.0_09 

解压位置:/opt/jdk1.7.0_09 

step1:在profile文件(路径:/etc/profile)中添加如下代码: 

 

step2:执行如下代码:

step3:将step1~step2对另外两个节点重复完成。 

(2)修改core-site.xml、hdfs-site.xml、mapred-site.xml这三个文件 

site文件是hadoop的配置文件,存放在/hadoop/conf下。 

配置如下(因为并没有实际 *** 作,所以不知道他修改了哪些地方,待研究???): 

core-site.xml 

 

hdfs-site.xml 

 

mapred-site.xml 

6.配置hadoop-env.sh文件 

本文介绍在Linux HA集群中的仲裁和分区概念。

集群正常工作时,所有节点都在一个分区内(partition),分区内的所有节点将选举出一个仲裁节点,这个仲裁节点负责向其他节点发送集群控制命令。当网络发生故障时,集群中的节点发现无法和仲裁节点通信,则会在可通信的范围内重新选举一个新的仲裁节点。此时集群内可能出现多个仲裁节点,每个仲裁节点的管理范围为一个分区。

下文中将通过防火墙策略的设置模拟集群网络中通信出现异常的各种情况,如:

通过防火墙策略可以精准控制两两节点之间的连通性,使我们能更准确的了解在网络连通性发生变化对集群的影响。

在所有节点上启动防大告火墙,并添加策略对整个管理网络滚腊明192.168.56.0/24放通。

保存上述策略,之后在实验过程会使用iptables命名加入新策略模拟网络通信异常效果,如果需要恢复网络通信正常状态,直接不保存策略重启firewalld服务即可。

通过pcs status查看集群状态:

上述结果显示当前集群只有一个分区,分区内的节点包括全部3台局乱主机,仲裁节点是ha-host3,这表示集群间的通信是完好的。下图显示当前集群状态:

在ha-host1上添加以下策略:

该策略将使得ha-host1和ha-host3之间的通信中断,在所有节点上查看集群状态:

上面的结果显示,ha-host1失去和当前仲裁节点ha-host3的联系之后,和ha-host2一起组成新的分区并选举出ha-host2作为新的仲裁节点。有趣的是ha-host2和ha-host3的通信并未中断,但是他被“优先级较高的ha-host1抢走并推举为老大”,剩下ha-host3独自留在其自身所在的分区。此时ha-host3所在的分区提示了“partition WITHOUT quorum”,表示该分区中的节点数目不超过一半。

下图显示当前集群状态:

在ha-host1上再添加策略:

使其和当前的仲裁节点ha-host2的通信中断,集群状态变为:

发现ha-host2和ha-host3一起组成了新的分区,由于ha-host1所在分区节点数不足一半,无法启动资源,虚拟ip资源vip被切换到了ha-host2上。下图显示当前集群状态:

如果再把ha-host2和ha-host3直接的通信中断,此时3个节点间两两均无法通信。每个节点都是一个分区,每个分区的主机数均不过半,因此无法启动任何资源,原先运行在ha-host2上的vip也停止了。

当前集群状态如下图:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8172734.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存