hadoop hive hbase 入门学习 (二)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
注册配置 MSE Nacos/ZooKeeper,118元/月
简介:   ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////...

 

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

hadoop 自学系列

               hadoop hive hbase 入门学习 (一) hadoop安装、hdfs学习及mapreduce学习

hadoop 软件下载 (hadoop-1.2.1.tar.gz) 点击下载

hadoop hive hbase 入门学习 (二) hbase 安装、hbase语句学习

hbase 软件下载 (hbase-0.94.26.tar.gz) 点击下载

hadoop hive hbase 入门学习 (三) hive安装、及hive语句学习

hive软件下载 (hive-0.9.0.tar.gz)点击下载

mysql 客户端软件下载 (MySQL-client-5.5.23-1.linux2.6.i386.rpm)点击下载

mysql 服务端软件下载 (MySQL-server-5.5.23-1.linux2.6.i386.rpm)点击下载

mysql connector软件下载 (mysql-connector-java-5.1.16-bin.jar)点击下载

 

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

 

 

 

hbase 伪分布 安装

 

 

 

 

 

 

 

1.hadoop版本:hadoop-1.1.2,HBase版本:hbase-0.94.26

最好的 搭配 是:


本人之前是 : hadoop1.1.2 + hbase0.90.4 在csdn 下载的 hbase0.90.4 后来发现 怎么也启动不了 ?
问题 :ERROR : org.apache.Hadoop.hbase.MasterNotRunningException: null

网站上的 解决方法:

 

1)启动hadoop后,需要等一段时间,再开启hbase

2)去掉hadoop的安全模式:

hadoop dfsadmin -safemode leave

3)把/etc/hosts里的master01的IP改为服务器当前的IP

4)确认hbase的hbase-site.xml中

<name>hbase.rootdir</name>

<value>hdfs://hadoop:9000/hbase</value>

与hadoop的core-site.xml中

<name>fs.default.name</name>
<value>hdfs://hadoop:9000</value>

红字部分保持一致

5)把 hadoop 目录下的 hadoop-core-xxx.jar 拷到 hbase/lib 替换 hadoop-core-yyY.jar

 

最后发现还是 不行 , 没办法 重新安装 hadoop-0.94.26 最后 成功了~~~~

 

 


2.到官方网站下载好hbase-0.94.26.tar.gz,解压hbase安装包到一个可用目录如(/home/hadoop/hbase-0.94.26/)
tar -zxvf hbase-0.94.26.tar.gz

设置hbase-0.94.26所在用户为hadoop,所在组为hadoop(root用户操作)
chown -R hadoop hbase-0.94.26
chgrp -R hadoop hbase-0.94.26或者
chown -R hadoop:hadoop hbase-0.94.26
3.设置环境变量:在/etc/profile和/home/hadoop/.bashrc中配置添加(红色字体的)
#set java environment
HBASE_HOME=/home/hadoop/hbase-0.94.26

HIVE_HOME=/home/hadoop/hive-0.9.0
HADOOP_HOME=/home/hadoop/hadoop-1.1.1
JAVA_HOME=/home/hadoop/jdk1.7.0
PATH=$JAVA_HOME/bin:$HBASE_HOME/bin:$HIVE_HOME/bin:$HADOOP_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$HBASE_HOME/lib:$HIVE_HOME/lib:$JAVA_HOME/lib/tools.jar
export HBASE_HOME
export HADOOP_HOME
export JAVA_HOME
export HIVE_HOME
export PATH
export CLASSPATH

4.hbase配置:
在$HBASE_HOME/conf/hbase-env.sh中配置添加(红色字体的)

export JAVA_HOME= /usr/baoy/java

export HBASE_MANAGES_ZK=true



如果想使用HBase自带的zookeeper,要添加export HBASE_MANAGES_ZK=true

在$HBASE_HOME/conf目录中,确保hbase-site中的hbase.rootdir的主机和端口号与$HADOOP_HOME/conf目录中core-site.xml中的fs.default.name的主机和端口号一致,添加如下内容:

复制代码
<configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://hadoop:9000/hbase</value>
    </property>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <name>hbase.master</name>
        <value>hadoop:54311</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>hadoop</value>
    </property>
</configuration>
复制代码

5.先启动hadoop,再启动hbase:
./start-hbase.sh #确认hadoop完全启动后启动hbase
jps #查看hbase启动情况,确认HQuorumPeer,HMaster,HRegionServer全部启动







 

 

第一个实例 :

1、运行Eclipse,创建一个新的Java工程“HBaseClient”,右键项目根目录,选择 “Properties”->“Java Build Path”->“Library”->“Add External JARs”,将HBase解压后根目录下的hbase-0.94.1-security.jar、hbase-0.94.1-security-tests.jar和lib子目录下所有jar 包添加到本工程的Classpath下。

2.  按照步骤1中的操作,将自己所连接的HBase的配置文件hbase-site.xml添加到本工程的Classpath中,如下所示为配置文件的一个示例:

 

 

	private final static String TABLE_NAME ="t5";
	
	private static Configuration getConfiguration() {
		 final Configuration  conf =  HBaseConfiguration.create();
		conf.set("hbase.rootdir","hdfs://192.168.32.130:9000/hbase" );
		conf.set("hbase.zookeeper.quorum","192.168.32.130" );  
		return conf;
	}
	
	private static Configuration getConfiguration2() {
		Configuration  conf = new Configuration(); 
		conf.set("hbase.zookeeper.quorum", "192.168.32.130");  
		conf.set("hbase.zookeeper.property.clientPort", "2181");  
        conf = HBaseConfiguration.create(conf);
		return  conf;
	}
	
	public static void main(String[] args) throws Exception {
	//一类对表自身操作 修改 增加删除
	//一类对数据 的操作  增加 修改 删除
		final Configuration conf = getConfiguration();
		final HBaseAdmin hBaseAdmin = new HBaseAdmin(conf); 
		HTableDescriptor htableDescriptor =new HTableDescriptor(TABLE_NAME);
		htableDescriptor.addFamily(new HColumnDescriptor("f1")); 
		hBaseAdmin.createTable(htableDescriptor);
		hBaseAdmin.close();
	}

 

 

问题1:
java.net.ConnectException: Connection refused: no further information
 
a. zookeeper.ClientCnxn: Session 0x0 for server null,
 
解决: zppkeeper未启动,或无法连接,从查看各节点zookeeper启动状态、端口占用、防火墙等方面查看原因
 
b. getMaster attempt 4 of 10 failed; retrying after sleep of 2000
 
解决:查看 master log , 如果有信息org.apache.hadoop.hbase.regionserver.HRegionServer: Serving as BRDVM0240,43992,1373943529301, RPC listening on /127.0.0.1:43992, sessionid=0x13fe56a7d4b0001

则说明, HRegionServer

监听的端口是localhost 127.0.0.1, 需要修改 server /etc/hosts 文件, 127.0.0.1            
   servername localhost.localdomain localhost 
去掉 servername, 然后重启hbase
第二种情况:
java.net.ConnectException: Connection refused: no further information 
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) 
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567) 
at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1119) 
12/09/03 15:37:15 INFO zookeeper.ClientCnxn: Opening socket connection to server /192.168.0.118:2181 
12/09/03 15:37:16 INFO zookeeper.ClientCnxn: EventThread shut down 
12/09/03 15:37:16 INFO zookeeper.ZooKeeper: Session: 0x0 closed 
Exception in thread "main" org.apache.hadoop.hbase.ZooKeeperConnectionException: HBase is able to connect to ZooKeeper but the connection closes immediately. This could be a sign that the server has too many connections (30 is the default). Consider inspecting your ZK server logs for that error and then make sure you are reusing HBaseConfiguration as often as you can. See HTable's javadoc for more information. 
at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.<init>(ZooKeeperWatcher.java:156) 
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getZooKeeperWatcher(HConnectionManager.java:1209) 
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.setupZookeeperTrackers(HConnectionManager.java:511) 
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:502) 
at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:172) 
at org.apache.hadoop.hbase.client.HBaseAdmin.<init>(HBaseAdmin.java:92) 
at com.biencloud.test.first_hbase.main(first_hbase.java:22) 
Caused by: org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase 
at org.apache.zookeeper.KeeperException.create(KeeperException.java:90) 
at org.apache.zookeeper.KeeperException.create(KeeperException.java:42) 
at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:809) 
at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:837) 
at org.apache.hadoop.hbase.zookeeper.ZKUtil.createAndFailSilent(ZKUtil.java:931) 
at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.<init>(ZooKeeperWatcher.java:134) 
... 6 more 

这个错误说明eclipse没有连接到zookeeper,在程序中添加zookeeper配置信息即可,具体如下: 
Configuration conf=HBaseConfiguration.create(); 
conf.set("hbase.zookeeper.quorum","192.168.0.118, 192.168.0.186, 192.168.0.182"); 
conf.set("hbase.zookeeper.property.clientPort","2222"); 

 

还不行 ,在 windows 中 

C:\Windows\System32\drivers\etc 添加 你的 ip 和 别名

比如 192.168.32.130 hadoop

我就死在 这里 ,我记得 我的 所有 配置都是 用 ip 192.168.32.130 的 没有用 别名 hadoop,还是 不行 ,,之后 就加了一个 就好了 。

 

 

 

 

hbase 对数据库表的操作 & 对数据的操作

package study.hbase.demo.test;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor; 
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.ZooKeeperConnectionException;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;

public class Test {
	
	private final static String TABLE_NAME ="t5";
	private static final byte[] ROWKEY = "rowkey".getBytes();
	private static final byte[] FAMILY = "f1".getBytes();
	private static final byte[] QULIFIER = "c1".getBytes();
	private static final byte[] VALUE = "value".getBytes();
	
	private static Configuration getConfiguration() {
		 final Configuration  conf =  HBaseConfiguration.create();
		conf.set("hbase.rootdir","hdfs://192.168.32.130:9000/hbase" );
		conf.set("hbase.zookeeper.quorum","192.168.32.130" );  
		return conf;
	}
	
	private static Configuration getConfiguration2() {
		Configuration  conf = new Configuration(); 
		conf.set("hbase.zookeeper.quorum", "192.168.32.130");  
		conf.set("hbase.zookeeper.property.clientPort", "2181");  
        conf = HBaseConfiguration.create(conf);
		return  conf;
	}
	
	public static void main(String[] args) throws Exception {
	//一类对表自身操作 修改 增加删除
	//一类对数据 的操作  增加 修改 删除
		final Configuration conf = getConfiguration();
		//createTable(conf);
		final HTable htable = new HTable(conf ,TABLE_NAME);
		//put 'f1','rowkey','f1:c1','value'
		final Put put =new Put(ROWKEY);
		put.add(FAMILY, QULIFIER, VALUE);
		htable.put(put);
		
 	
		final Get get =new Get(ROWKEY);
		final Result result = htable.get(get);
		final byte[] value2 = result.getValue(FAMILY, QULIFIER);
		System.out.println(new String (value2));
		
		System.out.println("-----------------------------------------------");
		
		final Scan scan= new Scan (); 
		final ResultScanner resultScanner = htable.getScanner(scan);
		for (Result temp : resultScanner) {
			final byte[] value3 = temp.getValue(FAMILY, QULIFIER);
			System.out.println(new String (value3));
		}
		htable.close();
		
		//deleteTable(conf);
		
	}

	@SuppressWarnings("unused")
	private static void deleteTable(final Configuration conf)
			throws MasterNotRunningException, ZooKeeperConnectionException,
			IOException {
		final HBaseAdmin hBaseAdmin = new HBaseAdmin(conf); 
		if(hBaseAdmin.tableExists(TABLE_NAME)){
		hBaseAdmin.disableTable(TABLE_NAME);
		hBaseAdmin.deleteTable(TABLE_NAME);
		hBaseAdmin.close();
		}
	}

	
	@SuppressWarnings("unused")
	private static void createTable(final Configuration conf)
			throws MasterNotRunningException, ZooKeeperConnectionException,
			IOException {
		final HBaseAdmin hBaseAdmin = new HBaseAdmin(conf); 
		if(hBaseAdmin.tableExists(TABLE_NAME)){
		HTableDescriptor htableDescriptor =new HTableDescriptor(TABLE_NAME);
		htableDescriptor.addFamily(new HColumnDescriptor("f1")); 
		hBaseAdmin.createTable(htableDescriptor);
		hBaseAdmin.close();
		}
	}

	
}

 

 



 
 

 

 

 

 

 

 

 

 







 

 

 

捐助开发者

在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。



 
 
 谢谢您的赞助,我会做的更好!

 

 

相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
6月前
|
Java Shell 分布式数据库
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
157 0
|
2月前
|
分布式计算 Java Hadoop
java使用hbase、hadoop报错举例
java使用hbase、hadoop报错举例
91 4
|
4月前
|
存储 分布式数据库 数据库
Hbase学习二:Hbase数据特点和架构特点
Hbase学习二:Hbase数据特点和架构特点
82 0
|
1月前
|
存储 大数据 关系型数据库
HBase系列学习:基础知识
HBase系列学习:基础知识
HBase系列学习:基础知识
|
1月前
|
分布式计算 Hadoop Shell
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
69 4
|
1月前
|
SQL 分布式计算 Hadoop
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
33 3
|
1月前
|
分布式计算 Hadoop Shell
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
57 3
|
1月前
|
SQL 分布式计算 Hadoop
Hadoop-34 HBase 安装部署 单节点配置 hbase-env hbase-site 超详细图文 附带配置文件
Hadoop-34 HBase 安装部署 单节点配置 hbase-env hbase-site 超详细图文 附带配置文件
73 2
|
1月前
|
存储 分布式计算 Hadoop
Hadoop-33 HBase 初识简介 项目简介 整体架构 HMaster HRegionServer Region
Hadoop-33 HBase 初识简介 项目简介 整体架构 HMaster HRegionServer Region
53 2
|
4月前
|
大数据 分布式数据库 Hbase
Hbase学习三:Hbase常用命令总结
Hbase学习三:Hbase常用命令总结
660 0