基于 HBase Phoenix 构建实时数仓(3)—— Phoenix 安装
目录
一、主机规划
二、Phoenix 安装
1. 解压、配置环境
2. 将 phoenix-server-hbase-2.5-5.1.3.jar 文件复制到 HBase 的 lib 目录中
3. 重启 HBase 集群
4. 安装验证
(1)连接 HBase
(2)视图映射
(3)表映射
参考:
一、主机规划
继续上一篇,本篇介绍在同一环境中安装 Phoenix,并连接上篇部署的 HBase 集群。
所需安装包:Phoenix-5.1.3
下表描述了四个节点上分别将会运行的相关进程。Phoenix 相对于 HBase 来说就是一个支持 SQL 的客户端软件,为能在集群环境中任何节点上都能使用 Phoenix 命令行,在所有节点上都安装。简便起见,安装部署过程中所用的命令都使用操作系统的 root 用户执行。
| 节点 进程 | node1 | node2 | node3 | node4 |
| Phoenix | * | * | * | * |
二、Phoenix 安装
在所有节点上执行下面第1、2步操作,在 node1 节点上执行第3步操作。
1. 解压、配置环境
# 解压
tar -zxvf phoenix-hbase-2.5-5.1.3-bin.tar.gz# 编辑 /etc/profile 文件
vim /etc/profile# 添加下面两行
export PHOENIX_HOME=/root/phoenix-hbase-2.5-5.1.3-bin/
export PHOENIX_CLASSPATH=$PHOENIX_HOME
export PATH=$PHOENIX_HOME/bin:$PATH# 加载生效
source /etc/profile
2. 将 phoenix-server-hbase-2.5-5.1.3.jar 文件复制到 HBase 的 lib 目录中
cp $PHOENIX_HOME/phoenix-server-hbase-2.5-5.1.3.jar $HBASE_HOME/lib/
3. 重启 HBase 集群
stop-hbase.sh
start-hbase.sh
4. 安装验证
(1)连接 HBase
# 连接,参数为 Zookeeper 节点
sqlline.py node1,node2,node3
# 列出表
!table
输出:
[root@vvml-yz-hbase-test~]#sqlline.py node1,node2,node3
Setting property: [incremental, false]
Setting property: [isolation, TRANSACTION_READ_COMMITTED]
issuing: !connect -p driver org.apache.phoenix.jdbc.PhoenixDriver -p user "none" -p password "none" "jdbc:phoenix:node1,node2,node3"
Connecting to jdbc:phoenix:node1,node2,node3
24/03/07 14:44:45 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
24/03/07 14:44:45 WARN impl.MetricsConfig: Cannot locate configuration: tried hadoop-metrics2-phoenix.properties,hadoop-metrics2.properties
Connected to: Phoenix (version 5.1)
Driver: PhoenixEmbeddedDriver (version 5.1)
Autocommit status: true
Transaction isolation: TRANSACTION_READ_COMMITTED
sqlline version 1.9.0
0: jdbc:phoenix:node1,node2,node3> !table
+-----------+-------------+------------+--------------+---------+-----------+---------------------------+----------------+-------------+-+
| TABLE_CAT | TABLE_SCHEM | TABLE_NAME | TABLE_TYPE | REMARKS | TYPE_NAME | SELF_REFERENCING_COL_NAME | REF_GENERATION | INDEX_STATE | |
+-----------+-------------+------------+--------------+---------+-----------+---------------------------+----------------+-------------+-+
| | SYSTEM | CATALOG | SYSTEM TABLE | | | | | | |
| | SYSTEM | CHILD_LINK | SYSTEM TABLE | | | | | | |
| | SYSTEM | FUNCTION | SYSTEM TABLE | | | | | | |
| | SYSTEM | LOG | SYSTEM TABLE | | | | | | |
| | SYSTEM | MUTEX | SYSTEM TABLE | | | | | | |
| | SYSTEM | SEQUENCE | SYSTEM TABLE | | | | | | |
| | SYSTEM | STATS | SYSTEM TABLE | | | | | | |
| | SYSTEM | TASK | SYSTEM TABLE | | | | | | |
+-----------+-------------+------------+--------------+---------+-----------+---------------------------+----------------+-------------+-+
0: jdbc:phoenix:node1,node2,node3>
默认情况下,直接在 HBase 中创建的表,通过 Phoenix 是查看不到的。如上一篇在 hbase shell 中创建的 test 表,这里没有显示。如果要在 Phoenix 中操作直接在 HBase 中创建的表,则需要在 Phoenix 中进行表的映射。映射方式有两种:视图映射和表映射。
(2)视图映射
Phoenix 创建的视图是只读的,所以只能用来做查询,无法通过视图对源数据进行修改等操作。
0: jdbc:phoenix:node1,node2,node3> create view "test"(pk varchar primary key,"cf"."a" varchar,"cf"."b" varchar,"cf"."c" varchar,"cf"."d" varchar,"cf"."e" varchar);
No rows affected (0.178 seconds)
0: jdbc:phoenix:node1,node2,node3> !table
+-----------+-------------+------------+--------------+---------+-----------+---------------------------+----------------+-------------+-+
| TABLE_CAT | TABLE_SCHEM | TABLE_NAME | TABLE_TYPE | REMARKS | TYPE_NAME | SELF_REFERENCING_COL_NAME | REF_GENERATION | INDEX_STATE | |
+-----------+-------------+------------+--------------+---------+-----------+---------------------------+----------------+-------------+-+
| | SYSTEM | CATALOG | SYSTEM TABLE | | | | | | |
| | SYSTEM | CHILD_LINK | SYSTEM TABLE | | | | | | |
| | SYSTEM | FUNCTION | SYSTEM TABLE | | | | | | |
| | SYSTEM | LOG | SYSTEM TABLE | | | | | | |
| | SYSTEM | MUTEX | SYSTEM TABLE | | | | | | |
| | SYSTEM | SEQUENCE | SYSTEM TABLE | | | | | | |
| | SYSTEM | STATS | SYSTEM TABLE | | | | | | |
| | SYSTEM | TASK | SYSTEM TABLE | | | | | | |
| | | test | VIEW | | | | | | |
+-----------+-------------+------------+--------------+---------+-----------+---------------------------+----------------+-------------+-+
0: jdbc:phoenix:node1,node2,node3> select * from "test";
+------+--------+--------+--------+--------+--------+
| PK | a | b | c | d | e |
+------+--------+--------+--------+--------+--------+
| row1 | value1 | | | | |
| row2 | | value2 | | | |
| row3 | | | value3 | | |
| row4 | | | | value4 | |
| row5 | | | | | value5 |
+------+--------+--------+--------+--------+--------+
5 rows selected (0.021 seconds)
0: jdbc:phoenix:node1,node2,node3>
HBase 严格区分大小写,创建视图时表名、列族、列名需要用双引号括起来。
(3)表映射
0: jdbc:phoenix:node1,node2,node3> drop view "test";
No rows affected (0.011 seconds)
0: jdbc:phoenix:node1,node2,node3> create table "test"(pk varchar primary key,"cf"."a" varchar,"cf"."b" varchar,"cf"."c" varchar,"cf"."d" varchar,"cf"."e" varchar) column_encoded_bytes=0;
5 rows affected (5.676 seconds)
0: jdbc:phoenix:node1,node2,node3> upsert into "test" values('a','1','2','3','4','5');
1 row affected (0.007 seconds)
0: jdbc:phoenix:node1,node2,node3> select * from "test";
+------+--------+--------+--------+--------+--------+
| PK | a | b | c | d | e |
+------+--------+--------+--------+--------+--------+
| a | 1 | 2 | 3 | 4 | 5 |
| row1 | value1 | | | | |
| row2 | | value2 | | | |
| row3 | | | value3 | | |
| row4 | | | | value4 | |
| row5 | | | | | value5 |
+------+--------+--------+--------+--------+--------+
6 rows selected (0.013 seconds)
0: jdbc:phoenix:node1,node2,node3> !quit
Closing: org.apache.phoenix.jdbc.PhoenixConnection
[root@vvml-yz-hbase-test~]#
表映射方式时,数据更新是对源表的操作,删除表也会删除 HBase 中的源表。如果只做查询,强烈建议使用视图方式映射,删除视图不影响 HBase 源数据。Phoenix 4.10 版本后,对列映射做了优化,采用一套新的机制,不再基于列名方式映射到 HBase。如果必须要表映射,则需要禁用列映射规则(column_encoded_bytes=0),但这会降低查询性能。
参考:
- Apache Phoenix 映射已存在 HBase 表,查询不到数据
- https://phoenix.apache.org/installation.html
相关文章:
基于 HBase Phoenix 构建实时数仓(3)—— Phoenix 安装
目录 一、主机规划 二、Phoenix 安装 1. 解压、配置环境 2. 将 phoenix-server-hbase-2.5-5.1.3.jar 文件复制到 HBase 的 lib 目录中 3. 重启 HBase 集群 4. 安装验证 (1)连接 HBase (2)视图映射 (3…...
Python IDE
Python IDE 本文为大家推荐几款款不错的 Python IDE(集成开发环境),比较推荐 PyCharm,当然你可以根据自己的喜好来选择适合自己的 Python IDE。 PyCharm PyCharm 是由 JetBrains 打造的一款 Python IDE。 PyCharm 具备一般 Pyt…...
Vue3和Vue2的区别
Vue 3 是 Vue.js 的下一个主要版本,它引入了许多新特性和优化,与 Vue 2 相比有一些显著的区别。以下是一些主要的区别: 性能提升: Vue 3 提供了更快的虚拟 DOM,减少了渲染和更新时间。使用 Proxy 重写了响应式系统,使…...
【内推】新风口-大模型独角兽公司minimax
先上内推链接: MiniMax社招内推码: AK3XEJ6 投递链接: https://vrfi1sk8a0.jobs.feishu.cn/s/iFY5WFgE 岗位:前端、后端、算法,基础架构都有,大量hc 公司介绍: 国内同时拥有文本、语音、视觉三种基础大模型能力的创业…...
基于单片机的水平角度仪系统设计
目 录 摘 要 I Abstract II 引 言 1 1控制系统设计 3 1.1系统方案设计 3 1.2系统工作原理 4 2硬件设计 6 2.1单片机 6 2.1.1单片机最小系统 6 2.1.2 STC89C52单片机的性能 7 2.2角度采集电路 8 2.2.1 ADXL345传感器的工作原理 9 2.2.2 ADXL345传感器倾角测量的原理 9 2.2.3 AD…...
Haproxy 负载均衡集群
一. Haproxy 1. Haproxy 介绍 HAProxy 是法国开发者威利塔罗 (Willy Tarreau) 在2000年使用C语言开发的一个开源软件,是一款具备高并发(一万以上)、高性能的TCP和HTTP负载均衡器,支持基于cookie的持久性,自动故障切换,支持正则…...
微服务知识03
1、ES搜索引擎,高性能的分布式搜索引擎,底层基于Lucene 主要用于应用程序中的搜索系统 日志收集 2、基础概念 3、ES处理流程 5、下载中文分词器 Releases infinilabs/analysis-ik GitHub 6、分词模式 最细粒度拆分、智能分词 7、Elaticsearch配置流程 (1)把文件拖进…...
JPEG照片被误删除如何恢复?学会这个方法就够了
JPG/JPEG是一种后缀名为“.jpg”或“.jpeg”的图形格式。它是存储照片图像的常用格式,因此我们可以使用数码相机、手机或其他设备来获取大量的JPG/JPEG文件。有时,我们会遇到由于意外删除、格式化驱动器或其他未知原因导致 JPEG 文件丢失的情况。无论哪种…...
红黑树的学习
红黑树 红黑树出自一种平衡的二叉查找树,是计算机科学中中用到的一种数据结构 1972年出现,当时被称之为平衡二叉B树。后来,1978年被修改为如今的红黑树 他是一种特殊的二叉查找树,红黑树的每一个节点上都有存储表示节点的颜色 …...
C# OpenCvSharp DNN FreeYOLO 人脸检测
目录 效果 模型信息 项目 代码 下载 C# OpenCvSharp DNN FreeYOLO 人脸检测 效果 模型信息 Inputs ------------------------- name:input tensor:Float[1, 3, 192, 320] --------------------------------------------------------------- Outp…...
单例九品--第五品
单例九品--第五品 上一品引入写在前边代码部分1代码部分2实现方式评注与思考下一品的设计思考 上一品引入 第四品中可能会因为翻译单元的链接先后顺序,造成静态初始化灾难的问题。造成的原因是因为存在调用单例对象前没有完成定义的问题,这一品将着重解…...
Lwip之TCP服务端示例记录(1对多)
前言 实现多个客户端同时连接初步代码结构已经实现完成(通过轮训的方式) // // Created by shchl on 2024/3/8. // #if 1#include <string.h> #include "lwip/api.h" #include "FreeRTOS.h" #include "task.h" #include "usart.h&…...
哲理:为什么你要学习编程这项技能
有一家饭店的大厨,烧得一手好菜,经过口碑相传,客人从五湖四海闻名而来。然而这对饭店的老板来说,并不单纯是一个好消息。因为客人不是奔着饭店,而是奔着大厨的手艺来的。老板必须想办法留住这位大厨,否则他…...
【机器学习300问】30、准确率的局限性在哪里?
一、什么是准确率? 在解答这个问题之前,我们首先得先回顾一下准确率的定义,准确率是机器学习分类问题中一个很直观的指标,它告诉我们模型正确预测的比例,即 还是用我最喜欢的方式,举例子来解释一下…...
融资项目——网关微服务
1. 网关的路由转发功能 在前后端分离的项目中,网关服务可以将前端的相关请求转发到相应的后端微服务中。 2. 网关微服务的配置 首先需要创建一个网关微服务,并添加依赖。 <!-- 网关 --><dependency><groupId>org.springframework.cl…...
飞驰云联CEO朱旭光荣获“科技领军人才”称号
2024年2月29日,苏州工业园区“优化营商环境暨作风效能建设大会”成功举办,会上公布了2023年度苏州工业园区第十七届第一批金鸡湖科技领军人才名单,Ftrans飞驰云联创始人兼CEO朱旭光先生凭借在数据安全以及文件交换领域取得的突出成果…...
Dockerfile的使用,怎样制作镜像
Docker 提供了一种更便捷的方式,叫作 Dockerfile docker build命令用于根据给定的Dockerfile构建Docker镜像。 docker build命令参数: --build-arg,设置构建时的变量 --no-cache,默认false。设置该选项,将不使用Build …...
外包干了5天,技术退步明显。。。。。
在湖南的一个安静角落,我,一个普通的大专生,开始了我的软件测试之旅。四年的外包生涯,让我在舒适区里逐渐失去了锐气,技术停滞不前,仿佛被时间遗忘。然而,生活的转机总是在不经意间降临。 与女…...
leetcode2834--找出美丽数组的最小和
1. 题意 求一个序列和。序列 a a a满足: 大小为 n n n ∀ 0 ≤ i , j < n , i ≠ j , a i a j ≠ t a r g e t \forall 0\le i,j \lt n,i \ne j,a_ia_j \ne target ∀0≤i,j<n,ij,aiajtarget 找出美丽数组的最小和 2. 题解 贪心的构造这个序列。…...
【NR 定位】3GPP NR Positioning 5G定位标准解读(七)- GNSS定位方法
前言 3GPP NR Positioning 5G定位标准:3GPP TS 38.305 V18 3GPP 标准网址:Directory Listing /ftp/ 【NR 定位】3GPP NR Positioning 5G定位标准解读(一)-CSDN博客 【NR 定位】3GPP NR Positioning 5G定位标准解读(…...
IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
作为测试我们应该关注redis哪些方面
1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...
Bean 作用域有哪些?如何答出技术深度?
导语: Spring 面试绕不开 Bean 的作用域问题,这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开,结合典型面试题及实战场景,帮你厘清重点,打破模板式回答,…...
