环境:centos6.2 Hadoop2.2.0 hive0.12 hbase0.94
1>hadoop配好之后,跑任务老失败,yarn失败,报out of memory错误,然后怎么调整内存大小都不行,后来发现是can’t create new thread。
解决:在vi /etc/security/limits.conf 添加
hadoop - nofile 65535
hadoop - nproc 65535
2>yarn运行错误:mapreduce.shuffle set in yarn.nodemanager.aux-services is invalid
yarn.nodemanager.aux-services.mapreduce_shuffle.class部分的错误
解决:yarn.site.xml参数配置的问题
http://blog.csdn.net/bamuta/article/details/12995139
改成下面的配置就好了:
<property>
<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
3> hbase0.96和hive0.12整合的问题
一开始用hadoop2.2.0 + hbase 0.96 + hive 0.12 ,基本全部都配好了。只有在hive中查询hbase的表出错。以直报如下错误:
1 | java.io.IOException: <span style="font-size: 15px;">java.lang.ClassCastException:</span> org.apache.hadoop.hbase.client.Result cannot be cast to org.apache.hadoop.io.Writabl |
后来发现hbase0.96和hive0.12不兼容,hive-hbase-handle-0.12.0.jar不兼容hbase0.96,hive0.12还停留在hadoop1。于是乎采用hbase0.94测试。
鉴于hbase0.94不兼容hadoop2,大豪哥在网上找到一篇文章http://yanbohappy.sinaapp.com/?p=192
在文中讲到用mvn clean package assembly:assembly -DskipTests -Dhadoop.profile=2.0 重编hbase-0.94.2.tar.gz,
1,将hbase-0.94.0.jar复制到每台hadoop的/hadoop_home/share/hadoop/common/lib/下重启hadoop,
2,将hbase-0.94.0.jar拷贝到hive/lib下,hbase-site.xml拷贝到hive/conf/下
3,将hive-hbase-handle-0.12.0.jar拷贝到hbase/lib下。
至于hbase整合hive的其他配置和hadoop1的时候一样。
http://www.open-open.com/lib/view/open1328413245124.html
4>hadoop0.20.2 搬迁到hadoop2.2.0
将老集群的所有ip,服务器名映射到新集群的/etc/hosts 中
让后用
./Hadoop distcp hftp://irt2:50070/user/hive/warehouse/webdata/ hdfs://irsadmin60:9000/user/hive/warehouse/webdata/
如果失败使用更新:./hadoop distcp –update hftp://irt2:50070/user/hive/warehouse/webdata/ hdfs://irsadmin60:9000/user/hive/warehouse/webdata/
5>最近导数据有时候少数据,查hadoop任务发现,map有failed,报如下错误:
Container launch failed
for
container_1385017085286_4943_01_000053 : org.apache.hadoop.yarn.exceptions.YarnException: Unauthorized request to start container.<br> This token is expired. current
time
is 1386900106527 found 138689999122
datanode与namenode之间未设置时间同步,所以引起该异常。
解决方案:多个datanode与namenode进行时间同步。
时间同步:
在每台服务器的 /etc/crontab 中加入一行:
00 5 * * * root ntpdate cn.pool.ntp.org && hwclock -w