在hadoop上跑hbase 的map reduce程序的时候环境却很多jar,需要在hadoop-env.sh中进行补充
引入hbase lib下面以hbase开头的jar,
另外增加metrics-core-2.2.0.jar, 发在extlib下面
for f in $HBASE_HOME/lib/hbase*.jar; do
if [ "$HADOOP_CLASSPATH" ]; then
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$f
else
export HADOOP_CLASSPATH=$f
fi
done
for f in $HADOOP_HOME/extlib/*.jar; do
if [ "$HADOOP_CLASSPATH" ]; then
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$f
else
export HADOOP_CLASSPATH=$f
fi
done
./hadoop jar /tmp/idStatics.jar sea.hbase.IdStatic
源代码:
import java.io.IOException;
import java.util.List;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
import org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil;
import org.apache.hadoop.hbase.mapreduce.TableMapper;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;
public class IdStatics extends Configured implements Tool{
public static final String table = "id_records";
public static final byte[] column = Bytes.toBytes("idValue");
@Override
public int run(String[] arg0) throws Exception {
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "192.168.1.250:2181,192.168.1.250:2182,192.168.1.250:2183");
conf.set("zookeeper.znode.parent", "/hbase13");
Job job = Job.getInstance(conf,"read_data_from_hbase");
job.setJarByClass(IdStatics.class);
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(Text.class);
job.setReducerClass(ReadReducer.class);
job.setSpeculativeExecution(false);
//对整个CF扫描
Scan scan = new Scan();
scan.addFamily(column);
scan.setMaxVersions(5);
scan.setCaching(10);
scan.setBatch(2);
TableMapReduceUtil.initTableMapperJob(this.table,
scan,
ReadMapper.class,
Text.class,
Text.class,
job);
String output = "/result";
FileSystem.get(job.getConfiguration()).delete(new Path(output), true);
FileOutputFormat.setOutputPath(job,new Path(output));
return job.waitForCompletion(true) ? 0 : 1;
}
static class ReadMapper extends TableMapper<Text,Text> {
@Override
protected void map(ImmutableBytesWritable key, Result result, Context context) throws IOException,InterruptedException{
if (result == null || result.isEmpty()) return;
result.getFamilyMap(column);
List<Cell> cells = result.listCells();
if(CollectionUtils.isNotEmpty(cells)){
for(Cell cell:cells){
//String family = Bytes.toString(CellUtil.cloneFamily(cell));
String value = Bytes.toString(CellUtil.cloneValue(cell));
context.write(new Text(StringUtils.reverse(value)),new Text("1"));
}
}
}
}
static class ReadReducer extends Reducer<Text,Text,Text,Text> {
@Override
protected void reduce(Text key, Iterable<Text> values, Context context) throws IOException,InterruptedException{
Integer total=0;
for(Text each:values) {
total=total+Integer.valueOf(each.toString());
}
if(total>1) {
context.write(key,new Text(total.toString()));
}
}
}
public static void main(String[] args) throws Exception{
System.exit(ToolRunner.run(new IdStatics(),args));
}
}
相关推荐
总结,HBase的高可用分布式搭建涉及到Hadoop环境的配置、HBase组件的优化以及与Hadoop生态中其他工具的协同。通过合理的配置和管理,可以构建出稳定、可靠的HBase集群,满足大数据场景下的高性能存储和访问需求。
本篇将详细阐述如何在Hadoop 2.7.1环境下搭建HBase 1.2.1集群,并进行性能优化,以提升系统效率。 首先,我们需要了解Hadoop和HBase的基本概念。Hadoop是基于分布式文件系统HDFS(Hadoop Distributed File System)...
hbase2.0环境搭建的知识点可以从多个维度展开,包括环境准备、软件安装、配置调整、服务启动以及性能优化等方面。 首先,环境准备是hbase2.0环境搭建的重要环节。文档中提到需要有hadoop2.7.5环境的搭建和启动,...
- **HBase 作为数据源**: 使用 MapReduce 或 Hive 对 HBase 中的数据进行分析。 #### 六、HBase 与 Kafka 的集成 - **Kafka 作为消息队列**: Kafka 提供了一个高性能的消息发布/订阅系统。 - **数据生产和消费**: ...
HDFS作为HBase的数据存储层,MapReduce用于批处理HBase中的数据,YARN管理计算资源。 通过以上步骤,你应该已经掌握了HBase的基本安装和使用方法。然而,HBase的复杂性远不止于此,如表设计、故障恢复、监控及性能...
Java运行环境(JDK)是Hadoop、HBase和Hive运行的必要条件。文中提到的JDK版本为1.6,虽然现在可能更推荐使用更高版本的JDK,但1.6在当时是广泛支持的稳定版本。配置`.bash_profile`文件中的环境变量,如`JAVA_HOME`...
搭建Hadoop集群、Zookeeper集群和HBase环境是一个复杂的过程,需要在每一步都确保配置无误。从规划机器、安装配置Java环境,到安装和配置Hadoop、Zookeeper、HBase,每一步都需要遵循严格的指导原则和最佳实践。搭建...
在Windows 10环境下搭建Hadoop 3.1.3和HBase 2.2.2测试环境是一项技术性较强的任务,涉及到多个组件的安装、配置以及相互间的协同工作。以下将详细介绍如何进行这一过程,以及相关的配置文件作用。 首先,我们需要...
本教程将深入探讨如何利用Hadoop2.7.3、HBase1.2.5和ZooKeeper3.4.6搭建一个完整的分布式集群环境,以支持大规模数据存储和处理。 首先,我们来了解下这三个组件的基本概念: 1. **Hadoop**:Apache Hadoop是一个...
HBase是一个分布式、面向列的开源数据库,它运行在Hadoop的文件系统(HDFS)之上,利用Hadoop的MapReduce来处理HBase中的大数据,同时也使用Apache ZooKeeper作为分布式协同服务。HBase特别适合于需要快速读写访问...
在构建大数据处理环境时,Hadoop、HBase、Spark和Hive是四个核心组件,它们协同工作以实现高效的数据存储、处理和分析。本教程将详细介绍如何在Ubuntu系统上搭建这些组件的集群。 1. **Hadoop**:Hadoop是Apache...
在提供的文件列表中,`start-journalnodes.txt`可能是启动JournalNodes的脚本,`hbase分布式环境搭建.docx`提供了HBase环境搭建的详细指南,`hbase环境搭建脚本`包含自动化部署HBase的脚本,`hadoop环境搭建`文件...
搭建HBase集群,我们需要先安装Hadoop,然后配置`hbase-site.xml`,指定HMaster、HRegionServer等相关参数。Java调用HBase时,可以利用`org.apache.hadoop.hbase.client.ConnectionFactory`创建连接,执行CRUD操作。...
用户可以在MapReduce程序中访问HBase中的数据,也可以将MapReduce作为批量加载数据到HBase中的手段。 ### HBase安全 HBase的安全章节讲述了如何安全地访问HBase集群,包括安全客户端访问、访问控制和安全批量加载...
本环境搭建主要包括以下几个核心部分:Java、Hadoop、HBase、Spark、Miniconda以及Jupyter。 首先,Java是大数据处理的基础,因为许多大数据工具依赖于Java运行时环境。在Ubuntu中,首先需要下载JDK的压缩包,将其...
HBase 官方开发参考手册是每个 HBase 用户必备的参考资料,它覆盖了从基础到高级的所有概念和操作,包括集群的搭建、数据模型的理解、架构的设计、优化配置、安全保障和与 Hadoop 生态系统的集成等方面。通过这份...
本压缩包提供了这些组件的安装部署资源,便于快速搭建一个完整的Hadoop2.7.1、ZK3.5、HBase2.1和Phoenix5.1.0的基础环境。 首先,Hadoop是Apache开源项目,它提供了分布式文件系统(HDFS)和MapReduce计算框架,...
- **单机模式**:适用于开发测试环境,便于快速搭建和使用。 - **分布式模式**:适用于生产环境,能够提供更高的吞吐量和可用性。 #### 二、配置管理 - **Configuration Files**(配置文件): - `hbase-site....