贴下代码,留作备用,
@Override public int run(String[] args) throws Exception { Configuration hbaseConf = HBaseConfiguration.create(); /* String whh = hbaseConf.get("hbase.zookeeper.quorum"); System.out.print(whh);*/ Config config = new Config(); config.initJarFile("mr_hbase.properties"); String numReduceTasksStr = config.getValue("numReduceTasks"); Integer numReduceTasks = 3; if (NumberUtils.isDigits(numReduceTasksStr)) { numReduceTasks = Integer.valueOf(numReduceTasksStr); } String hbaseZookeeperQuorum = config.getValue("hbase.zookeeper.quorum"); hbaseConf.set("hbase.zookeeper.quorum", hbaseZookeeperQuorum); String hbaseZookeeperPropertyClientPort = config.getValue("hbase.zookeeper.property.clientPort"); hbaseConf.set("hbase.zookeeper.property.clientPort", hbaseZookeeperPropertyClientPort); if (args.length > 2) { hbaseConf.set("hbase.zookeeper.quorum", args[2]); } Job job = Job.getInstance(hbaseConf); job.setJarByClass(BookKpUnitToHbaseMr.class); job.setMapperClass(BookKpUnitToHbaseMr.BookKpUnitToHbaseMapper.class); //将第一个路径参数作为输入参数 FileInputFormat.setInputPaths(job, new Path(args[0])); //将第二个HBase表参数作为输出参数 TableMapReduceUtil.initTableReducerJob(args[1], BookKpUnitToHbaseMr.BookKpUnitToHbaseReducer.class, job); -----> 设置reducer的时候,使用org.apache.hadoop.hbase.mapreduce类 job.setOutputKeyClass(Text.class); job.setOutputValueClass(StudentKpInfo.class); //设置任务个数 job.setNumReduceTasks(numReduceTasks); return job.waitForCompletion(true) ? 0 : 1; }
public static class toHbaseReducer extends TableReducer<Text, StudentScoreInfo, ImmutableBytesWritable> { ----> hbase的TableReducer设计只接受rowkey,其余的列簇,列名,列值按写入代码时灵活设置,因此这个类只有ImmutableBytesWritable @Override protected void reduce(Text key, Iterable<StudentScoreInfo> values, Context context) throws IOException, InterruptedException { try { String rowkey = key.toString(); Put put = new Put(rowkey.getBytes()); for (StudentScoreInfo studentScoreInfo : values) { put.addColumn(Bytes.toBytes("es"), Bytes.toBytes(studentScoreInfo.getStudentId()), Bytes.toBytes(studentScoreInfo.getStudentScoreValue())); // 写入列,参数1分别为 es表示列簇 参数2表示列名 参数3表示列值 } context.write(new ImmutableBytesWritable(Bytes.toBytes(rowkey)), put); // 将rowkey和这一列写入hbase } catch (Exception e) { logger.error("reduce error: ", e); } } }
相关推荐
在大数据处理领域,Hadoop、HBase和Zookeeper是三个至关重要的组件,它们共同构建了一个高效、可扩展的数据处理和存储环境。以下是关于这些技术及其集群配置的详细知识。 首先,Hadoop是一个开源的分布式计算框架,...
- `TableInputFormat` 和 `TableOutputFormat`:分别用于MapReduce作业读取和写入HBase表。 - `HTable` 和 `Put`/`Get`:在Mapper和Reducer中,使用`HTable`实例来与HBase表交互,`Put`用于写入数据,`Get`用于...
TableReducer能够直接将Map阶段产生的结果写入到HBase表中,实现了数据的最终迁移。 #### 数据插入机制与HBase表结构 在数据迁移的过程中,HBase的TableReducer使用`Put`对象来构建行数据,并将其插入到HBase中。...
HBase的数据在物理存储上采用HFile格式,这是一种优化的二进制文件格式,适用于随机读取和批量写入操作。HFile将数据按行键排序,提供高效的查找性能,并支持数据压缩,从而节省存储空间。 除了基本功能,HBase还与...
它们允许Hadoop作业直接读取HBase表的数据,或者将处理结果写入HBase,实现了数据处理与存储的一体化。 此外,为了优化性能,还可以考虑以下几点: 1. 配置Hadoop的MapReduce参数,如mapred.task.partition,以平衡...
Hadoop是一个分布式存储和计算框架,而HBase是一个构建在Hadoop之上的非关系型数据库(NoSQL),特别适合处理大规模数据。这里我们将详细探讨Java如何与这两个组件进行交互,并重点关注所需的jar包。 首先,Java...
HBase的数据模型基于Bigtable设计,提供随机读取和快速写入的能力,特别适合处理稀疏、多维度的数据。它利用HDFS作为底层存储,MapReduce进行批量数据处理,与Hadoop生态系统紧密集成。 Hadoop和HBase的结合使用,...
# 基于Hadoop和HBase的日志数据处理系统 ## 项目简介 本项目是一个基于Hadoop和HBase的日志数据处理系统,旨在通过Hadoop的MapReduce框架处理大规模日志数据,并将处理后的数据存储到HBase中。项目涵盖了日志数据...
小米科技作为一家领先的互联网公司,其在数据处理和存储方面的需求巨大,因此Hadoop和HBase的实践显得尤为重要。 在演讲中,谢良首先分享了在Hadoop与HBase技术选型时的依据。Hadoop是一个由Apache基金会开发的...
- **大数据分析:** 结合Hadoop的强大处理能力和Hbase的高效访问能力,适用于各类大数据分析场景。 - **实时查询:** 对于需要实时查询的场景,Hbase提供了低延迟的数据访问能力。 - **日志处理:** 大量的日志...
在构建大数据处理平台时,Hadoop 和 HBase 是两个至关重要的组件。Hadoop 是一个开源的分布式计算框架,它提供了高可靠性和高容错性的数据存储和处理能力。而 HBase 是基于 Hadoop 的一个分布式、列式存储的数据库,...
7. **HBase的应用场景**:HBase常用于实时分析、日志处理、物联网(IoT)数据存储、社交媒体分析等领域,特别是那些需要快速随机读取和写入大量数据的场景。 8. **HBase的扩展性**:HBase通过RegionServer进行水平...
在构建大数据处理和存储系统时,Hadoop和HBase是两个关键组件。Hadoop是一个开源框架,主要用于分布式存储和计算,而HBase是基于Hadoop的分布式列式数据库,适用于实时查询和大规模数据处理。本教程将详述如何搭建一...
在IT行业中,Hadoop和Hbase是两个非常重要的大数据处理工具。Hadoop是一个开源的分布式计算框架,而Hbase是一个基于Hadoop的分布式列式数据库。让我们深入探讨这两个技术的关键知识点。 首先,我们来看Hadoop的核心...
接下来,我们要将读取到的HBase数据写入HDFS。Hadoop提供了`FileSystem`类来操作HDFS,我们可以使用`FSDataOutputStream`来写入文件。以下是一个简单的示例: ```java import org.apache.hadoop.conf.Configuration...
Hadoop和Hbase是大数据处理领域中的两个关键组件。Hadoop是一个开源的分布式计算框架,由Apache基金会维护,主要用于处理和存储大规模数据。Hbase是一个建立在Hadoop之上的分布式数据库,它支持实时读写,适用于...
处理后的结果可以存储回HDFS,也可以实时写入HBase,方便后续的实时查询。 总结来说,Hadoop和HBase的组合为电商交易记录分析提供了强大支持。它们不仅能够处理海量数据,还具备高并发处理和实时查询的能力,帮助...
在IT领域,Hadoop和Hbase是大数据处理和存储的关键技术。Hadoop是一个开源的分布式计算框架,由Apache基金会维护,主要用于处理和存储大规模数据集。Hbase则是一个基于Hadoop的分布式列式数据库,适合实时查询和大...
### Hadoop2.7 HBase1.1.3 高可用集群安装与部署知识点解析 #### 一、部署前准备 - **操作系统**: CentOS 6.5_x64 - **安装目录**: /opt #### 二、节点分配 根据文档提供的节点分配表,我们可以了解到以下信息: ...