Hadoop Pipes Exception: Illegal text protocol command

对于Hadoop pipes 出现这样的错误,基本上编译代码依赖的.so和.a 版本不匹配

网上也没有给出更多信息,我的同事最近回复了解决办法,可以参考

https://groups.google.com/a/cloudera.org/forum/#!msg/cdh-user/j0dpYPDx3_A/S1rotrWGSf0J

如果不能翻墙,摘录如下

 
I met with the same issue, and my way to work around it is to apply the attached patch, regenerate the native libraries(libhadooppipes.a, libhadooputils.a, etc.) and recompile user program with the new libraries. Notice that this is only for running against MR1, and don't mess up with those against Yarn. Hope this also works in your case. :-)
 
p.s. I used "mvn -Dskiptests -Pdist,native -Dtar clean package" cmd to generate the tarball and got the native libs under "lib/native" dir
Index: hadoop-tools/hadoop-pipes/src/main/native/pipes/impl/HadoopPipes.cc
===================================================================
--- hadoop-tools/hadoop-pipes/src/main/native/pipes/impl/HadoopPipes.cc (revision )
+++ hadoop-tools/hadoop-pipes/src/main/native/pipes/impl/HadoopPipes.cc (working copy)
@@ -, +, @@
#include <stdlib.h>
#include <string.h>
#include <strings.h>
-#include <unistd.h>
#include <sys/socket.h>
#include <pthread.h>
#include <iostream>
@@ -, +, @@
}
if (reducer != NULL) {
int64_t spillSize = ;
- if (jobConf->hasKey("mapreduce.task.io.sort.mb")) {
- spillSize = jobConf->getInt("mapreduce.task.io.sort.mb");
+ if (jobConf->hasKey("io.sort.mb")) {
+ spillSize = jobConf->getInt("io.sort.mb");
}
writer = new CombineRunner(spillSize * * , this, reducer,
uplink, partitioner, numReduces);
@@ -, +, @@
*/
void* ping(void* ptr) {
TaskContextImpl* context = (TaskContextImpl*) ptr;
- char* portStr = getenv("mapreduce.pipes.command.port");
+ char* portStr = getenv("hadoop.pipes.command.port");
int MAX_RETRIES = ;
int remaining_retries = MAX_RETRIES;
while (!context->isDone()) {
@@ -, +, @@
try {
TaskContextImpl* context = new TaskContextImpl(factory);
Protocol* connection;
- char* portStr = getenv("mapreduce.pipes.command.port");
+ char* portStr = getenv("hadoop.pipes.command.port");
int sock = -;
FILE* stream = NULL;
FILE* outStream = NULL;
@@ -, +, @@
HADOOP_ASSERT(setbuf == , string("problem with setvbuf for outStream: ")
+ strerror(errno));
connection = new BinaryProtocol(stream, context, outStream);
- } else if (getenv("mapreduce.pipes.commandfile")) {
- char* filename = getenv("mapreduce.pipes.commandfile");
+ } else if (getenv("hadoop.pipes.command.file")) {
+ char* filename = getenv("hadoop.pipes.command.file");
string outFilename = filename;
outFilename += ".out";
stream = fopen(filename, "r");

Hadoop Pipes Exception: Illegal text protocol command的更多相关文章

  1. 在Hadoop 2.3上运行C++程序各种疑难杂症(Hadoop Pipes选择、错误集锦、Hadoop2.3编译等)

    首记 感觉Hadoop是一个坑,打着大数据最佳解决方案的旗帜到处坑害良民.记得以前看过一篇文章,说1TB以下的数据就不要用Hadoop了,体现不 出太大的优势,有时候反而会成为累赘.因此Hadoop的 ...

  2. Hadoop Pipes

    [Hadoop Pipes] 1.MapContext的getInputSplit()可以用于获取当前mapper所对象的文件路经,也就是Pipes中,没有InputSplit接口/对象. 2.在Pi ...

  3. jsp报错问题之“使用jstl的c标签choose报错Illegal text inside "c:choose" tag问题”

    一.报错 [bessky_it][ERROR][2022-03-25 17:19:07] | PLATFORM | ):[c]鍜孾/com.bessky.pss.portal/purchase/sam ...

  4. MySQL之Text Protocol

    1)[01]COM_QUIT 告诉服务器,客户端想要关闭连接 返回:或者关闭一个连接或者一个OK_Packet 有效负载: 1 [01]COM_QUIT 字段: command(1)--0x01 CO ...

  5. windows下eclipse远程连接hadoop错误“Exception in thread"main"java.io.IOException: Call to Master.Hadoop/172.20.145.22:9000 failed ”

    在VMware虚拟机下搭建了hadoop集群,ubuntu-12.04,一台master,三台slave.hadoop-0.20.2版本.在 master机器上利用eclipse-3.3连接hadoo ...

  6. Hadoop错误1(Text类型与String类型)

    在此类的博客中,博主主要记录的是在Hadoop实践过程中遇到的一些错误,先上一个代码 protected void map(Object key,Text value, Context context ...

  7. hadoop pipes wordcount compile

    http://devel.cs.stolaf.edu/projects/bw/wiki.real/index.php/Hadoop_Reference,_January_2011 http://guo ...

  8. hadoop下的Pipes(用C++进行hadoop程序开发)

    说明:这篇博客来自我的CSDN博客:http://blog.csdn.net/lxxgreat/article/details/7755369 经过一上午的努力,终于以伪分布式模式运行了C++版的Ma ...

  9. Hadoop应用开发实战(flume应用开发、搜索引擎算法、Pipes、集群、PageRank算法)

    Hadoop是2013年最热门的技术之一,通过北风网robby老师<深入浅出Hadoop实战开发>.<Hadoop应用开发实战>两套课程的学习,普通Java开发人员可以在最快的 ...

随机推荐

  1. Android软件安全开发实践(下)

    Android开发是当前最火的话题之一,但很少有人讨论这个领域的安全问题.本系列将分两期,探讨Android开发中常见的安全隐患和解决方案.第一期将从数据存储.网络通信.密码和认证策略这三个角度,带你 ...

  2. TWaver Flex开发示例及license下载

    做电信项目的朋友一定知道TWaver,而Flex版具有很好的跨平台性,很适合做B/S模式的应用. Flex版的在线DEMO:http://twaver.servasoft.com/demo/twave ...

  3. 日暮·第一章·决斗

    日暮 第一章 决斗   泉州府,位于帝国的东南沿海,在数百年前,这里已是帝国最大的通商口岸之一,其一城之繁荣喧哗足以与异邦小国的都城相媲美,无数的人曾经来到这里,追逐财富,梦想,女人以及所有他们认为可 ...

  4. shell编程总结

    一.学习 shell脚本之前的基础知识 [linux shell中的特殊符号] 1. * :代表零个或多个字符或数字. test后面可以没有任何字符,也可以有多个字符,总之有或没有都能匹配出来. 2. ...

  5. volley中图片加载

    volley图片加载有三种方式: 记得:Volley中已经实现了磁盘缓存了,查看源码得知通过 context.getCacheDir()获取到了 /data/data/<application ...

  6. ARM Linux启动代码分析

    前言 在学习.分析之前首先要弄明白一个问题:为什么要分析启动代码? 因为启动代码绝大部分都是用汇编语言写的,对于没学过或者不熟悉汇编语言的同学确实有一定难度,但是如果你想真正深入地学习Linux,那么 ...

  7. Spark源码系列(六)Shuffle的过程解析

    Spark大会上,所有的演讲嘉宾都认为shuffle是最影响性能的地方,但是又无可奈何.之前去百度面试hadoop的时候,也被问到了这个问题,直接回答了不知道. 这篇文章主要是沿着下面几个问题来开展: ...

  8. android自定义TabView实现圆角列表

    看到很多应用的设置界面都有圆角效果的列表,类似下面的 下面说说我的实现原理:继承LinearLayout,然后设置一个自定义的TabAdapter,类似于listview,添加一个setAdapter ...

  9. WindowsCE project missing - 转

    00x0 前言 之前在Windows 7系统中开发的WindowsCE项目,最近换成Windows 10系统,需要将项目进行修改,打开项目后提示如下错误: 无法读取项目文件“App.csproj”.. ...

  10. Duilib技巧:背景图片平铺

    贴图的描述 方式有两种    // 1.aaa.jpg    // 2.file='aaa.jpg' res='' restype='0' dest='0,0,0,0' source='0,0,0,0 ...