一.错误
使用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...
如果出现如下bug:“Could not locate executable null\bin\winutils.exe in the Hadoop binaries”,则下载该文件,放入hadoop的bin文件夹下,并设置环境变量HADOOP_HOME:F:\hadoop2.7.x即可。
报错 org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block 2、百度结果 参考 https://blog.csdn.net/xiaozhaoshigedasb/article/details/88999595 防火墙记得关掉; 查看DataNode是否启动;...
标题中的“MR程序Bulkload数据到hbase”指的是使用MapReduce(MR)程序批量加载(Bulkload)数据到HBase数据库的过程。MapReduce是Apache Hadoop框架中的一个关键组件,用于处理和生成大规模数据集。而HBase是一个...
赠送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学习知识点 #### 一、Hadoop概述与历史 - **Hadoop官方网站**:作为学习Hadoop的第一步,官方站点提供了丰富的资源和技术文档,包括最新的版本更新和技术动态等。 - **起源与发展**:Hadoop项目起源于...
三、Hadoop学习笔记之三:用MRUnit做单元测试 MRUnit是针对MapReduce任务的单元测试框架,它允许开发者对MapReduce作业进行单元测试,确保每个Mapper和Reducer的功能正确性。通过MRUnit,可以在不实际运行Hadoop集群...
“Hadoop学习总结之三:Map-Reduce入门.doc”介绍了MapReduce编程模型,它是Hadoop处理数据的主要计算框架。Map阶段将输入数据分割成键值对,通过映射函数进行初步处理;Reduce阶段则将Map的输出聚合,通过化简函数...
export CLASSPATH="$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:${HADOOP_HOME}/lib/commons-logging-1.0.4.jar:${HADOOP_HOME}/lib/guava-r09-jarjar.jar:${HADOOP_HOME}/hadoop-core-0.20.2-cdh3u3.jar:/usr/...
搭建hadoop 环境时遇到启动异常告警问题 “WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable” 上来不多说,百度收集些相关...
### Hadoop学习资料:Hadoop2.2.0完全分布式集群平台安装与设置 #### 一、概述 本文档提供了一套完整的Hadoop2.2.0分布式集群平台的安装与配置指南,主要针对希望搭建分布式环境的学习者和技术人员。通过本教程,...
【标题】:“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请求接口触发...
4. **Hadoop API**:学习使用Hadoop API进行数据读写和处理,例如FileSystem API用于文件操作,InputFormat和OutputFormat定义输入输出格式,Mapper和Reducer实现数据处理逻辑。 5. **MapReduce编程**:理解...
当我们谈论“hadoop-lzo-0.4.15.tar.gz”时,我们实际上是在讨论一个特定版本的Hadoop LZO库,这个库将LZO压缩技术集成到Hadoop生态系统中,以提高数据处理效率。 Hadoop LZO是由Gopala Krishna阿德瓦尼创建的,它...
通过以上步骤,您可以在单机环境下完成Hadoop的基本配置,为后续的Hadoop学习和开发打下基础。请注意,这些步骤适用于特定版本的Hadoop和Ubuntu,对于其他版本或操作系统,可能需要适当调整配置过程。