Macos M1 IDEA本地调试 HBase 2.2.2

# 1. 前提

执行

mvn clean package assembly:single -DskipTests

没问题,并在hbase-assembly/target目录下生成hbase-2.2.2-bin.tar.gz 文件夹

证明Maven 下载依赖没问题

1.1 报错 1

这里应该是报错找不到

com.google.protobuf:protoc:exe:osx-aarch_64:3.5.1

可能存在问题的点是protocol 下载时,需要将总pom.xml文件和hbase-protocal(应该是)目录下的

          <configuration><protocArtifact>com.google.protobuf:protoc:${external.protobuf.version}:exe:osx-x86_64</protocArtifact><protoSourceRoot>${basedir}/src/main/protobuf/</protoSourceRoot><clearOutputDirectory>false</clearOutputDirectory><checkStaleness>true</checkStaleness></configuration>

位置的版本改成

:exe:osx-x86_64

因为protobuf 3.5.1 版本,没有支持M1芯片的版本

参考博客

## 1.2. 报错2

/Users/kturnura/Code/Source/hbase-2.2.2/hbase-common/src/main/java/org/apache/hadoop/hbase/util/Bytes.java:56:16
java: 程序包sun.misc不存在

修改项目Project Structure

在这里插入图片描述

需要将这两个位置的版本都改成Java 8

2. 启动HMaster

源码的conf目录移动到hbase-server项目目录下

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

将其标记为Resources Root 目录(此处博主已标记)

配置hbase-site.xml

    <property>
<!--        # 此配置用来存放HBase的数据目录,你不需要事先创建HBase目录,只用保证其父级目录存在。-->
<!--        # 当然,你也可以随意指定这个目录。--><name>hbase.rootdir</name><value>/Users/kturnura/Code/Source/hbase-2.2.2</value></property><property>
<!--        # 此配置是为了跳过版本检查--><name>hbase.defaults.for.version.skip</name><value>true</value></property>

主要是配置hbase.defaults.for.version.skip属性,否则会有一个报错

配置HMaster 启动

在这里插入图片描述

  1. java8 模块

  2. 选择hbase-server子项目

  3. 配置HMaster 所在包位置

  4. HMaster启动选项start

  5. JVM参数

    1. 这个在这里

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

启动时,不需要在本地启动Zookeeper

启动时,不需要在本地启动Zookeeper

启动时,不需要在本地启动Zookeeper

!外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

启动成功,此处hbase的一些数据生成在了hbase-2.2.2目录下

在这里插入图片描述

3. Java API 连接HBase代替 HBase Shell

由于Hbase 2.2.2 的jruby 版本不支持 M1 芯片,详情请看

可以在编译后导入新的Jruby版本使用HBase Shell ,但源码调试比较麻烦

参考博客2

本文暂时使用HBaseUtils 来测试HMaster的连接

这里使用了一个很简单的HBaseUtils

package org.apache.hbase;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.filter.FilterList;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.util.Pair;import java.io.IOException;
import java.util.List;public class HBaseUtils {private static Connection connection;static {Configuration configuration = HBaseConfiguration.create();configuration.set("hbase.zookeeper.quorum", "localhost");configuration.set("hbase.zookeeper.property.clientPort","2181");try {connection = ConnectionFactory.createConnection(configuration);}catch (IOException e) {e.printStackTrace();}}/*** 创建Hbase表* @param tableName: 表名* @param columnFamilies : 列族的数组*/public static boolean createTable(String tableName, List<String> columnFamilies) {try {HBaseAdmin admin = (HBaseAdmin) connection.getAdmin();if (admin.tableExists(TableName.valueOf(tableName))) {return false;}TableDescriptorBuilder tableDescriptor = TableDescriptorBuilder.newBuilder(TableName.valueOf(tableName));columnFamilies.forEach(columnFamily -> {ColumnFamilyDescriptorBuilder cfDescriptorBuilder = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes(columnFamily));cfDescriptorBuilder.setMaxVersions(1);ColumnFamilyDescriptor familyDescriptor = cfDescriptorBuilder.build();tableDescriptor.setColumnFamily(familyDescriptor);});admin.createTable(tableDescriptor.build());} catch (IOException e) {e.printStackTrace();}return true;}/*** 删除Hbase表* @param tableName: 要删除的表名*/public static boolean deleteTable(String tableName) {try {HBaseAdmin admin = (HBaseAdmin) connection.getAdmin();// 删除表前需要先禁用表admin.disableTable(TableName.valueOf(tableName));admin.deleteTable(TableName.valueOf(tableName));} catch (Exception e) {e.printStackTrace();}return true;}public static boolean isExist(String tableName) {try {HBaseAdmin admin = (HBaseAdmin) connection.getAdmin();if(!admin.tableExists(TableName.valueOf(tableName))){// 表不存在,创建表return false;}else {return true;}} catch (IOException e) {throw new RuntimeException(e);}}/*** 检索全表** @param tableName 表名*/public static ResultScanner getScanner(String tableName) {try {Table table = connection.getTable(TableName.valueOf(tableName));Scan scan = new Scan();return table.getScanner(scan);} catch (IOException e) {e.printStackTrace();}return null;}public static void main(String[] args) {String tableName = "RemoteSensing";// 新建表System.out.println("Test");List<String> columnFamilies = Arrays.asList("info", "data");boolean table = HBaseUtils.createTable(tableName, columnFamilies);System.out.println("表创建结果:" + table);}}

可以运行两次Main方法,看第一次是否创建成功,第二次是否创建失败

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/52185.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

入门STM32—外部中断

外部中断的存在使得微控制器能够及时响应外部事件&#xff0c;避免频繁的轮询操作&#xff0c;从而提高系统的实时性、效率和低功耗性能。 1.什么是外部中断&#xff1f; 外部中断是指微控制器接收到外部引脚的信号变化时触发的中断。STM32F103系列微控制器支持多个外部中断线…

鸿蒙(API 12 Beta3版)【DRM会话管理(C/C++)】数字版权保护开发

DRM会话管理&#xff08;MediaKeySession&#xff09;支持媒体密钥管理及媒体解密等&#xff0c;MediaKeySession实例由系统管理里的MediaKeySystem实例创建和销毁。 开发步骤 导入NDK接口&#xff0c;接口中提供了DRM相关的属性和方法&#xff0c;导入方法如下。 #include &…

学习嵌入式第二十九天

ipc进程间通信方式 PC&#xff0c;即进程间通信&#xff08;Inter-Process Communication&#xff09;&#xff0c;是操作系统中不同进程之间交换数据的一种机制。以下是一些常见的IPC方式&#xff1a; 管道&#xff1a;用于父子进程或兄弟进程之间的通信。消息队列&#xff…

selenium-java实现自动登录跳转页面

如果要一直刷新一个网页&#xff0c;总不能人工一直去点&#xff0c;所以想到大学时候学过selenium技术&#xff0c;写个脚本来一直刷新&#xff0c;因为经常写java语言&#xff0c;所以选用java语言来写 实验环境 注意&#xff0c;需要先准备好Google浏览器和Chrome-Driver驱…

ffmpeg6.1集成Plus-OpenGL-Patch滤镜

可参考上一篇文章。ffmpeg6.1集成ffmpeg-gl-transition滤镜-CSDN博客 安装思路大致相同&#xff0c; 因为 Plus-OpenGL-Patch也是基于 ffmpeg 4.x 进行开发的&#xff0c;所以在高版本上安装会有很多报错。 这是我安装后的示例&#xff0c;需要安装教程或者改代码可私信我。 …

记录一次 Redis 优化发送数据(使用管道批量传送)

一 项目背景 此前的项目中&#xff0c;鉴于客户方服务器的安全配置对 MQ 中间件有所限制&#xff0c;我们只得采用 Redis 的 list 作为简易的 MQ 来传送报文数据。然而&#xff0c;近段时间客户关闭了相关端口&#xff0c;导致大量数据积压&#xff0c;需要进行补发。在补发过程…

大数据背景下基于Python的牛油果销售数据可视化分析

注&#xff1a;源码在最后&#xff0c;只是一次实验记录&#xff0c;不合理的地方自行修改。 一 研究背景及意义 21世纪以来&#xff0c;随着科学技术的进步&#xff0c;人们的生活水平也随之大幅提升提高。在科技和经济快速发展下&#xff0c;全球已经进入了大数据时代。大数…

8.21-部署eleme项目

1.设置主从从mysql57服务器 &#xff08;1&#xff09;配置主数据库 [rootmsater_5 ~]# systemctl stop firewalld[rootmsater_5 ~]# setenforce 0[rootmsater_5 ~]# systemctl disable firewalldRemoved symlink /etc/systemd/system/multi-user.target.wants/firewalld.serv…

使用 Fyne 构建 GUI 应用:设置标签文本和自增计数器

引言 Fyne 是一个用 Go 语言编写的跨平台 GUI 框架&#xff0c;它提供了一套丰富的组件来帮助开发者快速构建出漂亮的用户界面。在本文中&#xff0c;我们将通过一个简单的案例来演示如何使用 Fyne 创建 GUI 应用程序&#xff0c;该程序包含设置标签文本和自增计数器的功能。 …

「字符串」前缀函数|KMP匹配:规范化next数组 / LeetCode 28(C++)

目录 概述 思路 核心概念&#xff1a;前缀函数 1.前缀函数 2.next数组 1.考研版本 2.竞赛版本 算法过程 构建next数组 匹配过程 复杂度 Code 概述 为什么大家总觉得KMP难&#xff1f;难的根本就不是这个算法本身。 在互联网上你可以见到八十种KMP算法的next数组…

项目1 物流仓库管理系统

一、项目概述 本项目旨在开发一个功能全面的物流仓库管理系统&#xff0c;以数字化手段优化仓库作业流程&#xff0c;提高管理效率。系统集成了前端用户交互界面与后端数据处理逻辑&#xff0c;涵盖了从用户注册登录、订单管理、货单跟踪到用户信息维护等多个核心业务模块。通…

基于django的学生作业提交与管理系统,有管理后台,可作为课设使用

在本项目中&#xff0c;我们设计并实现了一个基于Django框架的学生作业提交与管理系统&#xff0c;旨在为教师和学生提供一个高效、便捷的作业管理平台。Django作为一个高效的Web框架&#xff0c;因其强大的功能和灵活的架构&#xff0c;使得本系统能够快速开发并扩展。 系统功…

Maven的简单使用

Maven使用 Maven的作用1. 自动构建标准化的java项目结构(1) 项目结构① 约定目录结构的意义② 约定大于配置 (2)项目创建坐标坐标的命名方法&#xff08;约定&#xff09; 2. 帮助管理java中jar包的依赖(1) 配置使用依赖引入属性配置 (2) maven指令(3) 依赖的范围(4) 依赖传递(…

【密码学】密钥管理:②密钥分配

一、密钥分配的定义 密钥分配是密钥管理生命周期中最重要的部分&#xff0c;密钥分配方案研究的是密码系统中密钥的分发和传送问题。从本质上讲&#xff0c;密钥分配为通信双方建立用于信息加密、解密签名等操作的密钥&#xff0c;以实现保密通信或认证签名等。 &#xff08;1…

win10蓝牙只能发送,无法接收

给win10升了级&#xff0c;到22H2&#xff0c;蓝牙出了问题 以前接收&#xff0c;就是默认直接就可以接收。现在只能发送&#xff0c;无法接收。 在网上找了很多办法都没奏效&#xff0c;目前的方法是&#xff0c; 每次接收&#xff0c;都要操作一次&#xff0c;而不是自动接…

leetcode-538. 把二叉搜索树转换为累加树

题目描述 给出二叉 搜索 树的根节点&#xff0c;该树的节点值各不相同&#xff0c;请你将其转换为累加树&#xff08;Greater Sum Tree&#xff09;&#xff0c;使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。 提醒一下&#xff0c;二叉搜索树满足下列约束…

计量自动化终端上行通信规约

物理层 TCP 和 UDP 的传输接口 该类接口的登录链接和心跳检测采用链路测试服务&#xff0c;链路测试周期可设定。 参见 TCP/IP 协议规范。 串行通信传输接口 字节传输按异步方式进行&#xff0c;它包含 8 个数据位、1 个起始位“0”、1 个偶校验位 P 和 1 个停止位“1”。 …

Android Studio 动态表格显示效果

最终效果 一、先定义明细的样式 table_row.xml <?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_h…

集团数字化转型方案(四)

集团数字化转型方案通过全面部署人工智能&#xff08;AI&#xff09;、大数据分析、云计算和物联网&#xff08;IoT&#xff09;技术&#xff0c;创建了一个智能化的企业运营平台&#xff0c;涵盖从业务流程自动化、实时数据监控、精准决策支持&#xff0c;到个性化客户服务和高…

实验七:独立按键实验

硬件电路图和题目; LED1-LD8是 P2口8个管脚 mian.c #include<reg52.h>sbit But1=P3^1 ; sbit But2=P3^0 ; sbit But3=P3^2 ; sbit But4=P3^3 ;sbit LED1 =P2^0 ; sbit LED2 =P2^1 ; sbit LED3 =P2^2 ; sbit LED4 =P2^3 ;#define PRESS_1 1 #define PRESS_…