window环境搭建StarRocksFE节点

news2024/11/29 6:38:56

StarRocks部署–源码编译

前言

​ 注意:本文借用了一些其他文章的一些截图,同时自己做了具体的编译步骤,添加了一些新的内容

​ 目标: 编译StarRocks2.5.13版本FE节点代码,在本地window环境运行,可以访问到8030界面。

​ StarRocks的FE是使用Java语言开发的,这里咱们使用IntelliJ IDEA在Windows下进行FE开发环境的搭建。以下演示过程中所用组件的版本信息如下:

工具名称当前版本版本要求备注
linux服务器centos7
IntelliJ IDEAIntelliJ IDEA 2021.03不要过低
JDKOracle JDK 1.8.0_201jdk 1.8+
Mavenapache-maven-3.6.3无特别要求
DBeaver20.2无特别要求

前置说明

不同于一般的Maven类的项目,若我们直接从git中获取代码放入IDEA中是跑不起来的,我们需要先在StarRocks工程中手动运行maven命令生成一些Java代码来加入到FE工程中用于后续IDEA的编译。在Windows环境下,部分make命令和sh脚本可能无法执行,所以我们可以先在Docker镜像中进行StarRocks的编译,编译的过程中同样会生成那些我们需要用到的Java文件。

docker编译FE代码

一、安装Docker并下载编译镜像

为方便演示,我们使用虚拟机下的CentOS 7.6执行编译,虚拟机的配置建议在2核4G以上,内存过小编译过程中可能会出错,CPU核数过少则可能会导致编译时间较长。同时,编译过程中还务必保持网络畅通。

1.1安装Docker

在root用户下使用yum安装Docker:

[root@localhost ~]# yum -y install docker
1.2 启动Docker并设置开机自启
[root@localhost ~]# systemctl start docker

[root@localhost ~]# systemctl enable docker

Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
1.3 测试是否安装成功
[root@localhost ~]# docker run hello-world

Unable to find image 'hello-world:latest' locally

Trying to pull repository docker.io/library/hello-world ...

latest: Pulling from docker.io/library/hello-world

2db29710123e: Pull complete

Digest: sha256:cc15c5b292d8525effc0f89cb299f1804f3a725c8d05e158653a563f15e4f685

Status: Downloaded newer image for docker.io/hello-world:latest

 

Hello from Docker!

This message shows that your installation appears to be working correctly.

………………
1.4 配置Docker加速

由于网络原因,下载一个Docker官方镜像可能会需要很长的时间,甚至下载失败。为此,阿里云容器镜像服务ACR提供了官方的镜像站点,从而加速官方镜像的下载。具体配置方法参考阿里云文档:

https://help.aliyun.com/zh/acr/user-guide/accelerate-the-pulls-of-docker-official-images
1.5 拉取StarRocks编译镜像

我们等待拉取完成:

docker拉取2.5.13版本命令

docker pull starrocks/dev-env-centos7:2.5-latest

这里注意,我们编译的时候要选择和StarRocks大版本匹配的Docker镜像,例如:

starrocks branchimage tag
mainstarrocks/dev-env:main
branch-1.19starrocks/dev-env:branch-1.19
branch-2.0starrocks/dev-env:branch-2.0
branch-2.1starrocks/dev-env:branch-2.1

我们这里使用的是2.5.13下的代码,所以直接pull main对应的镜像:

[root@localhost ~]# docker pull starrocks/dev-env-centos7:2.5-latest

19884eca2d12: Pull complete

463267783751: Pull complete

Digest: sha256:ab44decbdc2eaaa98cdc4647380a492299b175a35b165d50e30f183495090123

Status: Downloaded newer image for docker.io/starrocks/dev-env-centos7:2.5-latest
1.6 查看镜像
[root@localhost ~]# docker images

REPOSITORY                    TAG       IMAGE ID         CREATED            SIZE

docker.io/starrocks/dev-env-centos7:2.5-latest   2.5-latest      76d14ca637fc     5 weeks ago        8.65 GB

docker.io/hello-world         latest    feb5d9fea6a5     8 weeks ago        13.3 kB

二、获取StarRocks源码,编译产生source文件

2.1 使用git命令获取代码(或者参考2.2上传代码到服务器上)

[root@localhost ~]# git clone https://github.com/StarRocks/starrocks.git

Cloning into 'starrocks'...

2.2 上传代码包

以通过浏览器访问github,然后从main分支下下载的最新代码为例,我们下载后得到源码包starrocks-2.5.13.zip,将其上传至CentOS中,文件路径为/root/starrocks-2.5.13.zip:

[root@localhost ~]# ls

starrocks-2.5.13.zip
执行解压:

[root@localhost ~]# unzip starrocks-2.5.13.zip
得到:/root/starrocks-2.5.13

[root@localhost ~]# ls

starrocks-2.5.13  starrocks-2.5.13.zip

2.3 挂载本地盘启动镜像

[root@localhost ~]# docker run -it -v /root/.m2:/root/.m2 -v /root/starrocks-2.5.13:/root/starrocks-2.5.13 --name starrocks-image --privileged=true -d starrocks/dev-env-centos7:2.5-latest

6ebc6a124fdf9d2c28b6eb2543e570775b2f3eabb7716120a3cefe8506ee9d2f

2.4 查看正在运行的容器

[root@localhost ~]# docker ps

2.5 登入容器

[root@localhost ~]# docker exec -it starrocks-image /bin/bash

[root@ed39d436e75c local]# [这里注意看主机名,确认已进入容器]

2.6 进入源码目录

[root@ed39d436e75c local]# cd /root/starrocks-2.5.13

[root@ed39d436e75c starrocks-2.5.13]#

2.7 编译FE和BE

[root@ed39d436e75c starrocks-2.5.13]# sh build.sh --clean --fe

这一步会下载较多依赖并执行编译,会非常耗时。运行容器时我们挂载本地.m2目录即是为了首次编译下载的依赖后面再编译时可以复用。这一步只要不报错,我们慢慢等待即可。编译完成后,产出文件在output/目录中:

在这里插入图片描述

[root@docker starrocks-2.5.13]# cd output/

[root@docker output]# ll

total 1992

drwxr-xr-x 6 root root      51 Nov  2 00:20 be

drwxr-xr-x 7 root root      72 Nov  2 00:20 

-rw-r--r-- 1 root root    3858 Nov  1 11:20 LICENSE.txt

-rw-r--r-- 1 root root 2032787 Nov  2 00:20 NOTICE.txt

drwxr-xr-x 4 root root      32 Nov  2 00:20 udf

在这里插入图片描述

需要把【/root/starrocks-2.5.13/fe/fe-core/target】目录下产生的generated-sources下载下来,后面会用到。

三、Idea里面配置

接下来我们准备FE工程代码,首先,我们FE中需要用到的git中的代码有:

在这里插入图片描述

例如我们将项目放在本地C盘下的starRocks文件夹中,fe工程主目录结构如下:

在这里插入图片描述

为了避免本地多网卡(虚拟网卡)导致的IP识别错误问题,我们需要在fe.conf中提前配置需要用的本地ip,例如我本地当前可与局域网通信的ip为192.168.1.10,则配置如下:

priority_networks = 192.168.1.40

注意:在配置ip后,还建议将本机的ip配置为固定ip,避免因电脑重启或者其他原因引起本地ip改变,进而导致FE无法正常启动。

fe.conf中的其他配置通常默认即可,若需要修改,可以参考“集群部署”章节进行调整。

在D:\soft\sourcecode\starrocks-2.5.13\fe\fe-core中创建target文件夹,然后我们再将前面生成的generated-sources目录同路径拷贝过来:

在这里插入图片描述

2、调试工程

打开IntelliJ IDEA(IDEA已配置jdk和maven),选择Open打开项目,找到我们本地工程的路径,

点击:Trust Project信任项目:

等待项目加载完成,期间会下载依赖,可能需要等待一些时间:

加载完毕,确认没有依赖缺失后,我们找到FE的项目启动文件:

fe/fe-core/src/main/java/com/starrocks/StarRocksFE.java
这里还取个巧,我们先运行Main方法让工程开始build:

在这里插入图片描述

在这里设置两个运行环境变量,路径都设置为当前工程的主目录D:\soft\sourcecode\starrocks-2.5.13\fe:

STARROCKS_HOME=D:/soft/sourcecode/starrocks-2.5.13/fe;PID_DIR=D:/soft/sourcecode/starrocks-2.5.13/fe;LOG_DIR=D:/soft/sourcecode/starrocks-2.5.13/fe

配置完成后点击“Apply”,等待工程Bulid完成和启动,当我们看到日志中出现:

notify new FE type transfer: MASTER

即表明工程已启动成功(若提示没有STARROCKS_HOME等,可以重新执行方法)。

在这里插入图片描述

再次提示:FE启动后会将当前的ip信息写入本地文件中,若ip改变会无法正常启动,所以务必要将本机的ip配置为静态ip。

3、访问FE

地址:

http://localhost:8030/

在这里插入图片描述

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

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

相关文章

频剪辑软件Corel VideoStudio 会声会影2024最新7大新全新功能解析

我很喜欢视频剪辑软件Corel VideoStudio 会声会影2024,因为它使用起来很有趣。它很容易使用,但仍然给你很多功能和力量。视频剪辑软件Corel VideoStudio 会声会影2023让我与世界分享我的想法!“这个产品的功能非常多,我几乎没有触…

【数据中台】开源项目(2)-Wormhole流式处理平台

Wormhole 是一个一站式流式处理云平台解决方案(SPaaS - Stream Processing as a Service)。 Wormhole 面向大数据流式处理项目的开发管理运维人员,致力于提供统一抽象的概念体系,直观可视化的操作界面,简单流畅的配置管…

《已解决: ImportError: Keras requires TensorFlow 2.2 or higher 问题》

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页: 🐅🐾猫头虎的博客🎐《面试题大全专栏》 🦕 文章图文并茂&#x1f996…

vscode 使用git提交前端代码

1、项目初始化git 如果是从其他地方拉的代码,把.git文件删除,再重新初始化。 2、提交代码 2.1、提交本地库 2.2、提交远程仓库 2.2.1、创建远程仓库 2.2.2、提交远程仓库–master分支 在本地添加远程仓库,设置别名为origin git remote…

首届教师案例教学竞赛一等奖作品上线至和鲸社区,快来学习!

细心的朋友可能已经发现,近期和鲸社区的频道页上线了一个新专区——“优秀参赛作品专区”。 图.和鲸社区频道页 迄今为止,和鲸参与/支持了 500 多场专业数据科学竞赛,包括面向气象、金融、医学、海洋等不同领域的,面向从业者、科学…

为你的项目加上微信登录(个人开发)

当我们开发个人项目的时候,为了用户登录的便捷性,经常会给我们的项目加上一些除了注册之外的方式,其中最常见的就是微信登录,但作为个人开发者,是无法使用微信的授权登录的,但是通过微信公众号可以获得同样…

【nginx】 实现限流

这里写自定义目录标题 前言正文nginx实现限流并发限制限制单IP并发数量限制单主机服务并发数量 速率限制限流效果 注意疑问参考链接 小结 前言 好久不见,还算为时不晚。最近一个月经历了工作的调整,技术栈从Java转向了Go和Python, 工作显得更忙了些&…

JavaScript基础—for语句、循环嵌套、数组、冒泡排序、综合案例—根据数据生成柱形图

版本说明 当前版本号[20231126]。 版本修改说明20231126初版 目录 文章目录 版本说明目录JavaScript 基础第三天笔记for 语句for语句的基本使用循环嵌套倒三角九九乘法表 数组数组是什么?数组的基本使用定义数组和数组单元访问数组和数组索引数据单元值类型数组长…

测试工程师必学看系列之Jmeter_性能测试:性能测试的流程和术语

性能测试的流程 一、准备工作 1、系统基础功能验证 一般情况下,只有在系统基础功能测试验证完成、系统趋于稳定的情况下,才会进行性能测试,否则性能测试是无意义的。2、测试团队组建 根据该项目的具体情况,组建一个几人的性能测试…

Linux面试题(三)

目录 34、du 和 df 的定义,以及区别? 35、awk 详解。 36、当你需要给命令绑定一个宏或者按键的时候,应该怎么做呢? 37、如果一个 linux 新手想要知道当前系统支持的所有命令的列表,他需要怎么做? 38、…

23年几个能打的UE4游戏技术选型

近期发现很多的精力放在游戏的整体技术选型以及产生的结果上面,所以回顾下几个游戏的选型和结果; 这里一个是自己玩游戏的画面流畅度的直接感受,以及一直非常喜爱的评测“数毛社”,digital foundry; 23年目前来看&…

【NeRF】3、MobileR2L | 移动端实时的神经光场(CVPR2023)

论文:Real-Time Neural Light Field on Mobile Devices 代码:https://github.com/snap-research/MobileR2L 出处:CVPR2023 贡献: 设计了一套移动端实时的 R2L 网络结构 MobileR2L,在 iphone13 上渲染一张 1008x756…

前端学习--React(4)路由

一、认识ReactRouter 一个路径path对应一个组件component,当我们在浏览器中访问一个path,对应的组件会在页面进行渲染 创建路由项目 // 创建项目 npx create router-demo// 安装路由依赖包 npm i react-router-dom// 启动项目 npm run start 简单的路…

【JavaEE】多线程 (2) --线程安全

目录 1. 观察线程不安全 2. 线程安全的概念 3. 线程不安全的原因 4. 解决之前的线程不安全问题 5. synchronized 关键字 - 监视器锁 monitor lock 5.1 synchronized 的特性 5.2 synchronized 使⽤⽰例 1. 观察线程不安全 package thread; public class ThreadDemo19 {p…

LeetCode中链表类题目十条血泪经验总结-全程干货

文章目录 前言干货经验汇总第一梯队第二梯队 力扣代表性链表题目推荐 前言 链表是以节点(node)存储的链式存储结构,一个node包含一个data域(存放数据)和一个next域(存放下一个node的指针)&…

Co-DETR:DETRs与协同混合分配训练论文学习笔记

论文地址:https://arxiv.org/pdf/2211.12860.pdf 代码地址: GitHub - Sense-X/Co-DETR: [ICCV 2023] DETRs with Collaborative Hybrid Assignments Training 摘要 作者提出了一种新的协同混合任务训练方案,即Co-DETR,以从多种标…

Web框架与Django简介

Web框架与Django简介 一、Web应用的组成 我们为了开发一款Web软件首先要了解什么才是Web应用软件呢? 对于传统的应用软件来说,基本都是部署单机使用,而Web应用软件就不一样,Web应用软件是基于B/S架构的,B和S都在不同…

Vue常见的实现tab切换的两种方法

目录 方法一&#xff1a;事件绑定属性绑定 效果图 完整代码 方法二&#xff1a;属性绑定 动态组件 component标签 效果图 完整代码 方法一&#xff1a;事件绑定属性绑定 效果图 完整代码 <!DOCTYPE html> <html lang"en"> <head><meta c…

Qt 样式表

QLabel&#xff0c;应用于Widget&#xff1a; .QLabel {background-color:pink; }.QLabel[warnlevel_1] {border:5px solid yellow; }.QLabel[warnlevel_2] {border:5px solid red; } QWidget{background-color:rgb(54,54,54); }QLineEdit{border: 1px solid #ABCDA0; /…

8 增强型脉宽调制模块ePWM

文章目录 8.1 PWM控制基本原理8.2 PWM结构及组成单位8.3 时基模块TB8.3.1 ePWM时基模块作用8.3.2 时基模块的关键信号和寄存器 8.5 动作模块 AC8.5.1 动作模块的作用8.5.2 动作模块关键信号与寄存器 8.11 PWM模块输出8.11.1 单边非对称波形8.11.2 单边非对称脉冲波形 8.1 PWM控…