HBASE学习d端口master:16010(java操作hbase)https://www.cnblogs.com/junrong624/p/7323483.html
HBase提示已创建表,但是list查询时,却显示表不存在。
https://blog.csdn.net/liu16659/article/details/80216085
下载网址
http://archive.apache.org/dist/hbase/
下载1.2.6bin.tar.gz
安装查看网址
https://www.cnblogs.com/lzxlfly/p/7221890.html

Hbase安装部署基本步骤:
1、在Hadoop配置的基础上,配置环境变量HBASE_HOME、hbase-env.sh
编辑 vim /etc/profile 加入
export HBASE_HOME=/home/hadoop/hadoop_home/hbase-1.2.6
export PATH=$PATH:$HBASE_HOME/bin
source ~/.profile
复制一下需要修改的内容
cp /home/hadoop/hadoop_home/hbase-1.2.6/conf/hbase-env.sh /home/hadoop/hadoop_home/hbase-1.2.6/conf/hbase-env.sh.bak
cp /home/hadoop/hadoop_home/hbase-1.2.6/conf/hbase-site.xml /home/hadoop/hadoop_home/hbase-1.2.6/conf/hbase-site.xml.bak
cp /home/hadoop/hadoop_home/hbase-1.2.6/conf/regionservers /home/hadoop/hadoop_home/hbase-1.2.6/conf/regionservers.bak
编辑vim /home/hadoop/hadoop_home/hbase-1.2.6/conf/hbase-env.sh 加入
export JAVA_HOME=/home/hadoop/hadoop_home/jdk1.8.0_181(jdk安装路径)
去掉注释 # export HBASE_MANAGES_ZK=true,不使用hbase自带zookeeper。
去掉注释 # export HBASE_MANAGES_ZK=true,。这里我们注释
或者改成false
HBase 需要依赖的 Jar 包
由于 HBase 需要依赖Hadoop,所以替换 HBase 的 lib 目录下的 jar 包,以解决兼容问题:
1) 删除原有的 jar:
$ rm -rf /home/admin/modules/hbase-1.2.6/lib/hadoop-*
$ rm -rf /home/admin/modules/hbase-1.2.6/lib/zookeeper-3.4.6.jar
2) 拷贝新 jar,涉及的 jar 有:
hadoop-annotations-2.7.2.jar
hadoop-auth-2.7.2.jar
hadoop-client-2.7.2.jar
hadoop-common-2.7.2.jar
hadoop-hdfs-2.7.2.jar
hadoop-mapreduce-client-app-2.7.2.jar
hadoop-mapreduce-client-common-2.7.2.jar
hadoop-mapreduce-client-core-2.7.2.jar
hadoop-mapreduce-client-hs-2.7.2.jar
hadoop-mapreduce-client-hs-plugins-2.7.2.jar
hadoop-mapreduce-client-jobclient-2.7.2.jar
hadoop-mapreduce-client-jobclient-2.7.2-tests.jar
hadoop-mapreduce-client-shuffle-2.7.2.jar
hadoop-yarn-api-2.7.2.jar
hadoop-yarn-applications-distributedshell-2.7.2.jar
hadoop-yarn-applications-unmanaged-am-launcher-2.7.2.jar
hadoop-yarn-client-2.7.2.jar
hadoop-yarn-common-2.7.2.jar
hadoop-yarn-server-applicationhistoryservice-2.7.2.jar
hadoop-yarn-server-common-2.7.2.jar
hadoop-yarn-server-nodemanager-2.7.2.jar
hadoop-yarn-server-resourcemanager-2.7.2.jar
hadoop-yarn-server-tests-2.7.2.jar
hadoop-yarn-server-web-proxy-2.7.2.jar
zookeeper-3.4.9.jar
尖叫提示:这些 jar 包的对应版本应替换成你目前使用的 hadoop 版本,具体情况具体分析。
查找 jar 包举例
$ find /home/admin/modules/hadoop-2.7.2/ -name hadoop-annotations*
然后将找到的 jar 包复制到 HBase 的 lib 目录下即可。
HBase 软连接 Hadoop 配置
$ ln -s ~/hadoop_home/etc/hadoop/core-site.xml ~/hadoop_home/hbase-1.2.6/conf/core-site.xml
$ ln -s ~/hadoop_home/etc/hadoop/hdfs-site.xml ~/hadoop_home/hbase-1.2.6/conf/hdfs-site.xml
2、配置hbase-site.xml文件
<configuration>
<property>
<name>hbase.rootdir</name> <!-- hbase存放数据目录 -->
<value>hdfs://master:9000/user/hadoop/hbase/hbase_db</value>
<!-- 端口要和Hadoop的fs.defaultFS端口一致-->
</property>
<property>
<name>hbase.cluster.distributed</name> <!-- 是否分布式部署 -->
<value>true</value>
</property>
<!-- 0.98 后的新变动,之前版本没有.port,默认端口为 60000 -->
<property>
<name>hbase.master.port</name>
<value>16000</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name> <!-- list of zookooper -->
<value>master:2181,node1:2181,node2:2181</value>
</property>
<property><!--zookooper配置、日志等的存储位置 -->
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hadoop/hadoop_home/hbase-1.2.6/hbase/zookeeper</value>
</property>
</configuration>
3、配置regionservers
编辑 vim /opt/hbase-1.2.6/conf/regionservers 去掉默认的localhost,
加入node1、node2,(换行)保存退出
然后把在master上配置好的hbase,通过远程复制命令
scp -r /home/hadoop/hadoop_home/hbase-1.2.6/ node1:/home/hadoop/hadoop_home/
scp -r ~/.profile node1:/home/hadoop/.profile
然后在node1下
source ~/.profile
scp -r /home/hadoop/hadoop_home/hbase-1.2.6/ node2:/home/hadoop/hadoop_home/
scp -r ~/.profile node2:/home/hadoop/.profile
然后在node2下
source ~/.profile
复制到node1、node对应的位置
4、启动与停止Hbase
(1)在Hadoop已经启动成功的基础上,输入start-hbase.sh,过几秒钟便启动完成,
输入jps命令查看进程是否启动成功,若 master上出现HMaster、HQuormPeer,
slave上出现HRegionServer、HQuorumPeer,就是启动成功了。
(2)输入hbase shell 命令 进入hbase命令模式
输入status命令可以看到如下内容,1个master,2 servers,3机器全部成功启动。
1 active master, 0 backup masters, 2 servers, 0 dead, 2.0000 average load
(3)接下来配置本地hosts,(前边配置过的无需再配置了)
编辑 C:\Windows\System32\drivers\etc的hosts文件,加入
192.168.0.235 master
192.168.0.225 node1
192.168.0.215 node2
在浏览器中输入http://master:16010就可以在界面上看到hbase的配置了
(4)当要停止hbase时输入stop-hbase.sh,过几秒后hbase就会被停止了。
输入
hbase shell
进入hbase界面
尖叫提示: 如果集群之间的节点时间不同步,会导致 regionserver 无法启动,抛出
ClockOutOfSyncException 异常。
修复提示:
a、同步时间服务 请参看帮助文档:《大数据帮助文档 1.0》重启即可
b、属性:hbase.master.maxclockskew 设置更大的值
<property>
<name>hbase.master.maxclockskew</name>
<value>180000</value>
<description>Time difference of regionserver from master</description>
</property>
创建表的例子

例如
create 'test','data' 建表
list 查看表
put 'test','row1','data:1','value1' 插入数据
put 'test','row2','data:2','value2'
put 'test','row3','data:3','value3'
然后查看表内容
scan 'test'

disable 'test' 移除表之前要设为禁用
drop 'test' 移除表
2.4、JavaAPI(或者新建空java工程,把hbase/lib下面所有包全部导出去放到java工程下lib包里,不需要maven)
2.4.1、安装 Maven 并配置环境变量
$ tar -zxf ~/softwares/installations/apache-maven-3.5.0-bin.tar.gz -C ~/modules/
在环境变量中添加:
MAVEN_HOME=/home/admin/modules/apache-maven-3.5.0
export PATH=$PATH:$MAVEN_HOME/bin
2.4.2、新建 Maven Project
新建项目后在 pom.xml 中添加依赖:
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-server</artifactId>
<version>1.2.6</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>1.2.6</version>
</dependency>
<dependency>
<groupId>jdk.tools</groupId>
<artifactId>jdk.tools</artifactId>
<version>1.8</version>
<scope>system</scope>
<systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
</dependency>

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class Main {
//1) 首先需要获取 Configuration 对象:
public static Configuration conf;
static {
//使用 HBaseConfiguration 的单例方法实例化
conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "master,node1,node2");
conf.set("hbase.zookeeper.property.clientPort", "2181");
conf.set("hbase.master", "master:60000");
}
public static void dropTable(String tableName) throws MasterNotRunningException, ZooKeeperConnectionException, IOException {
HBaseAdmin admin = new HBaseAdmin(conf);
if (isTableExist(tableName)) {
admin.disableTable(tableName);
admin.deleteTable(tableName);
System.out.println("表" + tableName + "删除成功!");
} else {
System.out.println("表" + tableName + "不存在!");
}
}
//向表中插入数据
public static void addRowData(String tableName, String rowKey, String columnFamily, String column, String value) throws IOException {
//创建 HTable 对象
HTable hTable = new HTable(conf, tableName);
//向表中插入数据
Put put = new Put(Bytes.toBytes(rowKey));
//向 Put 对象中组装数据
put.add(Bytes.toBytes(columnFamily), Bytes.toBytes(column), Bytes.toBytes(value));
hTable.put(put);
hTable.close();
System.out.println("插入数据成功");
}
//删除多行数据
public static void deleteMultiRow(String tableName, String... rows) throws IOException {
HTable hTable = new HTable(conf, tableName);
List<Delete> deleteList = new ArrayList<Delete>();
for (String row : rows) {
Delete delete = new Delete(Bytes.toBytes(row));
deleteList.add(delete);
}
hTable.delete(deleteList);
hTable.close();
}
//得到所有数据
public static void getAllRows(String tableName) throws IOException {
HTable hTable = new HTable(conf, tableName);
//得到用于扫描 region 的对象
Scan scan = new Scan();
//使用 HTable 得到 resultcanner 实现类的对象
ResultScanner resultScanner = hTable.getScanner(scan);
for (Result result : resultScanner) {
Cell[] cells = result.rawCells();
for (Cell cell : cells) {
//得到 rowkey
System.out.println("行键:" + Bytes.toString(CellUtil.cloneRow(cell)));
//得到列族
System.out.println("列族" + Bytes.toString(CellUtil.cloneFamily(cell)));
System.out.println("列:" + Bytes.toString(CellUtil.cloneQualifier(cell)));
System.out.println("值:" + Bytes.toString(CellUtil.cloneValue(cell)));
}
}
}
//得到某一行
public static void getRow(String tableName, String rowKey) throws IOException {
HTable table = new HTable(conf, tableName);
Get get = new Get(Bytes.toBytes(rowKey));
//get.setMaxVersions();显示所有版本
//get.setTimeStamp();显示指定时间戳的版本
Result result = table.get(get);
for (Cell cell : result.rawCells()) {
System.out.println("行键:" + Bytes.toString(result.getRow()));
System.out.println("列族" + Bytes.toString(CellUtil.cloneFamily(cell)));
System.out.println("列:" + Bytes.toString(CellUtil.cloneQualifier(cell)));
System.out.println("值:" + Bytes.toString(CellUtil.cloneValue(cell)));
System.out.println("时间戳:" + cell.getTimestamp());
}
}
//获取某一行指定“列族:列”的数据
public static void getRowQualifier(String tableName, String rowKey, String family, String qualifier) throws IOException {
HTable table = new HTable(conf, tableName);
Get get = new Get(Bytes.toBytes(rowKey));
get.addColumn(Bytes.toBytes(family), Bytes.toBytes(qualifier));
Result result = table.get(get);
for (Cell cell : result.rawCells()) {
System.out.println("行键:" + Bytes.toString(result.getRow()));
System.out.println("列族" + Bytes.toString(CellUtil.cloneFamily(cell)));
System.out.println("列:" + Bytes.toString(CellUtil.cloneQualifier(cell)));
System.out.println("值:" + Bytes.toString(CellUtil.cloneValue(cell)));
}
}
//主程序入口
public static void main(String args[]) throws IOException {
//System.out.println(isTableExist("student"));
//createTable("student2",new String[]{"info1","info2"});
//dropTable("student2");
//addRowData("student","1003","info","name","zhangy");
//deleteMultiRow("student",new String[]{"1002","1003"});
//getAllRows("student");
//getRow("student","1002");
getRowQualifier("student","1001","info","name");
}
//判断表是否存在
public static boolean isTableExist(String tableName) throws MasterNotRunningException, ZooKeeperConnectionException, IOException {
//在 HBase 中管理、访问表需要先创建 HBaseAdmin 对象
Connection connection = ConnectionFactory.createConnection(conf);
//HBaseAdmin admin = (HBaseAdmin) connection.getAdmin();
HBaseAdmin admin = new HBaseAdmin(conf);
return admin.tableExists(tableName);
}
//创建表
public static void createTable(String tableName, String... columnFamily) throws MasterNotRunningException, ZooKeeperConnectionException, IOException {
HBaseAdmin admin;
admin = new HBaseAdmin(conf);
//判断表是否存在
if (isTableExist(tableName)) {
System.out.println("表" + tableName + "已存在");
System.exit(0);
} else {
//创建表属性对象,表名需要转字节
HTableDescriptor descriptor = new HTableDescriptor(TableName.valueOf(tableName));
//创建多个列族
for (String cf : columnFamily) {
descriptor.addFamily(new HColumnDescriptor(cf));
}
//根据对表的配置,创建表
admin.createTable(descriptor);
System.out.println("表" + tableName + "创建成功!");
}
}
}
配置SSH所有机器之间免密码登录
(1)CentOS默认没有启动ssh无密登录,编辑 vim /etc/ssh/sshd_config,
去掉以下两行注释,开启Authentication免登陆。
#RSAAuthentication yes
#PubkeyAuthentication yes
如果是root用户下进行操作,还要去掉 #PermitRootLogin yes注释,允许root用户登录。
(2)输入命令,ssh-keygen -t rsa,生成key,一直按回车,
就会在/root/.ssh生成:authorized_keys id_rsa.pub id_rsa 三个文件,
这里要说的是,为了各个机器之间的免登陆,在每一台机器上都要进行此操作。
(3) 接下来,在master服务器,合并公钥到authorized_keys文件,
进入/root/.ssh目录,输入以下命令
cat id_rsa.pub>> authorized_keys 把master公钥合并到authorized_keys 中
ssh root@192.168.172.72 cat ~/.ssh/id_rsa.pub>> authorized_keys
ssh root@192.168.172.73 cat ~/.ssh/id_rsa.pub>> authorized_keys
把slave1、slave2公钥合并到authorized_keys 中
完成之后输入命令,把authorized_keys远程copy到slave1和slave2之中
scp authorized_keys 192.168.172.72:/root/.ssh/
scp authorized_keys 192.168.172.73:/root/.ssh/
最好在每台机器上进行chmod 600 authorized_keys操作,
使当前用户具有 authorized_keys的读写权限。
拷贝完成后,在每台机器上进行 service sshd restart 操作, 重新启动ssh服务。
之后在每台机器输入 ssh 192.168.172.xx,测试能否无需输入密码连接另外两台机器。
HBASE学习d端口master:16010(java操作hbase)https://www.cnblogs.com/junrong624/p/7323483.html的更多相关文章
- Hbase深入学习(六) Java操作HBase
Hbase深入学习(六) ―― Java操作HBase 本文讲述如何用hbase shell命令和hbase java api对hbase服务器进行操作. 先看以下读取一行记录hbase是如何进行工作 ...
- Java操作hbase总结
用过以后,总得写个总结,不然,就忘喽. 一.寻找操作的jar包. java操作hbase,首先要考虑到使用hbase的jar包. 因为咱装的是CDH5,比较方便,使用SecureCRT工具,远程连接到 ...
- java操作Hbase实例
所用HBase版本为1.1.2,hadoop版本为2.4 /* * 创建一个students表,并进行相关操作 */ import java.io.IOException; import java.u ...
- 错误: 找不到或无法加载主类 java操作hbase出错
用java操作hbase 利用maven引入hbase包后发现无法启动程序,然后网上说是包的冲突. 我引入了下面三个包然后程序就不能运行了. <dependency> <groupI ...
- Java 操作 HBase 教程
Java 操作 HBase 教程 一.简介 二.hbase-client 引入 三.连接操作 四.表操作 五.运行测试 相关博文原文地址: 博客园:美码师:HBase(2) Java 操作 HBase ...
- HBase之四--(1):Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询
1.搭建环境 新建JAVA项目,添加的包有: 有关Hadoop的hadoop-core-0.20.204.0.jar 有关Hbase的hbase-0.90.4.jar.hbase-0.90.4-tes ...
- HBase学习(二) 基本命令 Java api
一.Hbase shell 1.Region信息观察 创建表指定命名空间 在创建表的时候可以选择创建到bigdata17这个namespace中,如何实现呢? 使用这种格式即可:'命名空间名称:表名' ...
- 【hbase】——Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询
1.搭建环境 新建JAVA项目,添加的包有: 有关Hadoop的hadoop-core-0.20.204.0.jar 有关Hbase的hbase-0.90.4.jar.hbase-0.90.4-tes ...
- (转)Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询
1.搭建环境 新建JAVA项目,添加的包有: 有关Hadoop的hadoop-core-0.20.204.0.jar 有关Hbase的hbase-0.90.4.jar.hbase-0.90.4-tes ...
随机推荐
- Oracle函数日期转换成秒(时间戳)
SELECT TO_NUMBER(TO_DATE('2015-01-01 05:00:00', 'YYYY-MM-DD HH24:MI:SS') - TO_DATE( * * FROM DUAL; 秒 ...
- canvas绘制矩形
canvas绘制矩形 方法 fillRect(x, y, width, height) 画一个实心的矩形 clearRect(x, y, width, height) 清除一块儿矩形区域 stroke ...
- 使用被动混合内容的方式来跨越浏览器会阻断HTTPS上的非安全请求(HTTP)请求的安全策略抓包详解
/*通过传入loginId在token中附加loginId参数,方便后续读取指定缓存中的指定用户信息*/ GET /multitalk/takePhone.php?loginId=4edc153568 ...
- keil里面填数据
编译后寄存器和堆栈的内存数据可以直接写进去的. 寄存器,双击就可以,注意里面是十六进制 堆栈,也是十六进制,八位的 00 00 00 00 ,但这个是从右到左的,比如0x00000006 应该填 06 ...
- 搞点事情,使用node搭建反向代理
导语 最近有个需求,需要对业务管理后台的操作记录进行上报.一般这种上报需求都是又后台同学来做比较合适的.但是因为后台人力的原因.这个工作落到了我这个小前端的头上.这里记录下做这个需求踩的一些坑. 一. ...
- java设计模式之责任链模式(Chain of Responsibility)
转自:http://www.cnblogs.com/java-my-life/archive/2012/05/28/2516865.html 在阎宏博士的<JAVA与模式>一书中开头是这样 ...
- **python中的类和他的成员
面向对象是一种编程方式,此编程方式的实现基于对 类 和 对象 的使用. Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的. 在这里,为文章中使用 ...
- flutter photo_view的改造
app中对图片的浏览.缩放是一个常用的功能,目前有一款插件photo_view,基本上可以满足这些功能,但是有些地方需要修改完善 1.双击放大的时候,有三个状态,会有一个放大的中间状态,需要点击三次才 ...
- 去除winrar弹出购买许可证的提示
我们在使用winrar压缩包管理器时,经常会遇到弹出购买许可证的提示,影响了我们操作软件的友好性,接下来我们就来处理避免这种情况的再次发生.弹出购买许可证的图形如下: 处理方法如下: 新建一个记事本文 ...
- 使用C#通过Oracle.DataAccess连接Oracle,部署时需要注意版本问题
平时我们开发使用的是32位的PC机,所以安装的也是Oracle32位的客户端.但是一般服务器都是64位的,安装的也是64位的Oracle客户端,如果要部署使用Oracle.DataAccess连接Or ...