HBase的安装和基础使用
发布日期:2021-06-22 22:48:20
浏览次数:3
分类:技术文章
本文共 5953 字,大约阅读时间需要 19 分钟。
文章目录
平台:阿里云轻量级应用服务器
hadoop:3.2.2
hbase:2.3.5
一、安装HBase
(一)下载安装文件
- 下载HBase hbase各个版本安装包查看链接: HBase 2.3.5的安装包链接:
- 终端下载
wget https://downloads.apache.org/hbase/2.3.5/hbase-2.3.5-bin.tar.gz
- 解压并改名
sudo tar -zxf ./hbase-2.3.5-bin.tar.gz -C /usr/localsudo mv /usr/local/hbase-2.3.5 /usr/local/hbase
(二)配置环境变量
- 添加环境变量
sudo nano ~/.bashrc
- 使环境变量生效
source ~/.bashrc
(三)添加用户权限
- 系统的hadoop用户添加访问HBase目录的权限
cd /usr/localsudo chown -R hadoop ./hbase
(四)查看HBase版本信息
- 查看版本
/usr/local/hbase/bin/hbase version
二、HBase的配置
-
模式的选择
单机和伪分布式两者模式,本文章是对于单机模式的配置。 -
单机模式配置
编辑hbase-env.shsudo nano /usr/local/hbase/conf/hbase-env.sh
将对应的变量修改如下
export JAVA_HOME=/usr/lib/jvm/java-8-oracle export HBASE_CLASSPATH=/usr/local/hbase/conf export HBASE_MANAGES_ZK=true路径是自己对应的路径
配置hbase-site.xml文件
sudo nano /usr/local/hbase/conf/hbase-site.xml
内容修改如下
hbase.rootdir hdfs://localhost:9000/hbase hbase.cluster.distributed true hbase.unsafe.stream.capability.enforce false -
启动运行HBase
说明:启动前必须先启动hadoop,再启动hbase,顺序不能更改
启动过程
ssh localhostcd /usr/local/hadoop./sbin/start-dfs.shcd /usr/local/hbasebin/start-hbase.sh
-
jps查看进程
-
停止运行HBase
bin/stop-hbase.sh#停止运行hadoopcd /usr/local/hadoop./sbin/stop-dfs.sh
三、HBase常用Shell命令
- 进入shell模式
bin/hbase shell
- 在HBase中创建表 建表描述 创建一个表student,该表包含Sname、Ssex、Sage、Sdept、course等字段 建表方法
create 'student','Sname','Ssex','Sage','Sdept','course'
- 添加数据 put: 添加数据方法举例
put 'student','95001','Sname','LiYing'put 'student','95001','Ssex','male'put 'student','95001','Sage','22'put 'student','95001','Sdept','CS'put 'student','95001','course:math','80'
- 查看数据 get命令:用于查看表的某一个单元格数据; scan命令:用于查看某个表的全部数据。 查看数据举例
#查看某一行数据get 'student','95001'#查看表的全部数据scan 'student'
- 删除数据 delete:通常删除某一个单元格数据 deleteall:通常删除某一行数据
delete 'student','95001','Ssex'deleteall 'student','95001'
- 删除表 先让该表不可用,再删除表
disable 'student' drop 'student'
- 查询历史数据 创建一个新的表(括号内的含义表示指定保存的版本数)
create 'teacher',{ NAME=>'username',VERSIONS=>5}
添加数据put 'teacher','91001','username','Mary'put 'teacher','91001','username','Mary1'put 'teacher','91001','username','Mary2'put 'teacher','91001','username','Mary3'put 'teacher','91001','username','Mary4' put 'teacher','91001','username','Mary5'
查询历史数据举例get 'teacher','91001',{ COLUMN=>'username',VERSIONS=>5}get 'teacher','91001',{ COLUMN=>'username',VERSIONS=>3}
默认显示最新添加的数据 - 退出HBase数据库 退出shell命令
exit
四、HBase编程实践
(一)Eclipse中创建项目
- 打开Eclipse,选择File->New->other
- 进行工程的设置
(二)项目添加需要用到的JAR包
- 首先选中Classpath,然后点击Add External JARs
- 选择对应jar包所在的路径,我的路径为/usr/local/hbase/lib
(三)编写Java应用程序
- 创建一个class
- 编写代码
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.IOException;public class ExampleForHBase { public static Configuration configuration; public static Connection connection; public static Admin admin; public static void main(String[] args)throws IOException{ init(); createTable("student",new String[]{ "score"}); insertData("student","zhangsan","score","English","69"); insertData("student","zhangsan","score","Math","86"); insertData("student","zhangsan","score","Computer","77"); getData("student", "zhangsan", "score","English"); close(); } public static void init(){ configuration = HBaseConfiguration.create(); configuration.set("hbase.rootdir","hdfs://localhost:9000/hbase"); try{ connection = ConnectionFactory.createConnection(configuration); admin = connection.getAdmin(); }catch (IOException e){ e.printStackTrace(); } } public static void close(){ try{ if(admin != null){ admin.close(); } if(null != connection){ connection.close(); } }catch (IOException e){ e.printStackTrace(); } } public static void createTable(String myTableName,String[] colFamily) throws IOException { TableName tableName = TableName.valueOf(myTableName); if(admin.tableExists(tableName)){ System.out.println("talbe is exists!"); }else { TableDescriptorBuilder tableDescriptor = TableDescriptorBuilder.newBuilder(tableName); for(String str:colFamily){ ColumnFamilyDescriptor family = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes(str)).build(); tableDescriptor.setColumnFamily(family); } admin.createTable(tableDescriptor.build()); } } public static void insertData(String tableName,String rowKey,String colFamily,String col,String val) throws IOException { Table table = connection.getTable(TableName.valueOf(tableName)); Put put = new Put(rowKey.getBytes()); put.addColumn(colFamily.getBytes(),col.getBytes(), val.getBytes()); table.put(put); table.close(); } public static void getData(String tableName,String rowKey,String colFamily, String col)throws IOException{ Table table = connection.getTable(TableName.valueOf(tableName)); Get get = new Get(rowKey.getBytes()); get.addColumn(colFamily.getBytes(),col.getBytes()); Result result = table.get(get); System.out.println(new String(result.getValue(colFamily.getBytes(),col==null?null:col.getBytes()))); table.close(); } }
(四)编译运行程序
- 点击运行后,选择Run As->Java
- 出现问题
Failed to instantiate SLF4J LoggerFactory
解决方法 导入slf4j-api和log4j相应的jar包,最后是在导入jar包的时候,将对于目录下所有的包及子目录下的包都导入。 - 运行结果 控制台不断地打印输出,其中还存在一些错误。通过shell命令,可以对于hbase数据库进行查看,查看发现新建的表没有成功被创建。
五、参考资料
转载地址:https://blog.csdn.net/qq_43279579/article/details/116143489 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年03月22日 11时34分22秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
中国网建java发送短信_短信验证登陆-中国网建提供的SMS短信平台
2019-04-21
隔行变色java代码_jquery入门—选择器实现隔行变色实例代码
2019-04-21
webpack 入口文件 php,如何实现webpack多入口文件打包配置
2019-04-21
php tire树,Immutable.js源码之List 类型的详细解析(附示例)
2019-04-21
matlab转差频率控制,转差频率控制的异步电机调速系统的研究
2019-04-21
oracle错误1327,Oracle中的PGA监控报警分析(r11笔记第97天)
2019-04-21
php函数内的循环,PHP 循环列出目录内容的函数代码
2019-04-21
oracle树状排序,Oracle树状结构查询
2019-04-21
深度linux内核升级,深度操作系统 2020.11.11 更新发布:内核升级
2019-04-21
sql 拆解函数_SQL入门50题详解(含知识点讲解及代码运行步骤拆解)
2019-04-21
java和python交互 jni_Python基于pyjnius库实现访问java类
2019-04-21
mysql表名长度_JavaWeb之MySQL(一)
2019-04-21
mysql服务器语法_Mysql语法
2019-04-21