hadoop是用cloudra的官方yum源安装的,服务器是CentOS6.3 64位操作系统,自己写的mapreduce执行的时候hadoop会提示以下错误:

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

网上说是这样的

Hadoop的native是在32 bit环境下编译的,在64bit环境下运行会有问题,所以需要下载hadoop的源码在64bit环境下重新编译

然后在官方文档里找到了相应的解释

链接:http://hadoop.apache.org/docs/r2.5.1/hadoop-project-dist/hadoop-common/NativeLibraries.html

The pre-built 32-bit i386-Linux native hadoop library is available as part of the hadoop distribution and is located in the lib/native directory. You can download the hadoop distribution from Hadoop Common Releases.

Be sure to install the zlib and/or gzip development packages - whichever compression codecs you want to use with your deployment.

于是,按照官档里的说明在服务器上Build出新的hadoop,把native里面的库文件替换默认的的库文件,搞定,重启hadoop所有服务,自己写的mapreduce可以用了,那么接下来问题来了……发现hdfs进入了Safemode,说有个多少多少块corrupted,然后发现重启期间有同事在使用mapreduce,怀疑是这个原因造成了数据的损坏。由于数据有备份,于是手动解除Safemode,用hadoo fsck删掉了坏掉的数据块,此时是不提示corrupted了,可是惊奇的发现,datanode没有起来!

Hadoop datanode is dead and pid file exists

紧接着,找到存在的pid file,rm之,再起!还是不行!找到datanode的日志,发现有FATAL信息!

2014-11-26 14:35:49,577 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Exception in secureMain
java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.SharedFileDescriptorFactory.createDescriptor0(Ljava/lang/String;Ljava/lang/St
ring;I)Ljava/io/FileDescriptor;
at org.apache.hadoop.io.nativeio.SharedFileDescriptorFactory.createDescriptor0(Native Method)
at org.apache.hadoop.io.nativeio.SharedFileDescriptorFactory.create(SharedFileDescriptorFactory.java:87)
at org.apache.hadoop.hdfs.server.datanode.ShortCircuitRegistry.<init>(ShortCircuitRegistry.java:169)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initDataXceiver(DataNode.java:586)
at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:773)
at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:292)
at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1893)
at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1780)
at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1827)
at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:2003)
at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:2027)
2014-11-26 14:35:49,580 INFO org.apache.hadoop.util.ExitUtil: Exiting with status 1
2014-11-26 14:35:49,582 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down DataNode at carweb94/10.14.1.94

更改hadoop native库文件后datanode故障的更多相关文章

  1. 很详细、很移动的Linux makefile教程:介绍,总述,书写规则,书写命令,使用变量,使用条件推断,使用函数,Make 的运行,隐含规则 使用make更新函数库文件 后序

    很详细.很移动的Linux makefile 教程 内容如下: Makefile 介绍 Makefile 总述 书写规则 书写命令 使用变量 使用条件推断 使用函数 make 的运行 隐含规则 使用m ...

  2. spark使用hadoop native库

    默认情况下,hadoop官方发布的二进制包是不包含native库的,native库是用C++实现的,用于进行一些CPU密集型计算,如压缩.比如apache kylin在进行预计算时为了减少预计算的数据 ...

  3. Hadoop支持的压缩格式对比和应用场景以及Hadoop native库

    对于文件的存储.传输.磁盘IO读取等操作在使用Hadoop生态圈的存储系统时是非常常见的,而文件的大小等直接影响了这些操作的速度以及对磁盘空间的消耗. 此时,一种常用的方式就是对文件进行压缩.但文件被 ...

  4. Linux 库文件详解

    转自: http://www.cppblog.com/deane/articles/165216.html http://blog.sciencenet.cn/blog-1225851-904348. ...

  5. hadoop配置及无法移动文件到hdfs故障解析

    首先博主用的64位ubuntu,hadoop官方只提供32位版本,这样的话启动本地库无法兼容,需要自己编译为64位版本,或下载别人编译好的64位版本. 下载好需要在etc/hadoop目录下改动以下几 ...

  6. hadoop 2.2.0的datanode中存储block的多个文件夹的负载均衡问题

    hadoop的分布式文件系统HDFS的存储方式是,将数据分成block,分布式存储在整个hadoop集群的datanode中,每个block默认的大小是64M,这些block文件的具体存储位置是在ha ...

  7. 解决hadoop启动后datanode无法启动问题

    hadoop部署完成后datanode无法启动问题解决 1.检查是否有遗留的hadoop进程还在运行,如果有的话,先stop-all.sh或kill杀掉: 2.在master节点上,删除/tmp/ha ...

  8. 修改hadoop配饰文件文件后导致hive无法找到原有的dfs文件

    修改了hadoop/etc/hadoop/core-site.xml文件中的 <property> <name>fs.defaultFS</name> <va ...

  9. hadoop对于压缩文件的支持及算法优缺点

    hadoop对于压缩文件的支持及算法优缺点   hadoop对于压缩格式的是透明识别,我们的MapReduce任务的执行是透明的,hadoop能够自动为我们 将压缩的文件解压,而不用我们去关心. 如果 ...

随机推荐

  1. 百度MIP(百度版的google AMP)了解一下?

    官网:https://www.mipengine.org/ 视频教学:http://bit.baidu.com/subject/datalist/sid/10/cid/22.html github:h ...

  2. js ~取非运算符的妙用,将-1转为0(或假值)

    典型的运用场景就是indexOf

  3. 如何查看Linux操作系统的位数

    如何查看Linux操作系统的位数 1.编程实现: 在程序中返回sizeof(int)的值,返回的结果是操作系统的字节数.若返回4则是32位操作系统,返回8即是64位. 2.2.getconf命令: g ...

  4. J2EE学术交流感悟——分层

        学术交流进行了一周,是关于J2EE的学术报告. 目的是让我们在学习的时候对"所学知识"有一个宏观的认识. 開始是以为环绕"J2EE"进行解说,怕自己没有 ...

  5. Qt 积累

    总结(-) 1> 定时器的使用 QTimer *timer = new QTimer(this);  connect(timer, SIGNAL(timeout()), this, SLOT(u ...

  6. 简单实例,说明自动生成Makefile的详细过程

    为了编译一个简单的源文件main.c,需要自动生成一个makefile,以下是步骤: 第一步:----------在/root/project/main目录下创建一个文件main.c,其内容如下:-- ...

  7. json对象与json字符串互转方法

    jQuery插件支持的转换方式: 复制代码 代码如下: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象 ...

  8. 03、同事分享课程的笔记 —《Android应用低功耗设计》

    这是安卓组的同事一个月前分享的一节课程,听课时写了一下笔记,之前是写在本子上的,感觉内容挺不错 的,就保存在博客了吧,方便回看. 他曾经在就职于英特尔公司,是与芯片设计相关的,这课程标题虽然是与安卓相 ...

  9. 思科ACL不连续通配符掩码的计算

    access-list 120 permit ip 10.0.0.0 0.0.0.191 any     这条ACL看似简单,却又复杂,因为正常我们见到的通配符掩码都是诸如0.0.0.255(255. ...

  10. FreeRtos——移植

    现在准备的简单程序LED灯的工程目录中增加freertos文件夹: 在 source目录下的portable目录下只留下下面的文件夹: 为什么呢? 把对应文件移植在工程中之后,添加头文件路径如下图: ...