ARM64环境利用 docker 编译 hadoop-2.7.7

2024-05-13 03:48

本文主要是介绍ARM64环境利用 docker 编译 hadoop-2.7.7,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 浅言碎语
      • 准备环境
      • 编写 dockerfile
      • 开始编译

浅言碎语

  • x86_64 架构,直接从官网下载二进制文件就可以了
    • hadoop下载地址
    • maven下载地址
    • jdk下载地址
      • oracle 的 jdk 下载需要注册 oracle 的账号
  • arm64 架构官方没有二进制文件,只能自己编译
    • 当然,也可以在 linux 服务上编译,利用 docker 其实是为了不’玷污’本地环境
      • 因为发行版是 麒麟V10 ,编译异常困难,还是要借助 docker 运行一个 centos
        • 为什么是 centos ?
          • 因为 hadoop-2.7.7 编译的时候要求 protoc 的版本是 2.5.0
          • 麒麟 V10 默认下载的版本已经是 3.x 了,而且没有 2.x 的历史版本
            • 尝试过去编译 protoc, 反正没成功
            • docker hub 上拉取的 centos 7 的镜像,yum 安装的就是 2.5.0 的 protoc
            • docker 镜像制作完成后,一定要先去容器里面执行 protoc --version,确认版本是不是2.5.0的,否则编译过程中会报错
              • 报错内容protoc version is 'libprotoc 3.9.0', expected version is '2.5.0'
        • 为什么用 oracle 的 jdk?
          • 因为 openjdk 在编译的时候,会出现 cannot find symbol 的报错,编译就进行不下去了
            • 用了 oracle 的 jdk1.8.0_321 就没有问题,百度云上传了一份
              • 链接:https://pan.baidu.com/s/1dY20MskH40KOscq0dXM61A
              • 提取码:vuuh
    • 编译过程还是比较依赖网络的,需要从 apache 的 maven 仓库里面获取 java 依赖
      • 当然,也可以提前下载好 maven 仓库,但是挺累的

准备环境

查看发行版

cat /etc/os-release
NAME="Kylin Linux Advanced Server"
VERSION="V10 (Tercel)"
ID="kylin"
VERSION_ID="V10"
PRETTY_NAME="Kylin Linux Advanced Server V10 (Tercel)"
ANSI_COLOR="0;31"

查看架构

uname -i
aarch64

目录结构

.
├── apache-maven-3.6.2.tar.gz
├── Dockerfile
├── hadoop-2.7.7-src.tar.gz
└── jdk1.8.0_321.tar.gz

编写 dockerfile

# 定义一个 centos 7 的初始镜像,方便自定义编译环境
FROM centos:7
# 定义变量
## 定义工作目录
ARG work_dir=/usr/local# 定义容器的环境变量
ENV JAVA_HOME=${work_dir}/jdk1.8.0_321
## 我这里用的是 maven 3.6.2 版本,如果下载的版本和我的不一样,这里要修改
ENV MAVEN_HOME=${work_dir}/apache-maven-3.6.2
ENV PATH=${PATH}:${JAVA_HOME}/bin:${MAVEN_HOME}/bin# 定义进入容器的默认目录
WORKDIR ${work_dir}
# 配置 yum 源为 阿里源
## 安装编译 hadoop 所需的工具,清理安装包和缓存
RUN curl -O /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/Centos-7.repo && \yum install -y gcc gcc-c++ make cmake protobuf-* automake libtool zlib-devel openssl-devel && \yum clean all
# 复制 tar 包到镜像内
ADD ./jdk1.8.0_321.tar.gz ./
ADD ./apache-maven-3.6.2.tar.gz ./
ADD ./hadoop-2.7.7-src.tar.gz ./
# 整个脚本,让他睡十年
## docker 容器想要在后台常驻,需要有一个前台常驻进程
RUN echo '/usr/bin/sleep 315360000' > start.sh && \chmod +x start.sh
CMD ["/usr/bin/bash","start.sh"]

创建一个镜像

docker build -t hadoop:2.7.7 .

开始编译

先让容器在后台跑着

docker run -d --network host hadoop:2.7.7

进入容器

docker exec -it <容器id> bash

开始编译

cd hadoop-2.7.7-src
mvn package -e -X -Pdist,native -DskipTests -Dtar

整个编译时间长达 1小时22分钟(反正肯定一小时起步,至于时长,还是和机器性能以及网络有关)

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for Apache Hadoop Main 2.7.7:
[INFO]
[INFO] Apache Hadoop Main ................................. SUCCESS [14:57 min]
[INFO] Apache Hadoop Build Tools .......................... SUCCESS [11:03 min]
[INFO] Apache Hadoop Project POM .......................... SUCCESS [03:02 min]
[INFO] Apache Hadoop Annotations .......................... SUCCESS [ 54.759 s]
[INFO] Apache Hadoop Assemblies ........................... SUCCESS [  0.407 s]
[INFO] Apache Hadoop Project Dist POM ..................... SUCCESS [02:16 min]
[INFO] Apache Hadoop Maven Plugins ........................ SUCCESS [03:00 min]
[INFO] Apache Hadoop MiniKDC .............................. SUCCESS [07:35 min]
[INFO] Apache Hadoop Auth ................................. SUCCESS [03:06 min]
[INFO] Apache Hadoop Auth Examples ........................ SUCCESS [01:01 min]
[INFO] Apache Hadoop Common ............................... SUCCESS [08:37 min]
[INFO] Apache Hadoop NFS .................................. SUCCESS [  3.666 s]
[INFO] Apache Hadoop KMS .................................. SUCCESS [01:01 min]
[INFO] Apache Hadoop Common Project ....................... SUCCESS [  0.204 s]
[INFO] Apache Hadoop HDFS ................................. SUCCESS [02:13 min]
[INFO] Apache Hadoop HttpFS ............................... SUCCESS [ 29.157 s]
[INFO] Apache Hadoop HDFS BookKeeper Journal .............. SUCCESS [02:04 min]
[INFO] Apache Hadoop HDFS-NFS ............................. SUCCESS [  2.859 s]
[INFO] Apache Hadoop HDFS Project ......................... SUCCESS [  0.205 s]
[INFO] hadoop-yarn ........................................ SUCCESS [  0.205 s]
[INFO] hadoop-yarn-api .................................... SUCCESS [ 23.612 s]
[INFO] hadoop-yarn-common ................................. SUCCESS [03:06 min]
[INFO] hadoop-yarn-server ................................. SUCCESS [  0.207 s]
[INFO] hadoop-yarn-server-common .......................... SUCCESS [  6.124 s]
[INFO] hadoop-yarn-server-nodemanager ..................... SUCCESS [ 10.998 s]
[INFO] hadoop-yarn-server-web-proxy ....................... SUCCESS [  2.448 s]
[INFO] hadoop-yarn-server-applicationhistoryservice ....... SUCCESS [  4.626 s]
[INFO] hadoop-yarn-server-resourcemanager ................. SUCCESS [ 12.354 s]
[INFO] hadoop-yarn-server-tests ........................... SUCCESS [  3.492 s]
[INFO] hadoop-yarn-client ................................. SUCCESS [  3.898 s]
[INFO] hadoop-yarn-server-sharedcachemanager .............. SUCCESS [  2.501 s]
[INFO] hadoop-yarn-applications ........................... SUCCESS [  0.190 s]
[INFO] hadoop-yarn-applications-distributedshell .......... SUCCESS [  2.112 s]
[INFO] hadoop-yarn-applications-unmanaged-am-launcher ..... SUCCESS [  1.968 s]
[INFO] hadoop-yarn-site ................................... SUCCESS [  0.202 s]
[INFO] hadoop-yarn-registry ............................... SUCCESS [  3.535 s]
[INFO] hadoop-yarn-project ................................ SUCCESS [  3.945 s]
[INFO] hadoop-mapreduce-client ............................ SUCCESS [  0.360 s]
[INFO] hadoop-mapreduce-client-core ....................... SUCCESS [ 12.012 s]
[INFO] hadoop-mapreduce-client-common ..................... SUCCESS [  9.888 s]
[INFO] hadoop-mapreduce-client-shuffle .................... SUCCESS [  2.641 s]
[INFO] hadoop-mapreduce-client-app ........................ SUCCESS [  6.284 s]
[INFO] hadoop-mapreduce-client-hs ......................... SUCCESS [  3.903 s]
[INFO] hadoop-mapreduce-client-jobclient .................. SUCCESS [ 17.598 s]
[INFO] hadoop-mapreduce-client-hs-plugins ................. SUCCESS [  1.778 s]
[INFO] Apache Hadoop MapReduce Examples ................... SUCCESS [  3.951 s]
[INFO] hadoop-mapreduce ................................... SUCCESS [  2.957 s]
[INFO] Apache Hadoop MapReduce Streaming .................. SUCCESS [ 14.252 s]
[INFO] Apache Hadoop Distributed Copy ..................... SUCCESS [01:42 min]
[INFO] Apache Hadoop Archives ............................. SUCCESS [  1.917 s]
[INFO] Apache Hadoop Rumen ................................ SUCCESS [  3.753 s]
[INFO] Apache Hadoop Gridmix .............................. SUCCESS [  3.136 s]
[INFO] Apache Hadoop Data Join ............................ SUCCESS [  2.143 s]
[INFO] Apache Hadoop Ant Tasks ............................ SUCCESS [  1.645 s]
[INFO] Apache Hadoop Extras ............................... SUCCESS [  2.321 s]
[INFO] Apache Hadoop Pipes ................................ SUCCESS [  6.265 s]
[INFO] Apache Hadoop OpenStack support .................... SUCCESS [  3.007 s]
[INFO] Apache Hadoop Amazon Web Services support .......... SUCCESS [03:45 min]
[INFO] Apache Hadoop Azure support ........................ SUCCESS [ 24.236 s]
[INFO] Apache Hadoop Client ............................... SUCCESS [  7.014 s]
[INFO] Apache Hadoop Mini-Cluster ......................... SUCCESS [  0.844 s]
[INFO] Apache Hadoop Scheduler Load Simulator ............. SUCCESS [  3.275 s]
[INFO] Apache Hadoop Tools Dist ........................... SUCCESS [  7.215 s]
[INFO] Apache Hadoop Tools ................................ SUCCESS [  0.199 s]
[INFO] Apache Hadoop Distribution ......................... SUCCESS [ 29.403 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:22 h
[INFO] Finished at: 2022-04-17T04:51:48Z
[INFO] ------------------------------------------------------------------------

编译完成后的 tar 包文件在hadoop-dist/target/目录下

这篇关于ARM64环境利用 docker 编译 hadoop-2.7.7的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/984604

相关文章

ESP32 esp-idf esp-adf环境安装及.a库创建与编译

简介 ESP32 功能丰富的 Wi-Fi & 蓝牙 MCU, 适用于多样的物联网应用。使用freertos操作系统。 ESP-IDF 官方物联网开发框架。 ESP-ADF 官方音频开发框架。 文档参照 https://espressif-docs.readthedocs-hosted.com/projects/esp-adf/zh-cn/latest/get-started/index

C++工程编译链接错误汇总VisualStudio

目录 一些小的知识点 make工具 可以使用windows下的事件查看器崩溃的地方 dumpbin工具查看dll是32位还是64位的 _MSC_VER .cc 和.cpp 【VC++目录中的包含目录】 vs 【C/C++常规中的附加包含目录】——头文件所在目录如何怎么添加,添加了以后搜索头文件就会到这些个路径下搜索了 include<> 和 include"" WinMain 和

UnrealScriptIDE调试环境部署

先安装vs2010   再安装VSIsoShell.exe, 下载地址 https://pan.baidu.com/s/10kPNUuDGTbWXbz7Nos-1WA       fd3t   最后安装unside,下载地址 https://archive.codeplex.com/?p=uside  安装中间有一步选择Binary文件夹要选对路径。   安装好以后,启动 UDKDe

C/C++的编译和链接过程

目录 从源文件生成可执行文件(书中第2章) 1.Preprocessing预处理——预处理器cpp 2.Compilation编译——编译器cll ps:vs中优化选项设置 3.Assembly汇编——汇编器as ps:vs中汇编输出文件设置 4.Linking链接——链接器ld 符号 模块,库 链接过程——链接器 链接过程 1.简单链接的例子 2.链接过程 3.地址和

Windwos +vs 2022 编译openssl 1.0.2 库

一 前言 先说 结论,编译64位报错,查了一圈没找到解决方案,最后换了32位的。 使用qt访问web接口,因为是https,没有openssl库会报错 QNetworkReply* reply = qobject_cast<QNetworkReply*>(sender());if (reply){if (reply->error() == QNetworkReply::NoError

Ubuntu20.04离线安装Docker

1.下载3个docker离线安装包,下载网址: https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/ 2.把3个离线安装包拷贝到ubuntu本地执行以下命令 sudo dpkg -i containerd.io_1.4.6-1_amd64.deb sudo dpkg -i docker-ce-c

API-环境对象

学习目标: 掌握环境对象 学习内容: 环境对象作用 环境对象: 指的是函数内部特殊的变量this,它代表着当前函数运行时所处的环境。 作用: 弄清楚this的指向,可以让我们代码更简洁。 函数的调用方式不同,this指代的对象也不同。【谁调用,this就是谁】是判断this指向的粗略规则。直接调用函数,其实相当于是window.函数,所以this指代window。

利用Frp实现内网穿透(docker实现)

文章目录 1、WSL子系统配置2、腾讯云服务器安装frps2.1、创建配置文件2.2 、创建frps容器 3、WSL2子系统Centos服务器安装frpc服务3.1、安装docker3.2、创建配置文件3.3 、创建frpc容器 4、WSL2子系统Centos服务器安装nginx服务 环境配置:一台公网服务器(腾讯云)、一台笔记本电脑、WSL子系统涉及知识:docker、Frp

Docker启动异常

报错信息: failed to start daemon: Error initializing network controller: error creating default "bridge" network: cannot create network b8fd8c684f0ba865d4a13d36e5282fd694bbd37b243c7ec6c9cd29416db98d4b (d

Pycharm配置conda环境(解决新版本无法识别可执行文件问题)

引言: 很多小伙伴在下载最新版本的pycharm或者更新到最新版本后为项目配置conda环境的时候,发现文件夹目录中无法显示可执行文件(一般为python.exe),以下就是本人遇到该问题后试验和解决该问题的一些方法和思路。 一般遇到该问题的人群有两种,一种是刚入门对pycharm进行conda环境配置的小白(例如我),不熟悉相关环境配置的操作和过程,还有一种是入坑pycharm有段时间的老手