首页 > 其他分享 >从主机名谈真实Hadoop集群与虚拟机集群管理

从主机名谈真实Hadoop集群与虚拟机集群管理

时间:2022-10-19 12:37:21浏览次数:84  
标签:机器 虚拟机 Hadoop hadoop 192.168 主机名 集群

由于本人不定期会整理相关博文,会对相应内容作出完善。因此强烈建议在原始出处查看此文。


随着大数据的普及,Hadoop应用也越来越广泛,然而不断扩展的节点数量对运维管理也提出了更高要求。本文围绕对主机名的配置这一主题来探讨集群的管理,旨在探讨一种可行的Hadoop集群管理方法。


1.主机命名,有可为有可不为

为什么要在开篇说这个呢?这来源于做实验时遇到的第一个问题,为了避免有人走同样的弯路,先写下来。我的实验环境准备了4台虚拟机:

IP地址

机器名(hostname)

作用

192.168.1.101

hadoop_1

NameNode

192.168.1.102

hadoop_2

SecondaryNameNode

192.168.1.103

hadoop_3

DataNode-1

192.168.1.104

hadoop_4

DataNode-2


当我对NameNode进行格式化后,执行start-all,发现java进程没有启动成功(jps发现无任何进程),于是去查看日志,得到了下面的异常信息:

ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: java.lang.IllegalArgumentException: Does not contain a valid host:port authority: hdfs://hadoop_1:9000


后来搜索这个问题,原来不止我一个人遇到,就是因为主机名中不能含有下划线“_”,后来我尝试了将hostname中的下划线改成点“.”,发现问题依旧。也就是说,

Hadoop集群中的机器名不仅不能包含下划线,点也不可以。(关于这个问题,我看到了一篇文章:

​http://blog.iamzsx.me/show.html?id=54001​​,文中提到:“

虽然linux支持一些特殊字符,但java里面并不支持”,至于他后面说的“点”可以,我这边实验的是不可以的)

常用的分隔符都不行,我们如何管理这些机器呢?要知道,这只是一个实验环境。到了真正的生产环境,也许你将会面对几十上百,甚至上千节点。后来没办法,尝试使用“减号”来分隔,将所有的机器名都换成如下形式:

IP地址

机器名(hostname)

192.168.1.101

hadoop-1

192.168.1.102

hadoop-2

192.168.1.103

hadoop-3

192.168.1.104

hadoop-4


此时运行start-all.sh后终于正常了:

[hduser@hadoop-1 bin]$ jps
1292 NameNode
1498 JobTracker
1438 SecondaryNameNode
1587 Jps


2.茫茫机海,我有GPS

你曾亲自参观过机房吗?有没有被一排排一层层的机器所震撼?让我们先脑补一下机房的样子,然后对应下面的概念:

集群:针对不同的任务、不同的机房区域,我们可以把所属于同一类的一大组机器作为集群,他们之间是要相互紧密协作的,因此我们把这些机器编组。简称g,group

机柜/机架:在机房中,我们能直接看到的一个个像大衣柜一样的东西就是机柜了,简称:c或r,cabinet / rack

机器位/筐位:机柜的尺寸都符合一定的工业标准,像楼层划分那样,由下至上堆叠楼层位置。至于框位这个称呼是针对刀片服务器来说的,一个刀片框中可以容纳多台刀片服务器,在密集计算中应用比较多。简称:f,floor / frame

槽位:这个也是针对刀片式服务器,在同一个刀片筐中可以放置若干个刀片服务器,每一个放置的位置称之为槽位。简称s,slot

根据上述概念的组合,我们就可以在一个较大规模的集群中很方便地找到一台机器的位置了。Hadoop集群也是从算法上保证了优先选择同一机架中的机器协同工作,这样减少不同机架间的网络IO,提高效率。而网络规划中必不可少的就是对机器命名的管理。我们要从机器名中就能判断出它所在的位置。无论是性能优化的角度,还是从硬件维护的角度来说都是有益的。

因此我们不妨对Hadoop集群中的机器进行如下命名:

hadoop-g-[集群编号]-r-[机架编号]-f-[筐位编号]-s-[槽位编号]

例如:

hadoop-g-0-r-0-f-0-s-0

这就表示这台机器属于0号集群,在0号机架上0号筐位的0槽位上。是不是很容易定位?


3.Hadoop集群中真的要去改hosts吗?

在实验环境中,我们使用“修改/etc/hosts文件”的方式来手工绑定机器名和ip地址。这样做的缺点是一旦一台机器做出改动之后,要对群集中所有机器的hosts文件进行同步更新。这对于大型集群来说简直是一场噩梦。我们可以使用专门的DNS服务器来管理这些机器。只要所有的节点使用相同的DNS服务器,在主机更改时只需要修改DNS服务器即可,而且DNS也可以实现高可用。

在实体机上通过开启多个虚拟机来搭建真实的Hadoop集群是非常节省成本的学习方法。然而无论是网上的资料还是培训老师那里,关于IP地址与主机名映射的解决办法都是逐一修改hosts文件。有没有好办法呢?其实,只要修改实体机的hosts文件即可。

以vmware workstation为例,详细步骤如下(注意红框部分):

首先进入虚拟网络适配器:

从主机名谈真实Hadoop集群与虚拟机集群管理_经验

把虚拟机使用的网卡调整成如下配置,其实Host-Only应该也可以,只是为了方便虚拟机上网,才做成的NAT:

从主机名谈真实Hadoop集群与虚拟机集群管理_hadoop_02

这里把子网配置成192.168.1.0/24(192.168.1.XXX网段,掩码255.255.255.0),然后点右边中间的“NAT设置”

从主机名谈真实Hadoop集群与虚拟机集群管理_配置_03

得知内网的网关地址是192.168.1.2。接下来就逐一配置虚拟机IP地址

虚拟机的网络适配器选择为:

从主机名谈真实Hadoop集群与虚拟机集群管理_运维_04

再以CentOS 6为例看下网络适配器设置:

DEVICE=eth0
HWADDR=00:0c:29:40:13:75
TYPE=Ethernet
UUID=43370169-e5ef-483d-b24e-4be77ef1cffea
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.1.11
GATEWAY=192.168.1.2
NETMASK=255.255.255.0

DNS设置:

search localdomain
nameserver 192.168.1.2

把所有机器的IP配置好后我们进行规划和命名。最后只改动宿主机的hosts文件:

192.168.1.11    zookeeper1
192.168.1.12 zookeeper2
192.168.1.13 zookeeper3

192.168.1.21 namenode1
192.168.1.22 namenode2

192.168.1.31 datanode1
192.168.1.32 datanode2
192.168.1.33 datanode3

随便找台机器互ping:

[root@datanode3 ~]# ping zookeeper1
PING zookeeper1.localdomain (192.168.1.11) 56(84) bytes of data.
64 bytes from 192.168.1.11: icmp_seq=1 ttl=64 time=3.17 ms
64 bytes from 192.168.1.11: icmp_seq=2 ttl=64 time=0.264 ms
64 bytes from 192.168.1.11: icmp_seq=3 ttl=64 time=0.237 ms

都是通的。至此,配置完毕。


4写在最后:

我们往往将hosts文件中,IP对应的主机名称和/etc/sysconfig/network的HOSTNAME属性设置成一致的,虽然理论上可以写成不一样的,但是在某些时候配置成不一样的会带来额外的麻烦。感兴趣的朋友可以参阅这篇文章,带你看一个因为配置得不一样而引发的麻烦

标签:机器,虚拟机,Hadoop,hadoop,192.168,主机名,集群
From: https://blog.51cto.com/u_3932467/5769582

相关文章

  • 【服务器虚拟化数据恢复】误还原ESXI虚拟机快照导致数据被删除的数据恢复案例
    服务器虚拟化数据恢复环境:故障虚拟机是由物理机迁移到ESXI,迁移完成后做了一个快照。故障虚拟机上运行的是一个sqlserver数据库,记录了近5年的数据。ESXI上有二十多台虚拟......
  • 深入剖析Redis系列: Redis集群模式搭建与原理详解
    前言在Redis3.0之前,使用 哨兵(sentinel)机制来监控各个节点之间的状态。RedisCluster是Redis的 分布式解决方案,在3.0版本正式推出,有效地解决了Redis在 分布式 ......
  • DSC集群搭建
    一、集群介绍  DMDSC集群是一个多实例、单数据库的系统。多个数据库实例可以同时访问、修改同一个数据库的数据。用户可以登录集群中的任意一个数据库实例,获得完整的数......
  • 干货 | Elasticsearch 冷热集群架构实战
    Elasticsearch最少必要知识实战教程直播回放0、题记Elasticsearch实战数据量级少的时候,单节点就能玩的很6,但是随着数据量的增长,多节点分布式横向扩展集群是大势所趋。之前......
  • 干货 | Elasitcsearch7.X集群、索引备份与恢复实战
    Elasticsearch最少必要知识实战教程直播回放1、问题引出ES中文社区中,有如下问题:问题1:存储数据,data目录从一个机器直接移到一台新的机器是否可以直接使用?问题2:es升级时,data......
  • 探究 | Elasticsearch集群规模和容量规划的底层逻辑
    Elasticsearch最少必要知识实战教程直播回放0、引言实战中经常遇到的问题:问题1:请问下大家是如何评估集群的规模?比如数据量达到百万,千万,亿万,分别需要什么级别的集群,这要......
  • 虚拟机远程链接工具xshell
    虚拟机远程链接工具xshell虚拟机关键配置名词解释#虚拟⽹络编辑器说明桥接模式#可以访问互联⽹!!! 配置的地址信息和物理主机⽹段地址信息相同,容易造成地址冲突N......
  • Hadoop 集群配置
    参考官网整理可能的配置:https://hadoop.apache.org/docs/r2.9.2/hadoop-project-dist/hadoop-common/ClusterSetup.htmletc/hadoop/core-site.xml<configuration><pro......
  • K8S集群部署
     ###############  K8S集群部署 ##################版本kubelet-1.18.0kubeadm-1.18.0kubectl-1.18.0docker-18.06.1calico-v3.20###机器172.31.16.2k......
  • 神器软件:虚拟机软件安装与使用
    问什么是虚拟机?答虚拟机是一个软件。在自己电脑上通过虚拟机软件,可以模拟出新的电脑,并为其安装操作系统。问虚拟机有什么用?答使用电脑时,对一些软件不放心,担心其损坏电脑。或......