基于 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定位标准解读(…...
别再乱调了!3ds Max里Gamma 2.2和LUT到底怎么设?一份给材质渲染与后期合成的设置指南
3ds Max色彩管理终极指南:Gamma 2.2与LUT设置全解析 当你在3ds Max中完成一个精美的材质渲染,却发现最终输出到合成软件时颜色完全不对——这种崩溃感每个3D艺术家都经历过。问题的根源往往在于色彩管理流程中的Gamma和LUT设置不当。本文将带你深入理解这…...
Docker Compose实战指南
本文基于 Docker Compose V2,所有内容均来自 Docker 官方文档和生产环境实践。全文约 14800 字,建议收藏后阅读。读完本文,你将从 Docker Compose 新手成长为能够独立部署复杂多容器应用的专家。一、Docker Compose 核心概念与底层原理1.1 什…...
别慌!Elasticsearch报错‘all shards failed‘?先检查这个字段的fielddata设置
从all shards failed到精准定位:Elasticsearch字段级故障排查实战 当你面对Elasticsearch突然抛出的search_phase_execution_exception错误时,那种"所有分片都挂了"的提示往往让人心头一紧。这种报错就像医生告诉你"全身系统故障"一…...
别再手动推导了!用MATLAB的firpm函数5分钟搞定数字微分器设计(附完整代码)
5分钟用MATLAB打造高精度数字微分器:从理论到实战的firpm函数指南 在信号处理领域,数字微分器就像一位隐形的工程师,默默完成着速度估计、边缘检测、生物医学信号分析等关键任务。传统手动设计方法不仅耗时费力,还容易在系数计算和…...
如何用SOCD Cleaner优化键盘输入:提升游戏操作精度的终极指南
如何用SOCD Cleaner优化键盘输入:提升游戏操作精度的终极指南 【免费下载链接】socd Key remapper for epic gamers 项目地址: https://gitcode.com/gh_mirrors/so/socd 你是否在玩格斗游戏时因为同时按下W和S键导致角色卡顿?是否在射击游戏中急停…...
从温控到小车:深入浅出聊聊PID里I(积分)和D(微分)到底管啥用?
从温控到小车:深入浅出聊聊PID里I(积分)和D(微分)到底管啥用? 想象一下,你正在用热水器调节洗澡水温。把旋钮拧到"38℃"位置后,水温却始终在36℃徘徊——这种永远差一点的…...
如何在25分钟内完成700+飞书文档批量导出:告别手动操作的低效时代
如何在25分钟内完成700飞书文档批量导出:告别手动操作的低效时代 【免费下载链接】feishu-doc-export 飞书文档导出服务 项目地址: https://gitcode.com/gh_mirrors/fe/feishu-doc-export 还在为飞书文档迁移而头疼吗?每天花费数小时手动复制粘贴…...
云原生基础设施 + SRE 落地项目:从平台建设到稳定性工程闭环
云原生基础设施 + SRE 落地项目:从平台建设到稳定性工程闭环 在很多团队里,“上 Kubernetes”“接 Prometheus”“做自动化发布”往往是分散推进的:基础设施团队负责集群,研发团队负责应用,运维团队负责告警,出了故障再临时拉群协同。这样做的问题不是技术组件不够先进,…...
DialogX底部对话框与菜单:BottomDialog和BottomMenu的进阶用法
DialogX底部对话框与菜单:BottomDialog和BottomMenu的进阶用法 【免费下载链接】DialogX 💬 DialogX dialog box component library, easy to use, more customizable, more scalable, easy to achieve a variety of dialog boxes. DialogX对话框组件库&…...
爬虫对抗:ZLibrary 反爬机制实战分析
引言ZLibrary 作为全球规模领先的数字文献共享平台,累计收录超千万册电子书籍与学术文献,在知识传播与资源获取领域具备广泛影响力,同时也因海量公开可访问数据成为网络爬虫的重点目标。网络爬虫作为自动化数据采集的核心工具,可高…...
