java,net.UnknownHostException:
环境:
CDH
管理平台:
Cloudera Manager
托管平台:
ACRM
节点简介:
NameNode number:2(一个主节点,一个HA的备用节点)
DataNoder number:3
集群安装服务:
HDFS, hive,Impala,Livy,Solr, Spark,Sqoop, YARN,Zookeeper
元数据存储数据库:
mysql
问题描述:
在HA的环境下,主节点死掉了,按照配置,应该是自动切换为备用的从节点,但是系统没有切换。出于效率的需求,直接去掉了HA的配置。使系统能够正常运行,关于HA的配置没有生效的原因在接下来的工作中需要着手解决,当前优先级最高的就是让系统能够正常的跑动数据。整个系统的配置如下图:
在cdh中取消HA的配置之后,关于取消HA的配置,可以自行google.
重点是在HUE中取消了HA配置之后,因为HIVE的元数据配置在mysql数据库中,这部分配置通过HUE没办法更改。
其实我自己在做这部分的时候想过,为什么HUE中没有更改HIVE存储元数据配置的功能。这样的功能是很大一个bug。HUE的开发者不可能不知道。可能是我没有找到合适的处理方式。这部分我会在以后的篇幅中给出答案。
继续……
直接干掉HA之后,另外将其他的服务的主节点在HUE中稍微调整,保证页面中不报错。然后启动集群,运行环境。会出现如下AILED: SemanticException Unable to determine if hdfs://cfp-nn/user/hive/warehouse/peacebird.db/st_pause_store_item is encrypted: java.lang.IllegalArgumentException: Wrong FS: hdfs://cfp-nn/user/hive/warehouse/peacebird.db/st_pause_store_item, expected: hdfs://cfp-acrm-cdh-0:8020
这个异常是hosts文件中没有找到nameserviec的节点信息。处理办法。在hosts中将主节点用nameservice映射添加到hosts中,所有的节点都需要添加。
另外需要更改mysql数据库中存放hive元数据的信息,hive表中的元数据存储信息配置在在DBS和SDS两个table中.使用下面指令(cfp-nn为Cloudera manager/conf/hdfs-site,xml的nameservice,这里为了和系统中的截图报错信息一直,没有做更改):
use metabase(database取决于hive存放数据的位置,一般情况下为metabase或者hive)
pdate DBS set DB_LOCATION_URI=REPLACE (DB_LOCATION_URI,’cfp-nn’,’cfp-acrm-cdh-0’)
update SDS set LOCATION=REPLACE (LOCATION,’cfp-nn’,’cfp-acrm-cdh-0’);
注:
如果只是更改hosts中文件信息会出现如下的报错信息: