一.错误
使用BulkLoad向Hbase导入数据时出现了错误
2014-04-04 15:39:08,521 WARN org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles - Bulk load operation did not find any files to load in directory hdfs://192.168.1.200:9000/user/root/output1. Does it contain files in subdirectories that correspond to column family names?
然后去看MapReduce的临时输出目录,果然没有data文件夹,只有_SUCCESS文件。
二.job.setMapOutputValueClass与job.setOutputValueClass
这一定是Reduce的问题了,去看看HFileOutputFormat.configureIncrementalLoad(job, htable); 到底做了什么。
job.setOutputKeyClass(ImmutableBytesWritable.class); job.setOutputValueClass(KeyValue.class); job.setOutputFormatClass(HFileOutputFormat.class); // Based on the configured map output class, set the correct reducer to properly // sort the incoming values. // TODO it would be nice to pick one or the other of these formats. if (KeyValue.class.equals(job.getMapOutputValueClass())) { job.setReducerClass(KeyValueSortReducer.class); } else if (Put.class.equals(job.getMapOutputValueClass())) { job.setReducerClass(PutSortReducer.class); } else if (Text.class.equals(job.getMapOutputValueClass())) { job.setReducerClass(TextSortReducer.class); } else { LOG.warn("Unknown map output value type:" + job.getMapOutputValueClass()); }
Debug时发现,job.getMapOutputValueClass为KeyValue。再看看job.setMapOutputValueClass和job.setOutputValueClass的区别
getOutputValueClass mapreduce.job.output.value.class setOutputValueClass mapreduce.job.output.value.class setMapOutputValueClass mapreduce.map.output.value.class getMapOutputValueClass mapreduce.map.output.value.class /** * Set the value class for the map output data. This allows the user to * specify the map output value class to be different than the final output * value class. * * @param theClass the map output value class. * @throws IllegalStateException if the job is submitted */ public void setMapOutputValueClass(Class<?> theClass ) throws IllegalStateException { ensureState(JobState.DEFINE); conf.setMapOutputValueClass(theClass); } /** * Get the value class for the map output data. If it is not set, use the * (final) output value class This allows the map output value class to be * different than the final output value class. * * @return the map output value class. */ public Class<?> getMapOutputValueClass() { Class<?> retv = getClass(JobContext.MAP_OUTPUT_VALUE_CLASS, null, Object.class); if (retv == null) { retv = getOutputValueClass(); } return retv; }
也就是
- getMapOutputValueClass的值,在没有setMapOutputValueClass时,将使用setOutputValueClass的值。
- 允许map output value的class(即getMapOutputValueClass)和最终output value的(Reduceo output value的)class(即getOutputValueClass)不同。泛型类PutSortReducer<ImmutableBytesWritable, Put, ImmutableBytesWritable, KeyValue>说明map output value的class为Put,最终的为KeyValue。
- 上述同样适用于KeyClass。
我在程序里job.setOutputValueClass(Put.class),改为job.setMapOutputValueClass(Put.class)即可。
三.HBase删除所有数据
这个问题跟主题没有任何关系,就当做绿叶吧。
昨天突然有一想法,如果不重装Hbase,有没有办法“格式化”HBase。
首先想到的是删掉了Hdfs上hbase目录,再重启HBase,发现RegionServer连接不上Master。应该是-ROOT-表和.META.表已经被删掉了,RegionServer向zookeeper汇报心跳时,zookeeper去-ROOT-表里查找此RegionServer的相关信息,发现信息已经丢失,也就无法将此RegionServer信息通知给Master。删掉zookeeper信息,再次重启成功。
rm -rf /tmp/hbase-root*
<property> <name>hbase.zookeeper.property.dataDir</name> <value>/tmp/hbase-root</value> default <description>Property from ZooKeeper's config zoo.cfg. The directory where the snapshot is stored. </description> </property>
相关推荐
util.Shell (Shell.java:(694)) - Did not find winutils.exe: {} java.io.FileNotFoundException: Could not locate Hadoop executable: E:\hadoop-3.0.2\bin\winutils.exe -see ...
而针对Windows用户,开发和运行Hadoop应用时会遇到一个常见问题:“Did not find winutils.exe: java.io.FileNotFoundException”。这个错误是由于Hadoop在Windows环境下找不到`winutils.exe`文件所引起的。`...
### Hadoop运行痕迹追踪详解 #### 一、引言 Hadoop作为一种强大的分布式计算框架,在大数据处理领域扮演着举足轻重的角色。然而,随着其功能的不断...希望本文的内容能够对您在Hadoop的学习和使用过程中有所帮助。
在大数据处理领域,Spark作为一个高效的分布式计算框架,广泛应用于数据处理、分析和机器学习任务。在实际的企业级应用中,经常需要将数据从一个Spark集群批量加载到另一个集群,这就是所谓的"Spark跨集群bulk load...
标题中的“MR程序Bulkload数据到hbase”指的是使用MapReduce(MR)程序批量加载(Bulkload)数据到HBase数据库的过程。MapReduce是Apache Hadoop框架中的一个关键组件,用于处理和生成大规模数据集。而HBase是一个...
报错 org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block 2、百度结果 参考 https://blog.csdn.net/xiaozhaoshigedasb/article/details/88999595 防火墙记得关掉; 查看DataNode是否启动;...
如果出现如下bug:“Could not locate executable null\bin\winutils.exe in the Hadoop binaries”,则下载该文件,放入hadoop的bin文件夹下,并设置环境变量HADOOP_HOME:F:\hadoop2.7.x即可。
赠送jar包:hadoop-auth-2.6.5.jar 赠送原API文档:hadoop-auth-2.6.5-javadoc.jar 赠送源代码:hadoop-auth-2.6.5-sources.jar 包含翻译后的API文档:hadoop-auth-2.6.5-javadoc-API文档-中文(简体)-英语-对照版...
三、Hadoop学习笔记之三:用MRUnit做单元测试 MRUnit是针对MapReduce任务的单元测试框架,它允许开发者对MapReduce作业进行单元测试,确保每个Mapper和Reducer的功能正确性。通过MRUnit,可以在不实际运行Hadoop集群...
然而,在使用Hadoop时,经常会遇到一些常见的问题,这些问题可能会导致Hadoop集群无法正常工作或者性能下降。因此,本文总结了一些常见的问题及解决办法,以帮助用户更好地使用Hadoop。 问题1:Shuffle Error: ...
“Hadoop学习总结之三:Map-Reduce入门.doc”介绍了MapReduce编程模型,它是Hadoop处理数据的主要计算框架。Map阶段将输入数据分割成键值对,通过映射函数进行初步处理;Reduce阶段则将Map的输出聚合,通过化简函数...
搭建hadoop 环境时遇到启动异常告警问题 “WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable” 上来不多说,百度收集些相关...
【标题】:“hadoop,hive,hbase学习资料”是一份综合性的学习资源,涵盖了大数据处理领域中的三个核心组件——Hadoop、Hive和Hbase。这些工具在大数据处理和分析中发挥着至关重要的作用。 【描述】:描述指出这份...
【SpringBoot】Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster报错明细问题解决后记 报错明细 IDEA SpringBoot集成hadoop运行环境,,本地启动项目,GET请求接口触发...
【Hadoop实战视频教程】是针对大数据处理领域的一款专业学习资源,主要涵盖了Hadoop的各个方面,包括环境搭建、核心组件的使用以及实际案例的应用。这个教程不仅提供了视频讲解,还包含有配套的环境搭建文件,使得...