环境说明

软件版本说明
CentOS7.6-
CDH版本Cloudera Express 5.16.2 (JDK 1.8)对应hadoop2.6.0
Hbase社区版 2.0.5非CDH parcels自带, 与phoenix适配器版本: phoenix-5.0.0-HBase-2.0-server.jar
Phoenix社区版 5.0.0-

问题描述

[root@dn3 ~]# cd /opt/module/

[root@dn3 module]# ll
drwxr-xr-x 5  502 gam
es 4096 Jun 27  2018 phoenix

[root@dn3 module]# cd phoenix

[root@dn3 phoenix]# /usr/bin/python2 bin/sqlline.py dn3,dn4,dn5:2181

执行上述命令,启动phoenix, 长时间卡住, 但不报错:

引发原因List

可能的原因有:

  1. cdh的hadoop与hbase2.0.5的版本是否匹配;
  2. hbase的meta元数据信息是否已经损坏;
  3. hbase与phoenix的版本是否匹配,详情其官方.

解决方法

经查询, 上述原因的1、3都不是我这边的触发原因.

考虑到此前我本地通过ClouderaManager, 已经安装过parcels版本的hbase(版本号: 1.2.0+cdh5.16.2).
新安装的2.x版本, 可能与老版本在元数据上并不兼容.

在这里插入图片描述

在这里插入图片描述

由于本地是使用VMWare搭建的虚拟机集群, 且hbase数据仅用于实验目的. 故采用暴力方式处理(如果是prod, 且hbase中已经存储了重要数据, 请仔细查找直接原因, 同时做好数据备份):

  1. 删除hdfs目录 /hbase;
  2. 删除ZooKeeper上的 /hbase 节点.
  3. 重启Hbase集群;

执行完上述操作后, 再次重新运行phoenix 命令行启动命令, 即连接上hbase了:

[root@dn3 phoenix]# /usr/bin/python2 bin/sqlline.py dn3,dn4,dn5:2181
Setting property: [incremental, false]
Setting property: [isolation, TRANSACTION_READ_COMMITTED]
issuing: !connect jdbc:phoenix:dn3,dn4,dn5:2181 none none org.apache.phoenix.jdbc.PhoenixDriver
Connecting to jdbc:phoenix:dn3,dn4,dn5:2181
22/07/14 01:37:36 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Connected to: Phoenix (version 5.0)
Driver: PhoenixEmbeddedDriver (version 5.0)
Autocommit status: true
Transaction isolation: TRANSACTION_READ_COMMITTED
Building list of tables and columns for tab-completion (set fastconnect to true to skip)...
136/136 (100%) Done
Done
sqlline version 1.2.0
0: jdbc:phoenix:dn3,dn4,dn5:2181>

Phoenix使用注意事项:
在Phoenix中,默认情况下,库名、表名、字段名等会自动转换为大写,如果要使用小写,请使用双引号, 比如"name".

在Phoenix下的所有操作, 前提都是Hbase中不存在的库、表, 然后在Phoenix中以sql的方式来创建hbase中的库、表、记录等.
如果Hbase中已经存在了表, 在Phoenix中如何映射, 有专门篇章来讲解.

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐