下载
编译与部署
开始使用
操作手册
- 数据导入
- 表结构变更
- 物化视图
- HTTP API
- FE
- MANAGER
- Bootstrap Action
- Cancel Load Action
- Check Decommission Action
- Check Storage Type Action
- Config Action
- Connection Action
- Get DDL Statement Action
- Get Load Info Action
- Get Load State
- Get FE log file
- Get Small File
- HA Action
- Hardware Info Action
- Health Action
- Log Action
- Logout Action
- Meta Action
- Meta Action
- Meta Replay State Action
- Profile Action
- Query Detail Action
- Query Profile Action
- Row Count Action
- Session Action
- Set Config Action
- Show Data Action
- Show Meta Info Action
- Show Proc Action
- Show Runtime Info Action
- Statement Execution Action
- System Action
- Table Query Plan Action
- Table Row Count Action
- Table Schema Action
- Upload Action
- CANCEL LABEL
- Compaction Action
- CONNECTION
- getlogfile
- GET LABEL STATE
- GET TABLETS ON A PARTICULAR BE
- PROFILE
- QUERY DETAIL
- RESTORE TABLET
- SHOW DATA
- MIGRATE SINGLE TABLET TO A PARTICULAR DISK
- GET TABLETS DISTRIBUTION BETWEEN DIFFERENT DISKS
- FE
- 运维操作
- 配置文件
- 拦截规则
- 备份与恢复
- Broker
- Colocation Join
- Bucket Shuffle Join
- 动态分区
- 数据导出
- 导出查询结果集
- 分区缓存
- 权限管理
- LDAP
- 资源管理
- 查询执行的统计
- Runtime Filter
- Segment V2 升级手册
- 文件管理器
- SQL MODE
- 时区
- 变量
- 更新
- 多租户和资源划分
最佳实践
扩展功能
- 审计日志插件
- Doris On ES
- Doris output plugin
- ODBC External Table Of Doris
- Doris 插件框架
- Spark Doris Connector
- Flink Doris Connector
- DataX doriswriter
- UDF
设计文档
SQL 手册
- SQL 函数
- 日期函数
- convert_tz
- curdate
- current_timestamp
- curtime,current_time
- date_add
- date_format
- date_sub
- datediff
- day
- dayname
- dayofmonth
- dayofweek
- dayofyear
- from_days
- from_unixtime
- hour
- makedate
- minute
- month
- monthname
- now
- second
- strtodate
- time_round
- timediff
- timestampadd
- timestampdiff
- to_days
- unix_timestamp
- utc_timestamp
- week
- weekofyear
- year
- yearweek
- 地理位置函数
- 字符串函数
- 聚合函数
- bitmap 函数
- Hash函数
- Doris 窗口函数使用
- CAST
- DIGITAL_MASKING
- 日期函数
- 语法帮助
- 用户账户管理
- 集群管理
- ADMIN CANCEL REPAIR
- ADMIN CLEAN TRASH
- ADMIN CHECK TABLET
- ADMIN REPAIR
- ADMIN SET CONFIG
- ADMIN SET REPLICA STATUS
- ADMIN SHOW CONFIG
- ADMIN SHOW REPLICA DISTRIBUTION
- ADMIN SHOW REPLICA STATUS
- ADMIN SHOW DATA SKEW
- ALTER CLUSTER
- ALTER SYSTEM
- CANCEL DECOMMISSION
- CREATE CLUSTER
- CREATE FILE
- DROP CLUSTER
- DROP FILE
- ENTER
- INSTALL PLUGIN
- LINK DATABASE
- MIGRATE DATABASE
- SET LDAPADMINPASSWORD
- SHOW BACKENDS
- SHOW BROKER
- SHOW FILE
- SHOW FRONTENDS
- SHOW FULL COLUMNS
- SHOW INDEX
- SHOW MIGRATIONS
- SHOW PLUGINS
- SHOW TABLE STATUS
- SHOW TRASH
- UNINSTALL PLUGIN
- DDL
- ALTER DATABASE
- ALTER TABLE
- ALTER VIEW
- BACKUP
- CANCEL ALTER
- CANCEL BACKUP
- CANCEL RESTORE
- CREATE DATABASE
- CREATE ENCRYPTKEY
- CREATE INDEX
- CREATE MATERIALIZED VIEW
- CREATE REPOSITORY
- CREATE RESOURCE
- CREATE TABLE LIKE
- CREATE TABLE
- CREATE VIEW
- DROP DATABASE
- DROP ENCRYPTKEY
- DROP INDEX
- DROP MATERIALIZED VIEW
- DROP REPOSITORY
- DROP RESOURCE
- DROP TABLE
- DROP VIEW
- HLL
- RECOVER
- RESTORE
- SHOW ENCRYPTKEYS
- SHOW RESOURCES
- TRUNCATE TABLE
- CREATE FUNCTION
- DROP FUNCTION
- SHOW FUNCTIONS
- DML
- BROKER LOAD
- CANCEL LOAD
- DELETE
- EXPORT
- GROUP BY
- LOAD
- MINI LOAD
- MULTI LOAD
- PAUSE ROUTINE LOAD
- RESUME ROUTINE LOAD
- ROUTINE LOAD
- SHOW ALTER
- SHOW BACKUP
- SHOW CREATE FUNCTION
- SHOW CREATE ROUTINE LOAD
- SHOW DATA
- SHOW DATABASES
- SHOW DELETE
- SHOW DYNAMIC PARTITION TABLES
- SHOW EXPORT
- SHOW LOAD
- SHOW PARTITIONS
- SHOW PROPERTY
- SHOW REPOSITORIES
- SHOW RESTORE
- SHOW ROUTINE LOAD TASK
- SHOW ROUTINE LOAD
- SHOW SNAPSHOT
- SHOW TABLES
- SHOW TABLET
- SHOW TRANSACTION
- SPARK LOAD
- STOP ROUTINE LOAD
- STREAM LOAD
- ALTER ROUTINE LOAD
- INSERT
- UPDATE
- 数据类型
- 辅助命令
开发者手册
- 调试工具
- Doris BE存储层Benchmark工具
- 使用 Eclipse 搭建 FE 开发环境
- 使用 IntelliJ IDEA 搭建 FE 开发环境
- Apache Doris Be 开发调试
- Java 代码格式化
- C++ 代码格式化
Apache 社区
ARM64 + KylinOS 编译运行 Doris
本文档介绍如何在 ARM64 平台上编译 Doris。
注意,该文档仅作为指导性文档。在不同环境中编译可能出现其他错误。
软硬件环境
KylinOS 版本:
$> cat /etc/.kyinfo name=Kylin-Server milestone=10-SP1-Release-Build04-20200711 arch=arm64 beta=False time=2020-07-11 17:16:54 dist_id=Kylin-Server-10-SP1-Release-Build04-20200711-arm64-2020-07-11 17:16:54
CPU型号
$> cat /proc/cpuinfo model name : Phytium,FT-2000+/64
Doris 版本
commit 68bab73
编译工具安装(无网络)
示例中,所有工具安装在在 /home/doris/tools/installed/
目录下。
所需安装包请先在有网络情况下获取。
1. 安装gcc10
下载 gcc-10.1.0
wget https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-10.1.0/gcc-10.1.0.tar.gz
解压后,在 contrib/download_prerequisites
查看依赖并下载:
http://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2
http://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2
http://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz
http://gcc.gnu.org/pub/gcc/infrastructure/isl-0.18.tar.bz2
解压这四个依赖,然后移动到 gcc-10.1.0 源码目录下,并重命名为 gmp、isl、mpc、mpfr。
下载并安装 automake-1.15(因为gcc10编译过程中会查找automake 1.15 版本)
https://ftp.gnu.org/gnu/automake/automake-1.15.tar.gz
tar xzf automake-1.15.tar.gz
./configure --prefix=/home/doris/tools/installed
make && make install
export PATH=/home/doris/tools/installed/bin:$PATH
编译GCC10:
cd gcc-10.1.0
./configure --prefix=/home/doris/tools/installed
make -j && make install
编译时间较长。
2. 安装其他编译组件
jdk-8u291-linux-aarch64.tar.gz
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
无需编译,开箱即用。
cmake-3.19.8-Linux-aarch64.tar.gz
https://cmake.org/download/
无需编译,开箱即用
apache-maven-3.8.1-bin.tar.gz
https://maven.apache.org/download.cgi
无需编译,开箱即用
nodejs 16.3.0
https://nodejs.org/dist/v16.3.0/node-v16.3.0-linux-arm64.tar.xz
无需编译,开箱即用
libtool-2.4.6.tar.gz
编译第三方组件用,虽然系统可能自带了libtool,但是libtool需要和automake在一起,这样不容易出问题。
https://ftp.gnu.org/gnu/libtool/libtool-2.4.6.tar.gz cd libtool-2.4.6/ ./configure --prefix=/home/doris/tools/installed make -j && make install
binutils-2.36.tar.xz(获取bdf.h)
https://ftp.gnu.org/gnu/binutils/binutils-2.36.tar.bz2 ./configure --prefix=/home/doris/tools/installed make -j && make install
libiberty(编译BE用)
这个库的源码就在 gcc-10.1.0 的源码包下
cd gcc-10.1.0/libiberty/ ./configure --prefix=/home/doris/tools/installed make
编译后会产生 libiberty.a,后续移动到 Doris 的thirdparty 的 lib64 目录中即可。
3. 编译第三方库
假设Doris源码在 /home/doris/doris-src/
下。
- 手动下载所有第三方库并放在 thirdparty/src 目录下。
在Doris源码目录下新增
custom_env.sh
并添加如下内容export DORIS_THIRDPARTY=/home/doris/doris-src/thirdparty/ export JAVA_HOME=/home/doris/tools/jdk1.8.0_291/ export DORIS_GCC_HOME=/home/doris/tools/installed/ export PATCH_COMPILER_RT=true
注意替换对应的目录
修改 build-thirdparty.sh 中的部分内容
关闭
build_mysql
和build_libhdfs3
mysql 不在需要。而 libhdfs3 暂不支持 arm 架构,所以在arm中运行Doris,暂不支持通过 libhdfs3 直接访问 hdfs,需要通过broker。
在
build_curl
中增加 configure 参数:--without-libpsl
。如果不添加,则在最终编译Doris BE的链接阶段,可能报错:undefined reference to ‘psl_is_cookie_domain_acceptable'
执行 build-thirdparty.sh。这里仅列举可能出现的错误
error: narrowing conversion of '-1' from 'int' to 'char' [-Wnarrowing]
编译brpc 0.9.7 时会出现错误,解决方案,在 brpc 的 CMakeLists.txt 的
CMAKE_CXX_FLAGS
中添加-Wno-narrowing
。brpc master 代码中已经修复这个问题:https://github.com/apache/incubator-brpc/issues/1091
libz.a(deflate.o): relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol
z_errmsg' which may bind externally can not be used when making a shared object; recompile with -fPIC`编译brpc 0.9.7 时会出现错误,还有 libcrypto 也会报类似错误。原因未知,似乎在 aarch64 下,brpc 需要链接动态的 zlib 和 crypto 库。但是我们在编译这两个第三方库时,都只编译的了 .a 静态文件。解决方案:重新编译zlib和 openssl 生成.so 动态库:
打开
build-thirdparty.sh
,找到build_zlib
函数,将:./configure --prefix=$TP_INSTALL_DIR --static 就改为 ./configure --prefix=$TP_INSTALL_DIR
找到
build_openssl
,将以下部分注释掉:#if [ -f $TP_INSTALL_DIR/lib64/libcrypto.so ]; then # rm -rf $TP_INSTALL_DIR/lib64/libcrypto.so* #fi #if [ -f $TP_INSTALL_DIR/lib64/libssl.so ]; then # rm -rf $TP_INSTALL_DIR/lib64/libssl.so* #fi
然后来到
build-thirdparty.sh
,注释掉其他build_xxx
,仅打开build_zlib
和build_openssl
,以及build_brpc
和之后的build_xxx
。然后重新执行build-thirdparty.sh
。编译到某个阶段卡住不动。
不确定原因。解决方案:重跑
build-thirdparty.sh
。build-thirdparty.sh
是可以重复执行的。
4. 编译Doris源码
执行 sh build.sh 即可。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论