AWS云服务器EC2实例实现ByConity快速部署

1. 前言

亚马逊是全球最大的在线零售商和云计算服务提供商。AWS云服务器在全球范围内都备受推崇,被众多业内人士誉为“云计算服务的行业标准”。在国内,亚马逊AWS也以其卓越的性能和服务满足了众多用户的需求,拥有着较高的市场份额和竞争力。同时也是出海用户的首选云服务。

作为一款主流的云服务提供商,亚马逊云服务器EC2在系统安全性和稳定性上表现十分出色。

1700459699926

ByConity 是字节跳动面向现代数据栈的一款开源数仓系统,应用了大量数据库成熟技术,如列存引擎,MPP 执行,智能查询优化,向量化执行,Codegen,indexing,数据压缩,适合用于 Online Analytical Processing(OLAP) 场景和轻载数仓的场景,包括但不限于交互式分析、实时 APP 监控、流数据处理和分析等。

下面我们通过详细图文内容介绍如何在亚马逊EC2云服务器上上部署并运行ByConity

2. 购买并使用亚马逊EC2云服务器示例

2.1 EC2实例购买教程

因为AWS为国外云服务提供商,和目前国内主流的云服务提供商的购买流程略有差别,所以在此一并介绍如何购买并使用AWS云服务器EC2实例

进入AWS官网: https://aws.amazon.com/cn/

image-20231112002011948

点击左上角登录,进入控制台,然后在控制台首页访问EC2

image-20231112003243548

在EC2控制台可以看到我们已经购买的云服务器和一些相关信息

image-20231112003450911

若没有购买相关Ec2实例,若用户为初次使用亚马逊云服务相关资源,则可以免费获得一年的Ec2实例资源使用权限。

下面将展示如何领取或者购买EC2实例资源

点击启动实例

在启动之前需要选择服务器所在区域,区域选择在控制台左上角

image-20231112003653970

关于镜像选择,大家可以根据自己的实际需求选择合适的镜像,这里我选择的是Redhat,然后选择符合买条件的免费套餐,这样我们就可以免费获取相关资源,当然,免费资源的规格类型为1c-1g,如果需要更高规格服务器,则需要付费购买。

image-20231112003937885

选择完操作系统后,我们需要选择密钥对来进行后续的登录操作,若没有密钥对,则需要手动创建新的密钥对

image-20231112004146744

创建好新的秘钥对后需要将其pem文件下载到本地,方便后续进行远程ssh登录。

AWS的云服务器EC2的创建阶段和国内其他云服务器厂商的购买流程配置上也有些区别,比如,无法在初始化时直接通过root密码登录,需要通过密钥对登录后设置root密码

在网络配置阶段,选择启用公网IP,同时根据自己的业务需求设置不同的安全组

image-20231112004724781

存储则需要根据业务需求进行选择,我这里选择40GB(后续可以更改)

image-20231112004915284

全部填写完后,选择启动实例

image-20231112004940180

2.2 EC2实例初始化配置

在购买完EC2实例后,我们返回控制台进行查看,可以看到刚才购买的云服务器正在初始化,等待大约5分钟后会初始化完成

image-20231112005220142

点击进去查看详情

可以看到此云服务器的详细配置信息

image-20231112005403219

在登录之前,需要确认安全组已经放通相关端口

2.3 远程登录EC2服务器实例

每个人的喜好不太一样,常用的shell登录终端有很多,这里我使用的是Finalshell

Finalshell是一款强大的终端工具,它集成了SSH客户端、X服务器和Unix命令集工具箱。在Windows操作系统下,MobaXterm可以帮助用户轻松地连接并操作Linux服务器。

Finalshell具有以下特点:

  1. 集成了SSH客户端:通过内嵌SSH客户端,可以快速建立与Linux服务器的安全连接,实现远程登录和管理。
  2. 支持X服务器:集成了X服务器,可以在Windows上运行Unix/Linux环境,并支持图形界面应用程序。
  3. 提供Unix命令集:集成了Unix命令集(GNU/Cygwin),用户可以在Windows上运行大多数Linux命令,实现高效的终端操作。
  4. 多终端视窗:支持开启多个终端视窗,可以同时连接多个Linux服务器,并进行灵活的终端管理。
  5. 可扩展性强:可以通过集成插件来扩展功能,例如运行Gcc、Perl、Curl、Tcl/Tk/Expect等程序。
  6. 免费开源:分为免费开源版和收费专业版,用户可以免费使用开源版,并根据需求选择专业版以获得更多的功能和更好的技术支持。

新建ssh登录,填写EC2实例的ip和用户名并通过刚才设置的密钥对进行登录

image-20231112010418783

登录成功

3. 配置部署

3.1 资源准备

硬件规格中,Worker 和 Server 的本地磁盘主要用于存储写入时的临时数据和日志文件,同时 Worker 的本地磁盘中还会存储数据的 Cache,因此磁盘的大小需要根据配置的 DiskCache 大小及写入的数据量来确定。

我的部署见下图,为满足各个组件性能要求

组件名称CPU内存硬盘网络实例数
TSO11G5G千兆网卡1
Server832G100G千兆网卡1
Worker416G110G千兆网卡1
DaemonManager12G40G千兆网卡1
ResourceManager12G40G千兆网卡1

整体云资源部署在亚马逊云服务器

按照上述配置要求和 目录2的操购买不同规格的云服务

3.2 服务器基础配置

3.2.1 在本地环境中安装和设置 kubectl

kubectl是Kubernetes命令行工具,可以通过命令行界面或脚本与Kubernetes集群进行通信,并执行各种操作,包括:

  1. 部署和管理应用程序:kubectl可以使用YAML或JSON文件定义和创建Kubernetes资源对象,例如部署、服务、Pod、副本集、配置映射等。可以使用kubectl创建、更新、删除和查看这些资源,以及监控其状态和日志。
  2. 扩展和管理集群:kubectl可以通过命令行管理Kubernetes集群的各个组件,例如节点、命名空间、存储卷、服务账户等。可以使用kubectl扩展集群的规模、添加或删除节点,以及执行与集群管理相关的操作。
  3. 调试和故障排除:kubectl提供了各种命令和选项,用于诊断和调试Kubernetes集群中的问题。可以查看Pod的日志、执行进入容器的命令、获取集群事件等。
  4. 资源监控和调整:kubectl可以用于查看Kubernetes集群和资源的状态、监控资源使用情况、扩展或缩减资源的副本数量等。

kubectl提供了强大的功能和灵活性,能够有效地管理和操作Kubernetes集群。

用以下命令下载最新发行版:

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

下载 kubectl 校验和文件:

curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"

基于校验和文件,验证 kubectl 的可执行文件:

echo "$(cat kubectl.sha256)  kubectl" | sha256sum --check

验证通过时,输出为:

kubectl: OK

验证失败时,sha256 将以非零值退出,并打印如下输出:

kubectl: FAILED
sha256sum: WARNING: 1 computed checksum did NOT match

安装 kubectl

sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

执行测试,以保障安装的版本是最新的:

kubectl version --client

为了让 kubectl 能发现并访问 Kubernetes 集群,你需要一个 kubeconfig 文件, 该文件在 kube-up.sh 创建集群时,或成功部署一个 Minikube 集群时,均会自动生成。 通常,kubectl 的配置信息存放于文件 ~/.kube/config 中。

通过获取集群状态的方法,检查是否已恰当地配置了 kubectl:

kubectl cluster-info

如果返回一个 URL,则意味着 kubectl 成功地访问到集群。

3.2.2 在本地环境中安装 helm

Helm使用称为chart的包装格式。chart是描述相关的一组Kubernetes资源的文件集合。单个chart可能用于部署简单的东西,比如memcached pod,或者一些复杂的东西,比如完整的具有HTTP服务,数据库,缓存等的Web应用程序堆栈。

chart通过创建为特定目录树的文件,将它们打包到版本化的压缩包,然后进行部署。

Helm有安装脚本可以自动拉取最新的Helm版本并在 本地安装

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
 ./get_helm.sh

如果想直接执行安装,运行

curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
3.2.3 安装kind和Docker
3.2.3.1 kind安装

Kind,即Kubernetes-in-docker的简写,是一个使用docker容器作为“节点”实现部署K8S集群环境的工具。Kind工具主要用于Kubernetes本身的测试,目前很多需要部署到Kubernetes环境测试的项目在CI流程中,都会选择用Kind快速创建一个Kubernetes环境,然后运行相关的测试用例,之后删除即可。

输入下面命令安装kind

curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.9.0/kind-linux-amd64
chmod +x ./kind
mv ./kind /usr/local/bin/kind
3.2.3.2 Docker安装

安装docker-ce

yum clean all yum makecache fastyum -y install docker-ce

通过systemctl启动服务

systemctl start docker

4 .本地 Kubernetes 集群

4.1 使用 Kind 配置本地 Kubernetes 集群

将代码保存在本地

git clone git@github.com:ByConity/byconity-deploy.git
cd byconity-deploy

image-20230925011431614

创建一个 1-control-plane、3-worker 的 Kubernetes 集群。.

kind create cluster --config examples/kind/kind-byconity.yaml

image-20230925011741975

测试以确保本地 kind 集群已准备就绪:

kubectl cluster-info

image-20230925011803850

4.2 初始化 Byconity 演示集群

# Install with fdb CRD first
helm upgrade --install --create-namespace --namespace byconity -f ./examples/kind/values-kind.yaml byconity ./chart/byconity --set fdb.enabled=false

# Install with fdb cluster
helm upgrade --install --create-namespace --namespace byconity -f ./examples/kind/values-kind.yaml byconity ./chart/byconity

image-20230925011935150

等到所有 Pod 准备就绪。

kubectl -n byconity get po

image-20230925012009282

进行测试

kubectl -n byconity exec -it sts/byconity-server -- bash
root@byconity-server-0:/# clickhouse client

172.16.1.1 :)

执行sql

CREATE DATABASE IF NOT EXISTS test;
USE test;
DROP TABLE IF EXISTS test.lc;
CREATE TABLE test.lc (b LowCardinality(String)) engine=CnchMergeTree ORDER BY b;
INSERT INTO test.lc SELECT '0123456789' FROM numbers(100000000);
SELECT count(), b FROM test.lc group by b;
DROP TABLE IF EXISTS test.lc;
DROP DATABASE test;

5.总结

ByConity是基于ClickHouse构建的一个为现代云架构变化设计的数据仓库。将其部署在亚马逊EC2云服务器上能够得到稳定流畅的运行,它采用云原生架构设计,满足数据仓库用户对灵活扩展、读写分离、资源隔离和强数据一致性的需求。同时,它提供了卓越的查询和写入性能。采用大量成熟的OLAP技术,如列存储引擎、MPP执行、智能查询优化、向量化执行、Codegen、索引和数据压缩;同时也为云场景和存储计算分离架构做了特殊技术创新。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

小小发票拦住出海“巨头”,合合信息智能文档处理技术助力企业重塑财务管理流程

作为连接企业采购、生产、运营、销售等经营行为的枢纽,财务系统的数字化、智能化升级近年来变得愈发重要。发票的录入、存储关乎企业应收账款管理和税务规范,通过技术手段提升发票管理的精准度与效率,也成为了财务数字化的关键环节。 近日&a…

MTK Pump Express 快速充电原理分析

1 MTK PE 1.1 原理 在讲正文之前,我们先看一个例子。 对于一块电池,我们假设它的容量是6000mAh,并且标称电压是3.7V,换算成Wh(瓦时)为单位的值是22.3Wh(6000mAh*3.7V);普通的充电器输出电压电流是5V2A(10W)&#xff0c…

ModStartCMS v7.6.0 CMS备份恢复优化,主题开发文档更新

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议,免费且不限制商业使用。 功能特性 丰富的模块市…

『亚马逊云科技产品测评』活动征文|构建生态农场家禽系统

『亚马逊云科技产品测评』活动征文|构建生态农场家禽系统 授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 Developer Centre, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道 前…

.NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径

📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创📢作者格言:新的征程,我们面对的不仅仅是技术还有人心,人心不可测,海水不可量,唯有技术,才是深沉黑夜中的一座闪烁的灯塔 !背景介绍 突然闯到路径搜索算法里…

智能货柜:无人零售行业的新宠

智能货柜:无人零售行业的新宠 与早期的传统自动售货机相比,智能货柜的投放场景正呈现多样化的趋势。除了人流密集的公共场所,一些办公室、健身房等室内场景也成为商家争相争夺的热门位置。 其次,在无人零售行业中,许多…

2023-简单点-树莓派picamera2介绍和要点

picamera2 requirements简介preview windows预览窗口GtGL preview【有 x windwows情况下 硬件加速】Qt preview【软件加速】DRM/KMS preview【没有 x windwows情况下】NULL previewpreview的一些其他特征 配置camera配置的细节 捕捉图像capture images切换模式 requirements简…

【MySQL】细谈SQL高级查询

文章目录 一、前言 & 准备工作二、简易高级查询⚙ 准备工作1、查询每一门课程及其先修课程2、查询和“刘涛”在一个班级的学生的信息3、查询选修了‘计算机基础’课的学生的学号、姓名③ 连接方式④ 子查询嵌套方式 4、查询没有选修课程的学生的信息① 子查询in方式② 子查…

typora整理markdown笔记

效果 符号 快捷键 斜体 * * ctrlB(代表同时按) 加粗 ** ** ctrlI 竖线 > 超链接 清除样式 ctrl\ 图片 ![图片描述][图片绝对路径/相对路径] 如何在Typora中插入图像? ➊ 使用Markdown语法 (不推荐,太慢) ➋ 直接拷贝图…

nvm 安装后出现的各种问题解决方法

1、nvm安装后无法安装node版本 首先需要确定删除了电脑上所有的node版本,如果不会卸载那么请移步到 查看 ,我们是要通过nvm来下载node环境,所以之前下载的node有冲突,所以都要清除。 2、下载后的nvm环境,无法使用node、…

Linux入门攻坚——6、磁盘管理——分区及文件系统管理

磁盘管理主要涉及分区的管理,以及分区后的文件系统管理。 磁盘的使用大体要分两步: 文件系统也是一个软件,根是自引用的。 文件系统的全局结构:物理格式: 一个磁盘刚被生产出来的时候,它里边没有划分扇区…

[OpenAirInterface-01]什么是OAI?OAI在github中源代码的存放结构

文章目录 前言:什么是软件无线电SDR第1章 什么是OAI(OpenAirInterface)1.1 来自官网的概述1.2 来自github的概述1.3 来自我的解读 第2章 什么是OSA2.1 OSA概述:2.2 OSA联盟职责2.3 OpenAirInterface github成员的角色 第3章 常见的…

服务号转为订阅号可以吗

服务号和订阅号有什么区别?服务号转为订阅号有哪些作用?很多小伙伴想把服务号改为订阅号,但是不知道改了之后具体有什么作用,今天跟大家具体讲解一下。首先我们知道服务号一个月只能发四次文章,但是订阅号每天都可以发…

赴日开发工程师是做什么的?

日本的软件开发岗位对技术要求和沟通能力都有较高的要求,赴日开发工程师主要负责软件设计、开发和测试,包括编写代码、测试代码和修复漏洞等工作。开发人员必须对软件架构、设计模式和业务逻辑有深入的理解,并能做出合适的技术决策。 当然&a…

探索SPI:深入理解原理、源码与应用场景

文章目录 一、初步认识1、概念2、工作原理3、作用场景 二、源码分析1、ServiceLoader结构2、相关字段3、核心方法 三、案例connector连接器小案例1、新建SPI项目2、创建扩展实现项目1-MongoDB3、创建扩展实现项目2-Oracle4、测试 Spring应用1、创建study工程2、创建forlan-test…

系列六、多线程集合不安全

一、多线程List集合不安全 1.1、List集合不安全案例代码 /*** Author : 一叶浮萍归大海* Date: 2023/11/20 12:38* Description: 多线层环境下List集合不安全案例代码*/ public class NotSafeListMainApp {public static void main(String[] args) {List<String> list …

使用JDK自带java.util.logging.Logger引起的冲突问题

现象&#xff1a; 应用代码如下&#xff1a; import javax.script.ScriptEngineManager;ScriptEngineManager manager new ScriptEngineManager(); manager.getEngineByName("JavaScript"); 在TongWeb8上运行出错&#xff0c;日志如下&#xff1a; Servlet.servi…

反渗透水处理成套设备有哪些

反渗透水处理成套设备主要包括反渗透装置、预处理系统、控制系统等部分。 反渗透装置&#xff1a;反渗透水处理设备的核心部分&#xff0c;由反渗透膜、压力容器、膜组件等组成。反渗透膜是一种高分子材料制成的半透膜&#xff0c;能够截留水中的溶解盐、有机物、细菌等杂质&a…

Docker部署MinIO对象存储服务器结合Cpolar实现远程访问

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 文章目录 前言1. Docker 部署MinIO2. 本地访问MinIO3. Linux安装Cpolar4. 配置MinIO公网地址5. 远…

同城跑腿服务预约小程序的作用是什么

随着生活质量逐渐提升&#xff0c;围绕人们生活的行业或产品非常多&#xff0c;同时互联网赋能下&#xff0c;也出现了很多便捷人们日常消费的场景&#xff0c;如外卖服务、快递服务等。 跑腿仅依赖微信私聊及电话预约是很低效且容易出错及造成极大工作压力的&#xff0c;同时…