• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >云计算 > Hadoop 使用常见问题,hadoop使用常见问题

Hadoop 使用常见问题,hadoop使用常见问题

作者:网友 字体:[增加 减小] 来源:互联网

本文主要包含hadoop使用,hadoop使用教程,hadoop使用场景,hadoop怎么使用,如何使用hadoop等服务器相关知识,网友希望可以进行参考

Hadoop 使用常见问题,hadoop使用常见问题


最近一个月刚开始接触Hadoop,这两天在搞排序的时候遇到了点问题,终于解决了,
所以想着可以将其记录下来,防止以后忘记,还可以为我国的社会主义建设做贡献。本篇文
章的内容主要就是在Hadoop使用中遇到的各种问题以及解决方法。

问题1: Can’t read partitions file
背景:
Hadoop进行全局排序时有一个非常高效的算法–terasort,这种方法充分利用Hadoop本身在reduce阶段shuffle过程中对key的排序,但默认的shuffle过程只能保证每个reduce任务内的key是有序的,无法保证全局有序,因为键值在partition时是通过hash来分配给不同reduce任务的,为了实现全局的排序,一种策略是根据键值大小进行partition,使得reduce任务间是有序的,但是在为reducer分配任务前是无法得知键值的分布情况容易造成分配给每个reducer的任务量不均匀,效率低下。terasort就是通过提前抽样获取键值的分布,生成一个partitions file,map会根据这个partitions file建立trie数,从而更为有效的partition。
问题:
进行terasort全局排序时出现java.lang.IllegalArgumentException: Can’t read partitions file这样的错误,但在HDFS中是可以找到partition文件的。
原因:
在指定reduce task数量时指定的过多,键值的个数小于task数量,导致partition文件中有标识不同reducer的键值相同(还是鸽巢原理呢)。
解决方法:
减少reduce task的数量到合适的数量,至少是(抽到样本键值数-1)个。

问题2:Wrong FS & 日志无法收集(不能查看)
背景:
Hadoop可以有不同的集群(集群之间性能,配置会有不同),另外Hadoop的计算和数据资源是分离的,在某些需求下,更换了集群的计算资源。
原因:
在配置中只更换了计算资源的集群,使用的确实原来集群的数据节点。
解决方法:
更改配置,使用同一集群下的计算资源和数据资源。
问题3:运行Hadoop程序使用通用配置选项不生效
背景:
在运行Hadoop程序是有一些通用性的选项的比如设置队列优先级等。
问题:
输入对应的命令但是不生效
原因:
代码有误。
解决方案:
要使用通用性的配置选项,在代码上有两个地方需呀注意,一是在类的定义时需要继承Configured类并实现Tool,例如:
public class NGramCounter extends Configured implements Tool
二是在实现run函数时对参数的解析时要这样:
public int run(String[] args) throws Exception {
// TODO Auto-generated method stub
Configuration conf = getConf();
String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
conf获取的时候不要直接new,而是应该使用继承自Configured的getConf方法获得,另外还需要使用GenericOptionsParser类对通用的参数进行解析。
问题4:运行Hadoop程序时类型不匹配
背景:
Hadoop 程序需要运行时需要设定mapper和reducer的input和output 的key value类型。
问题:
直接上段代码说明吧:
使用了这样的mapper:
public static class RawGramCountMapper extends
Mapper<BytesWritable, BytesWritable, IntWritable, IntWritable> {
public void map(BytesWritable key, BytesWritable value, Context context){
context.write(new IntWritable(1),new IntWritable(1));
}
}

使用了这样的reducer:
public static class RawGramCountReducer extends
Reducer<IntWritable, IntWritable, Text, IntWritable> {}

在使用启动任务的代码中出现了这样的语句:
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);

运行时会报出类似这样的错误:Type mismatch in key from map: expected org.apache.hadoop.io.Text, received org.apache.hadoop.io.IntWritable
原因:
设置有误,mapper 和 reducer的output key 和value的类型必须通过显示的设置来确定,仅仅通过泛型的类型指定是不可取的,而
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
对mapper和reducer都生效。
解决方案:
如果mapper 和 reducer 的ouput key和value的类型是相同的,那么可以通过
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
来设定。
如果mapper 和 reducer 的ouput key和value的类型是不相同的,那么需要通过
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
设定两者的kv类型。和
job.setMapOutputKeyClass(IntWritable.class);
job.setMapOutputValueClass(IntWritable.class);
单独设定mapper的output kv类型。
先发表,待续~~

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • hadoop distcp使用,hadoopdistcp
  • Hadoop 使用常见问题,hadoop使用常见问题

相关文章

  • 【Spark】配置Spark源码阅读环境,spark源码阅读环境
  • hadoop-common源码分析之-WritableUtils,hadoopcommon源码
  • 从Hadoop URL中读取数据,hadoopurl读取数据
  • 通过iscsi协议使用ceph rbd,iscsi协议cephrbd
  • hive复杂类型访问操作,hive访问
  • HBase数据导入的几种操作,hbase数据导入几种
  • The superclass &quot;javax.servlet.http.HttpServlet&quot; was not found on the Java Build Path,httpservlet
  • Flume 开发者指南V1.5.2,flume开发者v1.5.2
  • Storm简述及集群安装,Storm简述集群安装
  • Strom实时计算--简述,strom实时--

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • hadoop文件损坏解决办法,
    • hive join详解,hivejoin
    • hadoop 2.4.1 64位编译记录,hadoop2.4.1
    • 现代数学的引路人,现代数学引路人
    • MongoDB Query 的几个方法,mongodbquery
    • 机器学习-统计学习方法概论,学习方法概论
    • Nova client源码分析---nova list命令,nova---nova
    • 新增数据页面360浏览器样式异常,新增360浏览器样式
    • Mesos资料收集(持续更新),mesos资料收集
    • java保留两位小数,java两位小数

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有