CDH集成Doris(基于非AVX平台)

该文章提供了一个Shell脚本,用于在Linux环境中编译ApacheDORIS的CSD和Parcel版本。脚本涵盖了Java、Git、Maven的环境准备,从下载源码到编译、打包的步骤,并提供了加速方法,如预先放置源代码包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是借鉴大佬的文章
引用一下
原来的文章,shell有错误,并不能直接运行,这里使用小白的视角来运行编译一下

准备环境

java环境

git环境

yum install git
安装maven


下载安装包
更改 bin/dorisbulid.sh 文本

更改代码

#!/bin/bash
set -x
set -e

CM_EXT_BRANCH=cm5-5.15.0
doris_version=1.2.2
parcel_version=${doris_version}-1
doris_csd_out="doris_csd_out"
doris_csd_bulid_path="doris_csd_bulid"
doris_parcel_out="doris_parcel_out"
doris_parcel_bulid_path=doris-$parcel_version
doris_csd_bulid_name="csd_out"
doris_parcel_name="$doris_parcel_bulid_path-el7.parcel"
doris_service_name="DORIS"
doris_package_fe_url="https://www.apache.org/dyn/mirrors/mirrors.cgi?action=download&filename=doris/1.2/1.2.2-rc01/apache-doris-fe-1.2.2-bin-x86_64.tar.xz"
doris_package_be_url="https://archive.apache.org/dist/doris/1.2/1.2.2-rc01/apache-doris-be-1.2.2-bin-x86_64-noavx2.tar.xz"
doris_package_dependencies_url="https://archive.apache.org/dist/doris/1.2/1.2.2-rc01/apache-doris-dependencies-1.2.2-bin-x86_64.tar.xz"
doris_fe_package="$( basename $doris_package_fe_url )"
doris_be_package="$( basename $doris_package_be_url )"
doris_dependencies_package="$( basename $doris_package_dependencies_url )"

CM_EXT=cm_ext

#Checkout if dir does not exist
if [ ! -d ${CM_EXT} ]; then
  git clone https://github.com/cloudera/cm_ext.git
fi
if [ ! -f $CM_EXT/validator/target/validator.jar ]; then
  cd $CM_EXT
  git checkout "$CM_EXT_BRANCH"
  mvn package
  cd ../bin
fi


if [ ! -d "${doris_parcel_bulid_path}" ];then
  mkdir ${doris_parcel_bulid_path}
  if [ ! -f "$doris_fe_package" ]; then
    echo $doris_package_fe_url
    wget --no-check-certificate $doris_package_fe_url
  fi
  tar -xvf ${doris_fe_package}
  mv apache-doris-fe-${doris_version}-bin-x86_64  fe
  mv fe ${doris_parcel_bulid_path}
  if [ ! -f "$doris_be_package" ]; then
    wget $doris_package_be_url
  fi
  tar -xvf ${doris_be_package}
  mv apache-doris-be-${doris_version}-bin-x86_64-noavx2  be
  mv be ${doris_parcel_bulid_path}
  if [ ! -f "$doris_dependencies_package" ]; then
    wget $doris_package_dependencies_url
  fi
  tar -xvf ${doris_dependencies_package}
  mv apache-doris-dependencies-${doris_version}-bin-x86_64/apache_hdfs_broker  $doris_parcel_bulid_path
  mv apache-doris-dependencies-${doris_version}-bin-x86_64/java-udf*  $doris_parcel_bulid_path/be/lib/
fi

  rm -rf ../parcel/$doris_parcel_bulid_path
  cp -r /root/doris-cm-main/doris-parcel/doris-parcel-src/meta  $doris_parcel_bulid_path
  sed -i -e "s/%PARCELVERSION%/$parcel_version/" ./$doris_parcel_bulid_path/meta/parcel.json
  java -jar $CM_EXT/validator/target/validator.jar -d ./$doris_parcel_bulid_path
  mkdir -p $doris_parcel_out
  tar zcvhf ./$doris_parcel_out/$doris_parcel_name $doris_parcel_bulid_path --owner=root --group=root
  java -jar $CM_EXT/validator/target/validator.jar -f ./$doris_parcel_out/$doris_parcel_name
  python $CM_EXT/make_manifest/make_manifest.py ./$doris_parcel_out
  mv $doris_parcel_bulid_path ../parcel
  mv $doris_parcel_out ../parcel



  JARNAME=${doris_service_name}-${doris_version}.jar
  if [ -f "$JARNAME" ]; then
    return
  fi
  rm -rf ../csd/${doris_csd_bulid_path}
  rm -rf ../csd/$doris_csd_out
  rm -rf  ${doris_csd_bulid_path}
  mkdir ${doris_csd_bulid_path}
  rm -rf $doris_csd_out
  mkdir $doris_csd_out
  cp -a /root/doris-cm-main/doris-csd/doris-csd-src/*   ${doris_csd_bulid_path}
  sed -i -e "s/%CSDVERSION%/$doris_version/" ${doris_csd_bulid_path}/descriptor/service.sdl
  java -jar $CM_EXT/validator/target/validator.jar -s ${doris_csd_bulid_path}/descriptor/service.sdl
  jar -cvf ./$JARNAME -C ${doris_csd_bulid_path} .
  mv $JARNAME $doris_csd_out
  mv ${doris_csd_bulid_path} ../csd
  mv $doris_csd_out ../csd

提升速度

将fe、be、dependence三个包提前放入project工程下,可以避免wget过程
请添加图片描述

### Doris 2.0.2 Parcel 包与 CDH 6.3.2 的集成 #### 兼容性分析 Apache Doris 是一款高性能的分布式数据分析引擎,而 Cloudera Distribution Hadoop (CDH) 则是一个广泛使用的 Hadoop 发行版。尽管 Apache DorisCDH 均基于 Hadoop 生态构建,但它们之间的版本兼容性需要特别注意。 对于 Doris 2.0.2 版本而言,其官方文档并未明确提及对 CDH 6.3.2 的直接支持[^1]。然而,在实际操作中,可以通过手动调整依赖库的方式实现两者的集成。以下是具体的技术细节: --- #### 技术准备 在将 Doris 2.0.2 的 Parcel 包部署至 CDH 6.3.2 中之前,需确认以下几点: - **JDK 版本一致性**:Doris 要求 JDK 8 或更高版本,因此必须确保 CDH 所运行的操作系统环境已安装合适的 JDK 版本[^2]。 - **HDFS 配置同步**:由于 Doris 可能会访问存储于 HDFS 上的数据文件,建议提前配置好 `core-site.xml` 和 `hdfs-site.xml` 文件,并将其路径加入 Doris 的 FE/BE 启动参数中[^3]。 --- #### 安装步骤概述 虽然不推荐使用“首先”、“然后”这样的引导词,但仍可通过逻辑顺序描述整个过程如下: ##### 1. 下载并解压 Doris Parcel 包 从 Apache Doris 官方仓库获取对应版本的 Parcel 包(通常命名为 `apache-doris-parcel-<version>.parcel`),并将该压缩包上传到目标集群中的指定目录下[^4]。 ```bash wget https://example.com/apache-doris-parcel-2.0.2.parcel tar -xzvf apache-doris-parcel-2.0.2.parcel -C /opt/cloudera/parcels/ ``` ##### 2. 创建元数据文件 Cloudera Manager 使用 `.meta` 文件来解析 Parcel 内部结构。创建名为 `apache-doris-parcel-2.0.2.meta` 的 JSON 文件,内容应类似于下面的例子: ```json { "schemaVersion": "v1", "name": "APACHE-DORIS-PARCEL", "version": "2.0.2", "releaseLabel": "cdh6.3.2" } ``` 此文件定义了 Doris Parcel 的名称、版本号以及所适配的目标平台版本信息。 ##### 3. 更新 CM Repository List 编辑 `/etc/yum.repos.d/cloudera-manager.repo` 文件或者通过 Web UI 添加自定义软件源地址指向本地存放的 Doris Parcel 地址。完成后重启 Cloudera Manager Server 进程以应用更改。 ##### 4. 分发并激活 Parcel 登录到 Cloudera Manager 控制台界面,导航至 “Parcels” 页面找到刚导入的新条目;点击右侧按钮依次执行下载 -> 分布 -> 激活三个动作完成最终部署流程。 --- #### 注意事项 - 如果遇到类加载冲突问题,则可能是因为某些共享库存在多个不同版本所致。此时可以尝试修改 BE/FE JVM 参数 `-XX:+UseG1GC` 来优化垃圾回收机制表现[^5]。 - 对于大规模生产环境来说,强烈建议先在一个小型测试集上验证功能后再推广至全量节点范围内部署实施。 --- ### 示例代码片段 以下是一段用于检测当前运行环境中是否存在重复 jar 包的小工具脚本: ```python import os def find_duplicate_jars(base_dir): jars = {} duplicates = [] for root, dirs, files in os.walk(base_dir): for file_name in files: if file_name.endswith('.jar'): full_path = os.path.join(root, file_name) if file_name not in jars: jars[file_name] = [full_path] else: jars[file_name].append(full_path) for name, paths in jars.items(): if len(paths) > 1: duplicates.append((name, paths)) return duplicates if __name__ == "__main__": base_directory = "/usr/lib/" results = find_duplicate_jars(base_directory) if results: print(f"Found {len(results)} duplicate JARs:") for result in results: print(result[0]) for path in result[1]: print(f"\t{path}") else: print("No duplicate JARs found.") ``` ---
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值