(四)伪分布式下jdk1.6+Hadoop1.2.1+HBase0.94+Eclipse下运行wordCount例子

本篇先介绍HBase在伪分布式环境下的安装方式,然后将MapReduce编程和HBase结合起来使用,完成WordCount这个例子。

  • HBase在伪分布环境下安装

一、   前提条件

  已经成功地安装了jdk1.6和hadoop1.2.1。

  Jdk1.6+Hadoop1.2.1在伪分布环境下具体的安装方法见:Hadoop1.2.1安装——单节点方式和单机伪分布方式

二、   环境

  1. VMware® Workstation 10.04
  2. Ubuntu14.04 32位
  3. Java JDK 1.6.0
  4. hadoop1.2.1
  5. hbase0.94.26

三、   HBase0.94伪分布式下的安装步骤

  (1)下载hbase0.94.26的tar包并解压   

tar -zxvf hbase-0.94.26.tar.g

  (2)去{hbase}/conf目录修改hbase-site.xml

<configuration>
<property>
    <name>hbase.rootdir</name>
    <value>hdfs://localhost:9000/hbase</value>
    <!-- 端口号和ip地址要与hadoop配置参数fs.default.name一致 -->
</property>

<property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
</property>

 <property>

  <name>dfs.replication</name>

  <value>1</value> (伪分布设置为1)

</property>

</configuration>

  (3)去{hbase}/conf目录修改hbase-env.sh文件

export JAVA_HOME=/usr/lib/jvm/{jdk}  #jdk安装路径

export HBASE_CLASSPATH=/etc/hadoop

export HBASE_MANAGES_ZK=true

  (4)让hbase0.94.26支持hadoop1.2.1

  hbase0.94.26默认支持的是hadoop1.0.4,我们可以用替换hadoop-core的方式让其支持hadoop1.2.1.

  a. 将hadoop主目录下的hadoop-core-1.2.1.jar文件复制到hbase/lib目录下去,将hbase/lib 目录下自带的    hadoop-core-1.0.4.jar文件删除,

b. 再将hadoop/lib目录下的commons-collections-3.2.1.jar和commons-configuration-1.6.jar文件复制到     hbase/lib目录下去

rm /home/u14/hbase-0.94.26/lib/hadoop-core-1.0.4.jar
cp /home/u14/hadoop/hadoop-core-1.2.1.jar /home/u14/hbase-0.94.26/lib
cp /home/u14/hadoop/lib/commons-collections-3.2.1.jar /home/u14/hbase-0.94.26/lib
cp /home/u14/hadoop/lib/commons-configuration-1.6.jar /home/u14/hbase-0.94.26/lib

  (5)启动HBase

    a. 先启动hadoop

    b. 启动Hbase

      进入hbase的解压目录下的bin文件夹,执行start-hbase.sh脚本

bin/start-hbase.sh

      用jps命令查看相关进程:

SecondaryNameNode
DataNode
HQuorumPeer
TaskTracker
JobTracker
Jps
HRegionServer
HMaster
NameNode

    c. 进入shell模式,操作hbase

bin/hbase shell

    d. 停止hbase:先停止hbase,再停止hadoop

stop-hbase.sh
stop-all.sh
  • 使用Eclipse开发HBase应用程序

    a. 在eclipse里新建一个java项目HBase,然后选择项目属性,在Libraries->Add External JARs...,然后选择{hbase}/lib下相关的JAR包,如果只是测试用的话,就简单一点,将所有的JAR选上


    b. 在项目HBase下增加一个文件夹conf,将Hbase集群的配置文件hbase-site.xml复制到该目录,然后选择项目属性在Libraries->Add Class Folder,将刚刚增加的conf目录选上。

  • 将MapReduce与HBase结合起来完成wordCount例子

在这个例子中,输入文件为:

  user/u14/hbasetest/file01: hello world bye world

  user/u14/hbasetest/file02: hello hadoop bye hadoop

程序思想:程序首先从文件中收集数据,在shuffle完成之后进行统计并计算,最后将计算结果存储到hbase中。

 1 import java.io.IOException;
 2
 3 import org.apache.hadoop.conf.Configuration;
 4 import org.apache.hadoop.fs.Path;
 5 import org.apache.hadoop.hbase.HBaseConfiguration;
 6 import org.apache.hadoop.hbase.HColumnDescriptor;
 7 import org.apache.hadoop.hbase.HTableDescriptor;
 8 import org.apache.hadoop.hbase.client.HBaseAdmin;
 9 import org.apache.hadoop.hbase.client.Put;
10 import org.apache.hadoop.hbase.mapreduce.TableOutputFormat;
11 import org.apache.hadoop.hbase.mapreduce.TableReducer;
12 import org.apache.hadoop.hbase.util.Bytes;
13 import org.apache.hadoop.io.IntWritable;
14 import org.apache.hadoop.io.LongWritable;
15 import org.apache.hadoop.io.NullWritable;
16 import org.apache.hadoop.io.Text;
17 import org.apache.hadoop.mapreduce.Job;
18 import org.apache.hadoop.mapreduce.Mapper;
19 import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
20 import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
21
22 public class WordCountHBase {
23     public static class Map extends Mapper<LongWritable,Text, Text, IntWritable>{
24         private IntWritable i = new IntWritable(1);
25         public void map(LongWritable key, Text value, Context context)
26                 throws IOException, InterruptedException{
27             String s[] = value.toString().trim().split(" ");
28             for(String m: s){
29                 context.write(new Text(m), i);
30             }
31         }
32     }
33
34     public static class Reduce extends TableReducer<Text, IntWritable, NullWritable>{
35         public void reduce(Text key, Iterable<IntWritable> values, Context context)
36                 throws IOException, InterruptedException{
37             int sum = 0;
38             for(IntWritable i: values){
39                 sum += i.get();
40             }
41             Put put = new Put(Bytes.toBytes(key.toString())); //put实例化,每一个词存一行
42             put.add(Bytes.toBytes("content"),Bytes.toBytes("count"),
43                     Bytes.toBytes(String.valueOf(sum))); //列族为content,列修饰符为count,列值为数值
44             context.write(NullWritable.get(), put);
45         }
46     }
47
48     public static void createHBaseTable(String tableName) throws IOException{
49         HTableDescriptor htd = new HTableDescriptor(tableName);
50         HColumnDescriptor col = new HColumnDescriptor("content");
51         htd.addFamily(col);
52         HBaseConfiguration config = new HBaseConfiguration();
53         HBaseAdmin admin = new HBaseAdmin(config);
54         if(admin.tableExists(tableName)){
55             System.out.println("table exists, trying recreate table!");
56             admin.disableTable(tableName);
57             admin.deleteTable(tableName);
58         }
59         System.out.println("create new table: "+ tableName);
60         admin.createTable(htd);
61     }
62
63     public static void main(String args[]) throws Exception{
64         String tableName = "wordcountH";
65         Configuration conf =  new Configuration();
66         conf.set(TableOutputFormat.OUTPUT_TABLE, tableName);
67         createHBaseTable(tableName);
68         Job job = new Job(conf, "WordCountHbase");
69         job.setJarByClass(WordCountHBase.class);
70         job.setNumReduceTasks(3);
71         job.setMapperClass(Map.class);
72         job.setReducerClass(Reduce.class);
73         job.setMapOutputKeyClass(Text.class);
74         job.setMapOutputValueClass(IntWritable.class);
75         job.setInputFormatClass(TextInputFormat.class);
76         job.setOutputFormatClass(TableOutputFormat.class);
77         FileInputFormat.addInputPath(job, new Path(args[0]));
78         System.exit(job.waitForCompletion(true)?0:1);
79     }
80 }

程序成功运行后,通过Hbase Shell检查输出结果:

    

时间: 2024-10-17 14:10:55

(四)伪分布式下jdk1.6+Hadoop1.2.1+HBase0.94+Eclipse下运行wordCount例子的相关文章

Hadoop1.0.4+Hbase0.94.2+Hive0.9.0 分布式部署安装

因为个人太懒,所以很多配图没有上传,完整的部署安装教程另外备份了.这里记录一下防止文档丢了   Hadoop1.0.4+Hbase0.94.2+Hive0.9.0 分布式部署安装 目录 1 服务器配置 2 Hadoop安装 3 Hbase安装 4 Hive安装 版本控制信息 版本 日期 拟稿和修改 说明 1.0 2012-11-27 Yoan.Liang 报文标准初稿(内部版本:1000) 1       服务器配置 1.1    下载安装JDK 1.2    修改NameNode与DataNo

谁说他们版本不兼容——hadoop1.2.1+hbase0.94.11+nutch2.2.1+el

一.背景 最近由于项目和论文的需要,需要搭建一个垂直搜索的环境,查阅了很多资料,决定使用Apache的一套解决方案hadoop+hbase+nutch+es.这几样神器的作用就不多作介绍了,自行参考各类百科就行了.我选择这样的方案主要是基于以下考虑: 1.可扩展,虽然 一.背景 最近由于项目和论文的需要,需要搭建一个垂直搜索的环境,查阅了很多资料,决定使用Apache的一套解决方案hadoop+hbase+nutch+es.这几样神器的作用就不多作介绍了,自行参考各类百科就行了.我选择这样的方案

hadoop1.2.1+hbase0.94.11+nutch2.2.1+elasticsearch0.90.5安装配置攻略

一.背景 最近由于项目和论文的需要,需要搭建一个垂直搜索的环境,查阅了很多资料,决定使用Apache的一套解决方案hadoop+hbase+nutch+es.这几样神器的作用就不多作介绍了,自行参考各类百科就行了.我选择这样的方案主要是基于以下考虑: 1.可扩展,虽然只是实验环境,但是以后在项目中是要应用到生产中的,随着数据量的增大,需要的硬件设备能够方便的加入进来,所以选择了分布式的方案中最具人气的hadoop+hbase组合 2.数据来源兼容,nutch2以后集成了gora和tika,可以方

Hadoop1.0.4+Hbase0.94+zookeeper3.4.5+phoenix3.1.0配

1.       JDK安装 JDK解压配置环境变量 vi /etc/profile 2.       每台机器相关设置 1.设置静态ip(便于机器之间的通信,防止路由器电脑重启后,ip变化,导致不能通信) vim /etc/sysconfig/network-scripts/ifcfg-eth0 3.       修改各节点主机名(每台机器都要设) Etc/hosts 3.关闭防火墙 关闭已经启动的防火墙: service iptables stop (只能关闭当前) 验证:service i

Ubuntu16.04 下 hadoop的安装与配置(伪分布式环境)

注:本文有参考 这篇文章 ,但因其中有部分错误,所以在实际操作中遇到了很大的困扰,于是写成了这篇文章供大家使用 一.准备 1.1创建hadoop用户 $ sudo useradd -m hadoop -s /bin/bash #创建hadoop用户,并使用/bin/bash作为shell $ sudo passwd hadoop #为hadoop用户设置密码,之后需要连续输入两次密码 $ sudo adduser hadoop sudo #为hadoop用户增加管理员权限 $ su - hado

CentOS5.4 搭建Hadoop2.5.2伪分布式环境

简介: Hadoop是处理大数据的主要工具,其核心部分是HDFS.MapReduce.为了学习的方便,我在虚拟机上搭建了一个伪分布式环境,来进行开发学习. 一.安装前准备: 1)linux服务器:Vmware 上CentOS6.4 mini安装 2) JDK:jdk-7u65-linux-x64.gz 3) SSH:ssh client 4) YUM源配置妥当:yum list查看 5)Hadoop:hadoop-2.5.2.tar.gz 二.环境配置 1)linux环境基本设置: vi /et

Hadoop:Hadoop单机伪分布式的安装和配置

http://blog.csdn.net/pipisorry/article/details/51623195 因为lz的linux系统已经安装好了很多开发环境,可能下面的步骤有遗漏. 之前是在docker中配置的hadoop单机伪分布式[Hadoop:Hadoop单机伪分布式的安装和配置 ],并且在docker只有root用户,所有没有权限问题存在. 这里直接在linux下配置,主要是为了能用netbeans ide调试hadoop程序,并且使用的用户就是开机时登录的用户pika. 本教程配置

转载:Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04

原文 http://www.powerxing.com/install-hadoop/ 当开始着手实践 Hadoop 时,安装 Hadoop 往往会成为新手的一道门槛.尽管安装其实很简单,书上有写到,官方网站也有 Hadoop 安装配置教程,但由于对 Linux 环境不熟悉,书上跟官网上简略的安装步骤新手往往 Hold 不住.加上网上不少教程也甚是坑,导致新手折腾老几天愣是没装好,很是打击学习热情. 本教程适合于原生 Hadoop 2,包括 Hadoop 2.6.0, Hadoop 2.7.1

Hadoop伪分布式安装

本文介绍的主要是Hadoop的伪分布式的搭建以及遇到的相关问题的解决,做一下记录,jdk的安装这里就不做太多的介绍了,相信大家根据网上的安装介绍很快就能安装成功. 环境 操作系统 Oracle VM VirtualBox-rhel-6.4_64   本机名称 yanduanduan   本机IP 192.168.1.102   JDK 1.7.0_79   hadoop 2.7.3 点此下载 Hadoop 有两个主要版本,Hadoop 1.x.y 和 Hadoop 2.x.y 系列,比较老的教材