在docker容器中编译hadoop 3.1.0

优点:docker安装好之后可以一键部署编译环境,不用担心各种库不兼容等问题,编译失败率低。

Hadoop 3.1.0 的源代码目录下有一个 `start_build_env.sh** 的脚本,通过脚本会从Docker hub网站拉取hadoop-build镜像,然后在镜像中添加本地用户信息和环境变量等,最后运行Docker镜像并挂载本地目录。

docker跨平台的特性已经非常不错,最需要注意的一点在于:所有操作不要使用root用户也不要使用sudo。对docker和linux权限管理比较熟悉的话,也可以考虑修改脚本上添加用户的那一项,以及后面一系列的权限问题。

大致流程:

1. 安装docker

2. 更改用户所在的组(用来运行Docker命令)

docker为了保证安全,默认只有root用户和root用户组(某些发行版是docker用户组)能够运行,因此需要将当前用户添加到对应的用户组。

查看docker文件所在的用户组 ls -l /var/run/docker.sock

更改用户组
usermod -g username groupname

3. 添加docker的源

docker 修改镜像源地址或添加代理,避免拉取镜像时失败。

此处可百度,方法多且不复杂,daocloud、163等都可以考虑。

4. 运行 start_build_env.sh构建容器

下载Hadoop源码, ./start_build_env.sh

等待构建完成,这个主要看网速,需要下载一个多G的镜像。完成后会自动进入容器。

容器基于Ubuntu,编译相关的环境都已经安装好,vim等软件可以自行apt。

容器虚拟机挂载了当前用户目录下的.m2和当前的hadoop源代码位置,编译结果能够直接在docker外使用。

5. 容器中使用maven编译

简单的编译示例 mvn clean package -DskipTests -Pnative

可以在源代码目录执行,也可以在下面的目录执行。

详细的编译命令在 BUILDING.txt 中。

附几个Docker基本命令

docker ps 查看当前运行的容器,-a 选项能看到未运行的容器。
docker images 查看所有镜像
docker start container_id 启动容器,container_id在docker ps中可以看到,也可以使用container name。
docker exec -it container_id 进入运行中的容器

从容器中退出直接输入exit即可,退出后容器可能关闭。

在docker容器中编译hadoop 3.1.0的更多相关文章

  1. 如何在 Docker 容器中运行 Kali Linux 2.0

    https://linux.cn/article-6103-1.html Kali Linux 是一个对于安全测试人员和白帽的一个知名操作系统.它带有大量安全相关的程序,这让它很容易用于渗透测试.最近 ...

  2. 浏览器/外网访问docker container中的hadoop

    假设你制作了个docker的 hadoop的镜像,镜像名叫 hd_image,如果想在外网的浏览器中访问hadoop的50070和8088端口,则在启动镜像hd_image时, 脚本如下: docke ...

  3. Docker容器中运行ASP.NET Core

    在Linux和Windows的Docker容器中运行ASP.NET Core 译者序:其实过去这周我都在研究这方面的内容,结果周末有事没有来得及总结为文章,Scott Hanselman就捷足先登了. ...

  4. Docker容器中开始.NETCore之路

    一.引言 开始写这篇博客前,已经尝试练习过好多次Docker环境安装,.Net Core环境安装了,在这里替腾讯云做一个推广,假如我们想学习.练手.net core 或是Docker却苦于没有开发环境 ...

  5. Docker容器中开始.Net Core之路

    开始写这篇博客前,已经尝试练习过好多次Docker环境安装,.Net Core环境安装了,在这里替腾讯云做一个推广,假如我们想学习.练手.net core 或是Docker却苦于没有开发环境,服务器也 ...

  6. 无需安装 vsftpd , 直接使用 FTP 来管理 docker 容器中的文件

    无图无真相,先放个效果图:     背景 使用 docker 来跑一些服务很方便,但是有的时候想管理容器里面的文件却很麻烦 -- 一般常规做法有3种: 通过数据卷或数据卷容器的方式 启动容器的时候时候 ...

  7. 将netcore网站部署到docker容器中

    一.背景 最近一直在看docker的教程,基础知识看的差不多了.理论总要运用于实践,所以下面我们就来把最简单的一个netcore网站托管到docker容器中. 环境:1.docker for wind ...

  8. 在 docker 容器中捕获信号

    我们可能都使用过 docker stop 命令来停止正在运行的容器,有时可能会使用 docker kill 命令强行关闭容器或者把某个信号传递给容器中的进程.这些操作的本质都是通过从主机向容器发送信号 ...

  9. 隔离 docker 容器中的用户

    笔者在前文<理解 docker 容器中的 uid 和 gid>介绍了 docker 容器中的用户与宿主机上用户的关系,得出的结论是:docker 默认没有隔离宿主机用户和容器中的用户.如果 ...

随机推荐

  1. vue+iview 通过a标签实现文件下载

    vue+iview 通过a标签实现文件下载 方法一: 注意: 如果下载的文件放在本地目录下,一定要将模板文件放到 public 目录下,否则由于权限问题找不到文件 路径: 项目更目录-->pub ...

  2. svn提交时把node_modules忽略掉

    空白处右键>选中TortoiseSVN>设置(settings)>常规设置(General)>Subversion>编辑(edit)>在弹出的config文件中找g ...

  3. 数据结构与算法(周测3-Huffman树)

    判断题 1.Given a Huffman tree for N (≥2) characters, all with different weights. The weight of any non- ...

  4. 基于【 springBoot+jsoup】一 || 爬取全国行政区划数据

    一.代码演示 如果中途中断,可进行刷选过滤已拉取省份数据 /** * TODO * * @author kevin * @createTime 2019-11-18 19:37 */ @RestCon ...

  5. C# 水仙花数的实现 数据类型

    //int 和int类型计算得到的结果还是int类型 eg:int a = 371 / 100 % 10.一 371除以100得到的是3,而不是3.71.二 再用3%10,求余为3 namespace ...

  6. CI,CD理解

    一.什么是CI,CD ​ 当我们在谈论现代的软件编译和发布流程的时候,经常会听到CI 和CD这样的缩写短语.CI很容易理解,就是持续集成. ​ 但是CD既可以指代码持续交付,也可理解为代码持续部署.C ...

  7. springboot系列(十)springboot整合shiro实现登录认证

    关于shiro的概念和知识本篇不做详细介绍,但是shiro的概念还是需要做做功课的要不无法理解它的运作原理就无法理解使用shiro: 本篇主要讲解如何使用shiro实现登录认证,下篇讲解使用shiro ...

  8. Android笔记(二十) Activity中的跳转和值传递

    我们知道,一个APP是由若干个Activity组成的,那么各个Acitivity中肯定需要进行跳转以及传递数值以保证App的运行,现总结一下多个Activity之间的跳转和值传递. 显式Intent跳 ...

  9. php中long2ip和2iplong

    <?php $string=ip2long("127.0.0.1"); $ip=long2ip($string); echo $string; echo "< ...

  10. Mongodb创建用户Error: couldn’t add user: Use of SCRAM-SHA-256 requires undigested passwords

    解决方案:修改mechanisms加密方式为SCRAM-SHA-1 db.createUser({ user: "admin", pwd: "xxx", rol ...