1. 先从官方下载源码:源码下载地址:https://hadoop.apache.org/releases.html,下载 3.1.2 版本

2. 解压缩源码:tar xvf hadoop-3.1.2-src.tar.gz

3. 安装依赖(注:由于我本机环境不是从零开始安装的,部分步骤省略掉):

 3.1  安装并配置 java 环境

 3.2 安装并配置 cmake 环境, 可以参照:https://blog.csdn.net/baimafujinji/article/details/78588488

 3.3 安装并配置 protobuf 环境 ,可以参照:https://www.jianshu.com/p/0a70eef1bd4a

 3.4 安装并配置 openssl 环境:brew install openssl

4. 编译生成安装包:mvn package -Pdist,native -DskipTests=true -Dtar

在编码过程中遇到的问题总结:

问题1 :cmake 函数库变更引起的问题:

问题描述:

[WARNING] /Users/wyx/Downloads/hadoop-rel-release-3.1.1/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/utils/docker-util.c:1227:12: error: no matching function for call to 'getgrouplist'
[WARNING] int rc = getgrouplist(user, pw->pw_gid, groups, &ngroups);
[WARNING] ^~~~~~~~~~~~
[WARNING] /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/unistd.h:653:6: note: candidate function not viable: no known conversion from 'gid_t *' (aka 'unsigned int *') to 'int *' for 3rd argument
[WARNING] int getgrouplist(const char *, int, int *, int *);

修改 c 文件:

vim hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/native/container-executor/impl/utils/docker-util.c 中 getgrouplist函数调用的 groups参数,强转成(int *)

具体如下所示:

   int rc = getgrouplist(user, pw->pw_gid, (int *)groups, &ngroups);
if (rc < ) {
groups = (gid_t *) alloc_and_clear_memory(ngroups, sizeof(gid_t));
if (groups == NULL) {
fprintf(ERRORFILE, "Failed to allocate buffer for group lookup for user %s.\n", user);
exit(OUT_OF_MEMORY);
}
if (getgrouplist(user, pw->pw_gid, (int * )groups, &ngroups) == -) {
fprintf(ERRORFILE, "Fail to lookup groups for user %s.\n", user);
ret = ;
}
}

问题2:由于 openssl 环境变量引起的

问题描述:

[WARNING] CMake Error at /Applications/CMake.app/Contents/share/cmake-3.15/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
[WARNING] Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the
[WARNING] system variable OPENSSL_ROOT_DIR (missing: OPENSSL_INCLUDE_DIR)
[WARNING] Call Stack (most recent call first):
[WARNING] /Applications/CMake.app/Contents/share/cmake-3.15/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)
[WARNING] /Applications/CMake.app/Contents/share/cmake-3.15/Modules/FindOpenSSL.cmake:413 (find_package_handle_standard_args)
[WARNING] CMakeLists.txt:24 (find_package)
[WARNING]
[WARNING]
[WARNING] -- Configuring incomplete, errors occurred!
[WARNING] See also "/Users/xxx/local/hadoop-3.1.2-src/hadoop-tools/hadoop-pipes/target/native/CMakeFiles/CMakeOutput.log".

  

由于我本机之前装过 openssl,但配置不完全,解决方案如下:

1. 先查看 openssl 的安装目录:

解决方案:

(base) bogon:hadoop-3.1.-src johnnybai$ brew list openssl
/usr/local/Cellar/openssl/1.0.2o_1/.bottle/etc/ ( files)
/usr/local/Cellar/openssl/1.0.2o_1/bin/c_rehash
/usr/local/Cellar/openssl/1.0.2o_1/bin/openssl
/usr/local/Cellar/openssl/1.0.2o_1/include/openssl/ ( files)
/usr/local/Cellar/openssl/1.0.2o_1/lib/libcrypto.1.0..dylib
/usr/local/Cellar/openssl/1.0.2o_1/lib/libssl.1.0..dylib
/usr/local/Cellar/openssl/1.0.2o_1/lib/engines/ ( files)
/usr/local/Cellar/openssl/1.0.2o_1/lib/pkgconfig/ ( files)
/usr/local/Cellar/openssl/1.0.2o_1/lib/ ( other files)
/usr/local/Cellar/openssl/1.0.2o_1/share/man/ ( files)

2. 配置 openssl 环境变量

sudo vim /etc/profile
添加如下环境变量:
# openssl
export OPENSSL_ROOT_DIR="/usr/local/Cellar/openssl/1.0.2o_1"
export OPENSSL_INCLUDE_DIR="/usr/local/Cellar/openssl/1.0.2o_1/include"

编译成功之后,可以在 hadoop-3.1.2-src/hadoop-dist/target/ 目录下找到安装部署binary 文件: hadoop-3.1.2.tar.gz

注: 编译步骤,部分参照了 https://github.com/shawfdong/hyades/wiki/Building-Hadoop-from-source 的做法。




MacOS平台上编译 hadoop 3.1.2 源码的更多相关文章

  1. 64位centos 下编译 hadoop 2.6.0 源码

    64位os下为啥要编译hadoop就不解释了,百度一下就能知道原因,下面是步骤: 前提:编译源码所在的机器,必须能上网,否则建议不要尝试了 一. 下载必要的组件 a) 下载hadoop源码 (当前最新 ...

  2. Mac上编译并运行Android5.0源码

    下载.配置环境.build和运行参考的都是Android Source提供的文档,包括:Initializing a Build Environment,Downloading the Source和 ...

  3. mac OS X Yosemite 上编译hadoop 2.6.0/2.7.0及TEZ 0.5.2/0.7.0 注意事项

    1.jdk 1.7问题 hadoop 2.7.0必须要求jdk 1.7.0,而oracle官网已经声明,jdk 1.7 以后不准备再提供更新了,所以趁现在还能下载,赶紧去down一个mac版吧 htt ...

  4. Windows 10 上编译 Hadoop

    下载源码 源码下载地址(Source download):https://hadoop.apache.org/releases.html 这里以 2.9.2 为例,查看源码中的编译说明文件 BUILD ...

  5. 在linux操作系统上进行简单的C语言源码的gcc编译实验

    尝试在linux上用gcc 而非封装完好的codeblocks,vs等ide 来编译c和cpp源程序 首先查看我的gcc版本,我的是VM centos 自带的,没有的话得自行安装,安装上gcc就可以在 ...

  6. Hadoop学习笔记(9) ——源码初窥

    Hadoop学习笔记(9) ——源码初窥 之前我们把Hadoop算是入了门,下载的源码,写了HelloWorld,简要分析了其编程要点,然后也编了个较复杂的示例.接下来其实就有两条路可走了,一条是继续 ...

  7. win10+vs2008编译比特币1.0版源码总结

    https://zhuanlan.zhihu.com/p/25074960 https://zhuanlan.zhihu.com/p/25095222 总体上是参考这两个链接,感谢大神的分享,但是中间 ...

  8. 编译Docker<v1.9.0>源码和初级安装

    本文主要介绍了如何在POWER CPU处理器上编译和安装Docker服务.很多时候,我们都需要自己编译Docker源码,有的时候是由于自己的处理器没有对应的安装包,有的时候是由于当前的新版本还有发布, ...

  9. C#代码反编译 得到项目可运行源码

    C#代码反编译 得到项目可运行源码 摘自:http://www.cnblogs.com/know/archive/2011/03/15/1985026.html 谈到"C#代码反编译&quo ...

随机推荐

  1. Cython 的学习

    开发效率极高的 Python 一直因执行效率过低为人所诟病,Cython 由此诞生,特性介于 Python 和 C 语言之间. Cython 学习 1. Cython 是什么? 它是一个用来快速生成 ...

  2. WPF中 PropertyPath XAML 语法

    原文:WPF中 PropertyPath XAML 语法 PropertyPath 对象支持复杂的内联XAML语法用来设置各种各样的属性,这些属性把PropertyPath类型作为它们的值.这篇文章讨 ...

  3. WPF窗口继承实现统一风格的自定义窗口

    如何实现一个窗口的风格(style),让所有的窗口都继承这样同样的风格,包括标题栏,放大.缩小和关闭按钮. 那么,我们可不可以就建立一个Base窗口,然后将这个窗口的风格给设计好之后,所有的窗口都继承 ...

  4. R 语言基本操作(基本信息的查看、与本地文件系统交互、编译器版本升级)

    0. 信息及路径的查看 getwd() ⇒ 查看路径: setwd() ⇒ 设置路径: .libPaths() ⇒ R 语言库所在的位置: sessionInfo() ⇒ 查询版本及系统和库等信息: ...

  5. PHP采集类:Snoopy.class.php

    Snoopy是一个php采集类,用来模拟浏览器获取网页内容和发送表单. 下面是一些Snoopy特性: 容易抓取网页内容 容易抓取页面文本(去除HTML标签) 容易抓取网页内链接 支持代理抓取 支持基本 ...

  6. C# WPF QQ新消息托盘悬浮窗效果实现

    原文:C# WPF QQ新消息托盘悬浮窗效果实现 今天在做一个项目的时候需要这么一个效果,但是网上找了一会发现并没有现成的给我参考(复制),但是呢,我千(到)辛(处)万(抄)苦(袭)想(复)破(制)头 ...

  7. FMXUI - UI.Dialog 示例(比较漂亮)

    在 FMXUI 开源库,增加了 UI.Dialog 单元.此单元实现了跨平台的基础对话框组件.使用时引用 UI.Dialog 即可.如果需要自定义对话框的样式, 可以添加一个 TDialogStyle ...

  8. Expression Design与Blend制作滚动的小球动画教程

    原文:Expression Design与Blend制作滚动的小球动画教程 一,开发工具 Microsoft Expression Design & Blend 4.0 (3.0亦可). 这两 ...

  9. 傅里叶分析(matlab)

    一维信号的傅里叶变换:fft(t) 二维图像的傅里叶变换:fft2(t) fft2(x) ⇒ fft(fft(x)')' 0. 基础 f(t)=∑k=−∞∞αkeikt 1. frequency sp ...

  10. WPF 集合分组排序

    <Window x:Class="ViewExam.MainWindow"        xmlns="http://schemas.microsoft.com/w ...