编译Alluxio源代码

编译Alluxio源代码

0. 编译环境构建

(ssh dcache@xxxxxx)这个服务器已经构建了编译环境,如果如果只需要重编译alluxio直接从1小节开始。

编译Alluxio源代码 - Alluxio v2.9.3 (stable)


  1. 安装alluxio build https://hub.docker.com/r/alluxio/alluxio/

    docker pull alluxio/alluxio-maven

  2. git alluxio https://github.com/Alluxio/alluxio Alluxio v2.9.3( 当前使用的版本 推荐使用released版本 目前最新分支这个版本用这个编译容器不能通过)

  3. 设置路径

$ cd alluxio
$ export ALLUXIO_HOME=$(pwd)
  1. 启动 并 进入容器
# 启动容器 
$ docker run -itd --network=host -v ${ALLUXIO_HOME}:/alluxio -v ${HOME}/.m2:/root/.m2  --name alluxio-build alluxio/alluxio-maven bash
# 进入容器
$ docker exec -it -w /alluxio alluxio-build bash
  1. 由于权限问题,需要把alluxio的项目移到 容器本地的目录并赋予权限
$ mv /alluxio/DIR ~/DIR
$ chmod -R 777 ~/DIR 
  1. 安装并初始化git

    git clone https 不太行 需要git clone ssh 这样需要在你的github账户添加docker的ssh公钥

  2. 安装npm和node

    版本信息可以参考POM.xml文件

    alter-text

    建议安装nvm进行npm和node版本管理 (如果直接用系统的管理npm很难node版本匹配,node降级npm就崩溃,强烈建议!!!直接上nvm)

    ubuntu 安装 NVM

    由于被墙,

    可以先找一个能翻墙的机器,下载.sh的内容,然后手动修改github的DNS (记得还原hosts)

  3. 换源

    墙的问题,需要换源

    npm 源

    终端输入

    $ npm config set registry [https://registry.npm.taobao.org](https://registry.npm.taobao.org/)
    

    maven 源

    1. 打开 Maven 的配置文件 settings.xml。该文件通常位于 <Maven安装目录>/conf/settings.xml~/.m2/settings.xml

    2. 在配置文件中找到 <mirrors> 元素,如果不存在,则可以在 <settings> 元素下创建一个新的 <mirrors> 元素。

    3. <mirrors> 元素中添加一个新的 <mirror> 元素,并指定你希望使用的镜像源。以下是一些常用的 Maven 镜像源:

      <mirror>
        <id>aliyun</id>
        <url>https://maven.aliyun.com/repository/public</url>
        <mirrorOf>central</mirrorOf>
      </mirror>
      
      <mirror>
        <id>ustc</id>
        <url>http://mirrors.ustc.edu.cn/maven/maven2</url>
        <mirrorOf>central</mirrorOf>
      </mirror>
      
  4. 编译选项问题

    $ mvn clean install -DskipTests
    # 可以编译 但是很慢
    
    $ mvn -T 2C clean install -DskipTests -Dmaven.javadoc.skip -Dfindbugs.skip -Dcheckstyle.skip -Dlicense.skip
    # 会卡在npm 不报错,但是没进度 编译24小时没任何反馈
    

1. 使用编译环境

  1. 连接终端

    ssh dcache@xxxxx
    
  2. 进入容器

    # 先检查容器是否运行
    docker ps -a 
    

    如果STATUS为Exited 则需要启动容器

    alter-text
    docker start CONTAINER ID
    docker exec -it -w /alluxio alluxio-build bash
    

    否则直接进入容器

    docker exec -it -w /alluxio alluxio-build bash
    
  3. 到容器内的alluxio路径

    由于文件权限问题,如果编译新的alluxio 需要从外部拷贝到容器内的路径,建议放到~/

    目前~/alluxio 为v2.9.3

    容器与宿主机的接口为/alluxio 即容器目录 /alluxio 映射 宿主机 /home/dcache/zh

  4. 编译

    mvn clean install -DskipTests
    

编译好之后复制到/alluxio目录即可在宿主机的/zh/ 目录下看到项目

Related posts

Related Posts

服务器运行环境隔离方法(容器化)

服务器运行环境隔离方法(容器化)

一些环境隔离方法 虚拟化: 使用虚拟化技术,如 VMware、VirtualBox 或 KVM,可以在物理服务器上创建多个虚拟服务器,每个虚拟服务器都有自己独立的操作系统和资源。这提供了强大的隔离,防止一个虚拟机的问题影响其他虚拟机。 容器化: 使用容器技术,如 Docker,可以将应用程序及其依赖项打包成一个独立的容器。每个容器运行在独立的环境中,与主机和其他容器隔离。这提供了更轻量级的隔离,同时提高了灵活性和可移植性。 操作系统级别的隔离: 使用操作系统级别的隔离技术,如 Linux 的容器(LXC)或 FreeBSD 的 jails。这些技术允许将进程和文件系统隔离开来,每个隔离的环境都有自己的文件系统和进程空间。 这里,综合考虑实验室设备情况以及管理实现难度,我们选择的容器化技术,通过Docker实现环境隔离,Docker是一种轻量级容器技术,通过将应用程序及其依赖项打包成独立的容器,提供了一致性和可移植性。Portainer是一个用于简化Docker容器管理的开源工具,提供直观的Web界面,使用户能够轻松查看、创建、启动和停止Docker容器。

Read More
最优化算法

最优化算法

之前做的2篇文章都把问题抽象为一个优化问题,发现自己缺乏对解决优化问题方法(优化算法)进行系统性的学习,这导致每次解决问题时总是用模拟退火或者更简单的启发式方法改改就用。说好听点是发现问题比解决问题更为重要,但其实有种水文章的感觉。虽然这些启发式大多数情况算法也能make sense,但是继续深入学习还是有必要的。 在此记录学习过程,希望大家指正,但是还没找到给主页添加评论的方法。 最优化问题范指定量决策问题, 也就是如何对有限的资源进行合理的分配以达到最优目标。 数学抽象: $$ min\ f(x), \\ s.

Read More
分布式缓存集群下数据分配策略

分布式缓存集群下数据分配策略

Data Location Awareness: Optimize Performance and Lower Cost with Tiered Locality Ref

Read More