一、Amoro介绍

2024 年 3 月 11 日,Amoro 项目顺利通过投票,正式进入 Apache 软件基金会(ASF,Apache Software Foundation)的孵化器,成为 ASF 的一个孵化项目。

Amoro 是建立在开放数据湖表格式之上的湖仓管理系统。2020 年开始, 网易大数据团队在公司内基于 Apache Iceberg 进行湖仓一体架构的探索,孵化了流式湖仓服务 Arctic。

官网:https://amoro.apache.org/

二、安装

注:更新情况下先暂停服务,然后备份

1、下载amoro包(root用户)

cd /root/wang

wget https://******/amoro/amoro-0.7.0-gaotu.tar.gz

2、解压(root用户)

tar -zxf amoro-0.7.0-gaotu.tar.gz

mv amoro-0.7.0 amoro

3、下载mysql jar包

cd /root/wang/amoro/lib

MYSQL_JDBC_DRIVER_VERSION=8.0.30
wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/${MYSQL_JDBC_DRIVER_VERSION}/mysql-connector-java-${MYSQL_JDBC_DRIVER_VERSION}.jar

4、建amoro库

mysql -h127.0.0.1 -uroot -p123456

CREATE DATABASE IF NOT EXISTS amoro;

5、修改配置信息(可以直接复制以前的配置文件)

cd /root/wang/amoro/conf

修改项:server-expose-host(本机内网ip)、bind-port:(服务端口9091)、 url: jdbc:mysql(mysql账号密码信息)

ams:
admin-username: admin
admin-password: admin
server-bind-host: "0.0.0.0"
server-expose-host: "本地ip地址" thrift-server:
max-message-size: 104857600 # 100MB
selector-thread-count: 2
selector-queue-size: 4
table-service:
bind-port: 1260
worker-thread-count: 20
optimizing-service:
bind-port: 1261 http-server:
bind-port: 9092
rest-auth-type: basic refresh-external-catalogs:
interval: 180000 # 3min
thread-count: 10
queue-size: 1000000 refresh-tables:
thread-count: 10
interval: 60000 # 1min self-optimizing:
commit-thread-count: 10
runtime-data-keep-days: 30
runtime-data-expire-interval-hours: 1 optimizer:
heart-beat-timeout: 60000 # 1min
task-ack-timeout: 30000 # 30s
polling-timeout: 3000 # 3s
max-planning-parallelism: 1 # default 1 blocker:
timeout: 60000 # 1min # optional features
expire-snapshots:
enabled: true
thread-count: 10 clean-orphan-files:
enabled: true
thread-count: 10 clean-dangling-delete-files:
enabled: true
thread-count: 10 sync-hive-tables:
enabled: true
thread-count: 10 data-expiration:
enabled: false
thread-count: 10
interval: 1d auto-create-tags:
enabled: true
thread-count: 3
interval: 60000 # 1min # database:
# type: derby
# jdbc-driver-class: org.apache.derby.jdbc.EmbeddedDriver
# url: jdbc:derby:/root/amoro/derby-persistent;create=true
# connection-pool-max-total: 20
# connection-pool-max-idle: 16
# connection-pool-max-wait-millis: 1000 # MySQL database configuration.
database:
type: mysql
jdbc-driver-class: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/amoro?useUnicode=true&characterEncoding=UTF8&autoReconnect=true&useAffectedRows=true&allowPublicKeyRetrieval=true&useSSL=false
username: root
password: 123456
connection-pool-max-total: 20
connection-pool-max-idle: 16
connection-pool-max-wait-millis: 1000 # Postgres database configuration.
# database:
# type: postgres
# jdbc-driver-class: org.postgresql.Driver
# url: jdbc:postgresql://127.0.0.1:5432/db
# username: user
# password: passwd
# connection-pool-max-total: 20
# connection-pool-max-idle: 16
# connection-pool-max-wait-millis: 1000 terminal:
backend: local
local.spark.sql.iceberg.handle-timestamp-without-timezone: false # Kyuubi terminal backend configuration.
# terminal:
# backend: kyuubi
# kyuubi.jdbc.url: jdbc:hive2://127.0.0.1:10009/ # High availability configuration.
# ha:
# enabled: true
# cluster-name: default
# zookeeper-address: 192.168.88.170:2181,192.168.88.104:2182,192.168.88.164:2183 containers:
- name: localContainer
container-impl: org.apache.amoro.server.manager.LocalOptimizerContainer
properties:
export.JAVA_HOME: "/usr/local/jdk" # JDK environment #containers: # - name: KubernetesContainer
# container-impl: org.apache.amoro.server.manager.KubernetesOptimizerContainer
# properties:
# kube-config-path: ~/.kube/config
# image: apache/amoro:{version}
# namespace: default - name: flinkContainer
container-impl: org.apache.amoro.server.manager.FlinkOptimizerContainer
properties:
flink-home: /usr/local/service/flink/ # Flink install home
target: yarn-per-job # Flink run target, (yarn-per-job, yarn-application, kubernetes-application)
export.JVM_ARGS: -Djava.security.krb5.conf=/etc/krb5.conf # Flink launch jvm args, like kerberos config when ues kerberos
export.HADOOP_CONF_DIR: /usr/local/service/hadoop/etc/hadoop/ # Hadoop config dir
export.HADOOP_USER_NAME: hadoop # Hadoop user submit on yarn
export.FLINK_CONF_DIR: /usr/local/service/flink/conf/ # Flink config dir
# # flink kubernetes application properties.
# job-uri: "local:///opt/flink/usrlib/optimizer-job.jar" # Optimizer job main jar for kubernetes application
# flink-conf.kubernetes.container.image: "apache/amoro-flink-optimizer:{version}" # Optimizer image ref
# flink-conf.kubernetes.service-account: flink # Service account that is used within kubernetes cluster.
flink-conf.jobmanager.memory.process.size: 1024M
flink-conf.taskmanager.memory.process.size: 1024M #containers:
- name: sparkContainer
container-impl: org.apache.amoro.server.manager.SparkOptimizerContainer
properties:
spark-home: /usr/local/service/spark/ # Spark install home
master: yarn # The cluster manager to connect to. See the list of https://spark.apache.org/docs/latest/submitting-applications.html#master-urls.
deploy-mode: cluster # Spark deploy mode, client or cluster
export.JVM_ARGS: -Djava.security.krb5.conf=/etc/krb5.conf # Spark launch jvm args, like kerberos config when ues kerberos
export.HADOOP_CONF_DIR: /usr/local/service/hadoop/etc/hadoop/ # Hadoop config dir
export.HADOOP_USER_NAME: hadoop # Hadoop user submit on yarn
export.SPARK_CONF_DIR: /usr/local/service/spark/conf/ # Spark config dir
# # spark kubernetes application properties.
# job-uri: "local:///opt/spark/usrlib/optimizer-job.jar" # Optimizer job main jar for kubernetes application
# ams-optimizing-uri: thrift://ams.amoro.service.local:1261 # AMS optimizing uri
# spark-conf.spark.dynamicAllocation.enabled: "true" # Enabling DRA feature can make full use of computing resources
spark-conf.spark.shuffle.service.enabled: "true" # If spark DRA is used on kubernetes, we should set it false
spark-conf.spark.dynamicAllocation.shuffleTracking.enabled: "true" # Enables shuffle file tracking for executors, which allows dynamic allocation without the need for an external shuffle service
# spark-conf.spark.kubernetes.container.image: "apache/amoro-spark-optimizer:{version}" # Optimizer image ref
# spark-conf.spark.kubernetes.namespace: <spark-namespace> # Namespace that is used within kubernetes cluster
# spark-conf.spark.kubernetes.authenticate.driver.serviceAccountName: <spark-sa> # Service account that is used within kubernetes cluster.
spark-conf.spark.driver.userClassPathFirst: "true"
spark-conf.spark.executor.userClassPathFirst: "true"
spark-conf.spark.executor.instances: 1

6、移动到服务目录

cp -R amoro /usr/local/service/

7、修改目录权限

cd /usr/local/service/

chown hadoop:hadoop amoro -R

chmod 755 -R amoro

8、服务管理(hadoop用户)

sudo su - hadoop

cd  /usr/local/service/amoro/bin

启动服务:sh ams.sh start

停止服务:sh ams.sh stop

重启服务:sh ams.sh restart

三、管理

1、默认关闭自动治理。设置一下参数灰度部分治理表

alter table data_lake_ods.test_table set tblproperties ('self-optimizing.enabled'='true','clean-dangling-delete-files.enabled'='true','clean-orphan-file.enabled'='true','table-expire.enabled' = 'true');

2、开启接口调用

curl -H "Authorization: Basic 替换符" http://127.0.0.1:9092/api/ams/v1/optimize/optimizerGroups/all/optimizers

Authorization生成方式(替换符内容):  Base64(账号:密码)

四、文章

1、网易湖仓管理系统 Amoro 进入 Apache 孵化器

https://www.sohu.com/a/767189247_355140

Apache Amoro数据湖管理和治理工具部署的更多相关文章

  1. 对话Apache Hudi VP, 洞悉数据湖的过去现在和未来

    Apache Hudi是一个开源数据湖管理平台,用于简化增量数据处理和数据管道开发,该平台可以有效地管理业务需求,例如数据生命周期,并提高数据质量.Hudi的一些常见用例是记录级的插入.更新和删除.简 ...

  2. Apache Hudi:云数据湖解决方案

    1. 引入 开源Apache Hudi项目为Uber等大型组织提供流处理能力,每天可处理数据湖上的数十亿条记录. 随着世界各地的组织采用该技术,Apache开源数据湖项目已经日渐成熟. Apache ...

  3. 大数据权限管理工具 Apache Ranger 初识

    资料参考: Apache Ranger – Introduction http://ranger.apache.org/ 阿里云 Ranger简介 Apache Ranger初识 - 阿里云 大数据权 ...

  4. 使用Apache Hudi构建大规模、事务性数据湖

    一个近期由Hudi PMC & Uber Senior Engineering Manager Nishith Agarwal分享的Talk 关于Nishith Agarwal更详细的介绍,主 ...

  5. 深度对比Apache CarbonData、Hudi和Open Delta三大开源数据湖方案

    摘要:今天我们就来解构数据湖的核心需求,同时深度对比Apache CarbonData.Hudi和Open Delta三大解决方案,帮助用户更好地针对自身场景来做数据湖方案选型. 背景 我们已经看到, ...

  6. 使用Apache Hudi + Amazon S3 + Amazon EMR + AWS DMS构建数据湖

    1. 引入 数据湖使组织能够在更短的时间内利用多个源的数据,而不同角色用户可以以不同的方式协作和分析数据,从而实现更好.更快的决策.Amazon Simple Storage Service(amaz ...

  7. 数据湖框架选型很纠结?一文了解Apache Hudi核心优势

    英文原文:https://hudi.apache.org/blog/hudi-indexing-mechanisms/ Apache Hudi使用索引来定位更删操作所在的文件组.对于Copy-On-W ...

  8. 基于Apache Hudi构建数据湖的典型应用场景介绍

    1. 传统数据湖存在的问题与挑战 传统数据湖解决方案中,常用Hive来构建T+1级别的数据仓库,通过HDFS存储实现海量数据的存储与水平扩容,通过Hive实现元数据的管理以及数据操作的SQL化.虽然能 ...

  9. Robinhood基于Apache Hudi的下一代数据湖实践

    1. 摘要 Robinhood 的使命是使所有人的金融民主化. Robinhood 内部不同级别的持续数据分析和数据驱动决策是实现这一使命的基础. 我们有各种数据源--OLTP 数据库.事件流和各种第 ...

  10. 基于Apache Hudi在Google云构建数据湖平台

    自从计算机出现以来,我们一直在尝试寻找计算机存储一些信息的方法,存储在计算机上的信息(也称为数据)有多种形式,数据变得如此重要,以至于信息现在已成为触手可及的商品.多年来数据以多种方式存储在计算机中, ...

随机推荐

  1. java中的集合包简要分析

    1.集合包 集合包是java中最常用的包,它主要包括Collection和Map两类接口的实现. 对于Collection的实现类需要重点掌握以下几点: 1)Collection用什么数据结构实现? ...

  2. OS开发笔记(1)——硬盘引导的尝试

    看前提醒:这一系列笔记完全是按照我的思考顺序写的,中间可能会绕弯路 定义 为了避免概念的混淆,我先在这里作一下(仅适用于本文的)名词的解释: 引导程序/boot程序:特指磁盘MBR或者VBR扇区中存放 ...

  3. JPEG格式研究——(4)反量化、逆ZigZag变化和IDCT变换

    反量化 反量化其实很简单,将霍夫曼解码出来的数据乘上对应的量化表就好了 通过当前色度选择出SOF中的Component,其中的Tqi指出了这一色度所需的量化表id Component的结构如下: 名称 ...

  4. .net core想到哪写道哪之asp.net core的机密

    我们往往需要在项目里使用一些机密数据,比如数据库的密码,再比如一些密钥.这些东西一般来说我们都会放到配置文件里. 但是这些东西是跟自己的账号相关的,我们在一些多人合作的项目中,尤其是开源项目肯定不能直 ...

  5. 语音转文字-Microsoft Azure Speech Service与Web Speech API实战

    简介 在现代技术驱动的世界中,语音识别已成为人机交互的重要方式.Microsoft Azure Speech Service 提供了强大的语音转文本功能,允许开发者轻松地将语音数据转换为文本.本文将指 ...

  6. Python3 print不输出回车符

    Python3 print的函数原型: print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False) objects ---- 输出 ...

  7. OSG开发笔记(三十九):OSG中模型的透明度实现、球体透明度Demo

    前言   在OSG中,对于一些效果未被选中或者包含等业务,需要半透明效果来实现.  本篇描述OSG的半透明实现方式.   Demo      透明 功能概述   透明效果在三维场景中扮演着重要角色,它 ...

  8. 基于.NET8+Vue3开发的权限管理&个人博客系统

    前言 今天大姚给大家分享一个基于.NET8+Vue3开发的权限管理&个人博客系统:Easy.Admin. 项目介绍 Easy.Admin是一个基于.NET8+Vue3+TypeScript开发 ...

  9. 12C++循环结构-for循环(2)——教学

    一.循环变量为字符型 (第32课 26个兄弟姐妹)参考视频1 试编一程序,按字典顺序输出26个字母. 流程图: 思考:先顺序输出26个小写英文字母,再逆序输出26个大写英文字母. 循环可以是递增型循环 ...

  10. Flutter ListView报错RenderBox was not laid out: RenderViewport#680c1 NEEDS-LAYOUT NEEDS-PAINT

    RenderBox was not laid out: RenderViewport#680c1 NEEDS-LAYOUT NEEDS-PAINT 使用ListView.builder()布局时,如果 ...