Hadoop集群常见的错误
2018-01-10 18:17
295 查看
时间不同步引起的错误
运行MapReduce时出现这种错误,是由于集群中没有设置时间同步(设置时间同步参照http://download.csdn.net/download/cdl2008sky/9381519)15/04/21 15:30:08 INFO mapreduce.Job: Task Id : attempt_1429584224671_0003_m_000007_1, Status : FAILED Container launch failed for container_1429584224671_0003_01_000017 : org.apache.hadoop.yarn.exceptions.YarnException: Unauthorized request to start container. This token is expired. current time is 1429630321325 found 1429602008427 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) at org.apache.hadoop.yarn.api.records.impl.pb.SerializedExceptionPBImpl.instantiateException(SerializedExceptionPBImpl.java:168) at org.apache.hadoop.yarn.api.records.impl.pb.SerializedExceptionPBImpl.deSerialize(SerializedExceptionPBImpl.java:106) at org.apache.hadoop.mapreduce.v2.app.launcher.ContainerLauncherImpl$Container.launch(ContainerLauncherImpl.java:155) at org.apache.hadoop.mapreduce.v2.app.launcher.ContainerLauncherImpl$EventProcessor.run(ContainerLauncherImpl.java:369) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745)
内存不够引起的错误
Container [pid=7830,containerID=container_1397098636321_27548_01_000297] is running beyond physical memory limits. Current usage: 1.4 GB of 1 GB physical memory used; 2.7 GB of 4.2 GB virtual memory used. Killing container.
原因:
该错误是YARN的虚拟内存计算方式导致,上例中用户程序申请的内存为1Gb,YARN根据此值乘以一个比例(默认为2.1)得出申请的虚拟内存的值,当YARN计算的用户程序所需虚拟内存值大于计算出来的值时,就会报出以上错。默认不设置的情况下,ResourceManager会给每个map、reduce任务分配1G大小的物理内存
解决:
设置mapred-site.xml:
mapreduce.map.memory.mb: 4096
mapreduce.reduce.memory.mb: 8192
Map容器和Reduce容器的内存大小。上面的数字是根据你机器的内存大小来设置的。reduce一般要比map大。
同时设置JVM的最大内存值
mapreduce.map.java.opts: -Xmx3072m
mapreduce.reduce.java.opts: -Xmx6144m
Map和Reduce任务所允许的最大内存。分别比上面两个数字要小。因为还得分配给yarn内存处理。
<property> <name>mapreduce.map.memory.mb</name> <value>4096</value> </property> <property> <name>mapreduce.map.java.opts</name> <value>-Xmx4096M</value> </property> <property> <name>mapreduce.reduce.memory.mb</name> <value>6144</value> </property> <property> <name>mapreduce.reduce.java.opts</name> <value>-Xmx6144M</value> </property>
DFS访问权限问题
main" org.apache.hadoop.security.AccessControlException: Permission denied 在 hdfs-site.xml 总添加参数: <property> <name>dfs.permissions</name> <value>false</value> </property> </configuration>
线程数量不够问题
org.apache.hadoop.hdfs.DFSClient: DataStreamer Exception java.lang.OutOfMemoryError: unable to create new native thread
程序里面打开的线程太多,系统一般默认是1024 (用ulimit -a可以看到)。
一般修改一般来说,修改ulimit的数值,只需要修改/etc/security/limits.conf即可,但是这个参数需要修改/etc/security/limits.d/90-nproc.conf
[root@datanode5 hadoop]# more /etc/security/limits.d/90-nproc.conf
# Default limit for number of user’s processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.
* soft nproc 65535
* hard nproc 65535
说明:
* 代表针对所有用户
noproc 是代表最大进程数
nameNode格式化问题
ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in:每次namenode format会重新创建一个namenodeId,而dfs.data.dir参数配置的目录中包含的是上次format创建的id,和dfs.name.dir参数配置的目录中的id不一致。namenode format清空了namenode下的数据,但是没有清空datanode下的数据,导致启动时失败,所要做的就是每次fotmat前,清空dfs.data.dir参数配置的目录。
再执行format命令
hadoop namenode -format
安全模式导致的错误
org.apache.hadoop.dfs.SafeModeException: Cannot delete …, Name node is in safe mode当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。
Shell 命令
hadoop dfsadmin -safemode leave
参数value说明如下:
Enter : 进入安全模式
Leave :强制NameNode离开安全模式
Get : 返回安全模式是否开启的信息
Wait:等待,一直到安全模式结束。
NameNode和DataNode的namespaceID不一致
方法有两种:第一种,参考1.5,删除DataNode的所有资料(及将集群中每个datanode的/hdfs/data/current中的VERSION删掉,然后执行hadoopnamenode-format重启集群。
第二种,改每个DataNode的namespaceID(位于/hdfs/data/current/VERSION文件中使其一致。
相关文章推荐
- hadoop集群搭建的常见错误
- Hadoop 集群常见错误
- Hadoop 集群常见错误
- Hadoop 集群常见错误
- hadoop-HA集群搭建,启动DataNode,检测启动状态,执行HDFS命令,启动YARN,HDFS权限配置,C++客户端编程,常见错误
- Hadoop-2.8.0集群搭建、hadoop源码编译和安装、host配置、ssh免密登录、hadoop配置文件中的参数配置参数总结、hadoop集群测试,安装过程中的常见错误
- Hadoop 集群常见错误
- hadoop集群常见错误
- hadoop 集群常见错误解决办法
- hadoop 集群常见错误解决办法
- Hadoop集群Eclipse开发常见错误积累
- Hadoop集群Eclipse开发常见错误积累
- Hadoop集群搭建的常见错误
- 解决hadoop 集群启动常见错误办法
- hadoop集群搭建的常见错误
- Hadoop常见错误及解决办法汇总
- Hadoop常见错误总结
- Hadoop常见错误及处理方法
- hadoop常见错误问题及解决方法(2)
- hadoop常见错误及解决办法(三)