您的位置:首页 > 运维架构

测试CDH hadoop遇到的问题

2017-03-31 19:10 309 查看

背景

由于项目需要,选型测试CDH版本的hadoop和现有apache版本的hadoop的差异,如下先罗列了目前的问题

1.目前的问题

运维成本较高,当前集群的各项配置需要定期人肉检查

之前运维人员做过的代码修改没有很好的文档传承

没有资源的权限控制

多任务并发时存在较严重的资源抢占问题,没有隔离机制

2.测试的目标

运维管理的便利性

管理系统本省的稳定性

功能要覆盖当前版本

性能上最好能比当前版本更好,至少不能更差

迁移新版本的可操作性,对现有任务的兼容性

3.初步讨论的版本

可选的有CDH和HDP,基于经验来看,HDP的管理系统ambari很不稳定,所以目前主要考虑CDH


测试过程遇到的问题

由于我没有全程参与CDH的安装过程,主要是负责将现有集群的任务迁移到搭建CDH,测试迁移是否成功。在迁移过程中遇到了如下的问题。


1. distcp失败

报错信息:ERROR tools.DistCp: Exception encountered  java.lang.IllegalArgumentException: java.net.UnknownHostException
解决方案:需要在集群的hdfs-site.xml中进行配置,才可以在两个集群之间拷贝数据,配置如下
cdh的nn名称是A,现有的原生态集群nn名称是B,在cdh的hdfs-site.xml中配置


<property>
<name>dfs.nameservices</name>
<value>A,B</value>
</property>
<!--配置B访问开始 -->
<property>
<name>dfs.ha.namenodes.b</name>
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.b.nn1</name>
<value>host1:port1</value>
</property>
<property>
<name>dfs.namenode.http-address.b.nn1</name>
<value>host1:port2</value>
</property>
<property>
<name>dfs.namenode.servicerpc-address.b.nn1</name>
<value>host1:port3</value>
</property>
<property>
<name>dfs.namenode.rpc-address.b.nn2</name>
<value>host2:port1</value>
</property>
<property>
<name>dfs.namenode.http-address.b.nn2</name>
<value>host2:port2</value>
</property>
<property>
<name>dfs.namenode.servicerpc-address.b.nn2</name>
<value>host2:port3</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.b</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!--配置B访问结束 -->


添加上述的配置后,还是不可以distcp,后来发现是两个集群的hadoop版本不一致导致的,增加如下的配置即可

<property>
<name>dfs.checksum.type</name>
<value>CRC32</value>
</property>


至此成功解决

2. 测试的CDH集群不支持lzo压缩

问题描述:
创建表的时候不能使用lzo压缩,表结构如下:


create table testlzo(
id int comment '',
name string comment ''
)
row format delimited fields terminated by '\001'
stored as inputformat 'com.hadoop.mapred.deprecatedlzotextinputformat'
outputformat 'org.apache.hadoop.hive.ql.io.hiveignorekeytextoutputformat'


原因和解决方案:
搭建的cdh是5.0,应该安装对应的lzo,先秦装错了版本,后来重新装了对应的lzo包,结果又写错了配置,最后一一排查后能够成功支持lzo压缩。
在CDH界面配置
![这里写图片描述](http://img.blog.csdn.net/20170331190346997?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVhbnJ1aXFp/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
然后报错:找不到类com.hadoop.mapred.deprecatedlzotextinputformat。重启集群还是不生效,后来在网上查找CDH支持的lzo版本,如下图:
![这里写图片描述](http://img.blog.csdn.net/20170331190504530?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVhbnJ1aXFp/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
此次测试中安装的是CDH5,但是我校对了一下,发现安装的lzo是CDH4的,先前安装配置的路径是:http://archive.cloudera.com/gplextras5/parcels/latest;现在配置的路径是:http://archive.cloudera.com/gplextras5/parcels/5.9.0/。
重新安装之后仍然不能使用lzo压缩,然后我们怀疑使用的hive客户端是否连接安装的CDH集群,后来验证发现不是这个问题。接着检查YARN的配置
![这里写图片描述](http://img.blog.csdn.net/20170331190716800?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVhbnJ1aXFp/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
问题终于显现出来了,两个配置不一样,修改之后,重启集群就可以了。在CDH管理界面修改或者手动修改mapred-site.xml文件
修改后:![haha](http://img.blog.csdn.net/20170331190847692?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVhbnJ1aXFp/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
修改前:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  CDH UnknownHos lzo