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 *)

具体如下所示:

1384   int rc = getgrouplist(user, pw->pw_gid, (int *)groups, &ngroups);
1385   if (rc < 0) {
1386     groups = (gid_t *) alloc_and_clear_memory(ngroups, sizeof(gid_t));
1387     if (groups == NULL) {
1388       fprintf(ERRORFILE, "Failed to allocate buffer for group lookup for user %s.\n", user);
1389       exit(OUT_OF_MEMORY);
1390     }
1391     if (getgrouplist(user, pw->pw_gid, (int * )groups, &ngroups) == -1) {
1392       fprintf(ERRORFILE, "Fail to lookup groups for user %s.\n", user);
1393       ret = 2;
1394     }
1395   }

问题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.2-src johnnybai$ brew list openssl
/usr/local/Cellar/openssl/1.0.2o_1/.bottle/etc/ (8 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/ (74 files)
/usr/local/Cellar/openssl/1.0.2o_1/lib/libcrypto.1.0.0.dylib
/usr/local/Cellar/openssl/1.0.2o_1/lib/libssl.1.0.0.dylib
/usr/local/Cellar/openssl/1.0.2o_1/lib/engines/ (12 files)
/usr/local/Cellar/openssl/1.0.2o_1/lib/pkgconfig/ (3 files)
/usr/local/Cellar/openssl/1.0.2o_1/lib/ (4 other files)
/usr/local/Cellar/openssl/1.0.2o_1/share/man/ (1680 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 的做法。

转载于:https://www.cnblogs.com/johnny666888/p/11054253.html

MacOS平台上编译 hadoop 3.1.2 源码相关推荐

  1. 在Ubuntu上编译opencv 2.4.13源码支持android平台操作步骤

    之前在https://blog.csdn.net/fengbingchun/article/details/96430706中编译过opencv源码用于海思平台,这里通过修改脚本编译opencv 2. ...

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

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

  3. Ubuntu14.04上编译指定版本的protobuf源码操作步骤

    Google Protobuf的介绍可以参考 http://blog.csdn.net/fengbingchun/article/details/49977903 ,这里介绍在Ubuntu14.04上 ...

  4. 轻松实现各种文档格式转换,doc转pdf、doc转png图片、pdf转png图片,可以实现Windows、Linux、MacOS平台上部署(附源码和说明)

    轻松实现各种文档格式转换,doc转pdf.doc转png图片.pdf转png图片,可以实现Windows.Linux.MacOS平台上部署,可以通过命令行.shell脚本.python等方式调用. 实 ...

  5. 在 macOS 平台上启动 MATLAB

    目录 在 macOS 平台上启动 MATLAB 从 Applications 文件夹启动 从终端窗口启动 在 macOS 平台上启动 MATLAB 选择以下一种方式启动 MATLAB®. 从 Appl ...

  6. 《深入理解Android内核设计思想(第2版)(上下册)》之Android源码下载及编译

    本文摘自人民邮电出版社异步社区<深入理解Android内核设计思想(第2版)(上下册)> 购书地址:http://item.jd.com/12212640.html 试读地址:http:/ ...

  7. 《深入理解Android内核设计思想(第2版)(上下册)》之Android源码下载及编译...

    本文摘自人民邮电出版社异步社区<深入理解Android内核设计思想(第2版)(上下册)> 购书地址:item.jd.com/12212640.ht- 试读地址:www.epubit.com ...

  8. 基于JAVA线上远程教学及自主学平台的设计与实现计算机毕业设计源码+系统+mysql数据库+lw文档+部署

    基于JAVA线上远程教学及自主学平台的设计与实现计算机毕业设计源码+系统+mysql数据库+lw文档+部署 基于JAVA线上远程教学及自主学平台的设计与实现计算机毕业设计源码+系统+mysql数据库+ ...

  9. asp毕业设计——基于asp+access的校园网上购物平台设计与实现(毕业论文+程序源码)——网上购物平台

    基于asp+access的校园网上购物平台设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+access的校园网上购物平台设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦. ...

  10. 实测物联网平台云监控WEB设备iot系统源码

    本期给大家带来一套物联网平台云监控WEB设备iot的源码. 运行环境 服务器宝塔面板 PHP 5.6 Mysql 5.6 Linux Centos7以上 文字安装教程 下载源码,宝塔添加一个站点,创建 ...

最新文章

  1. Priority VS Bandwidth
  2. 高效代码审查:来自前质疑者的9个建议
  3. 《卓有成效的程序员》----读书笔记一
  4. hdu 4549 M斐波那契数列(费马小定理 + 二分快速幂 + 矩阵快速幂)
  5. CPU所含有的寄存器
  6. springboot配置定时任务及常用的cron表达式
  7. 使用halcon结合机械XY轴对相机进行9点标定
  8. 怎么把word里面虚线变成实线_弱电不会制作cad图,花3分钟看完,只要会用WORD保证你能画出来...
  9. python返回负数_在Python中三角函数sin返回负数
  10. iPhone:文本设计的注意事项
  11. 豆米--基于豆瓣API的WP7书籍搜索工具开源啦!
  12. (转)Bootstrap 之 Metronic 模板的学习之路 - (1)总览
  13. 网络_连接路由器的每台电脑使用固定IP的方法(TP-LINK)
  14. 单片机原理及应用实验报告
  15. 微信小程序、小游戏反编译获取源码
  16. gcc编译部分编译选项
  17. 2021年度总结:天赐良机,曲线入行的大龄程序员?
  18. 开始编写寄几的 CSS 基础库
  19. 联通链:5G时代的信任链
  20. 残留的Ramnit埋伏中国热门网站后台

热门文章

  1. 勒索软件Locky最新传播载体分析——中文版Office危在旦夕
  2. 蔚来汽车为国人长脸,牌照和品牌将是今后的两大重点
  3. [cocos2dx]斗地主制作之洗牌算法
  4. 菜鸟学EJB(二)——在同一个SessionBean中使用@Remote和@Local
  5. celery expires 让celery任务具有时效性
  6. 设置TOMCAT SESSIONID 字符长度和生成算法
  7. java 中的随机数
  8. 微信中location.reload失效
  9. sessionid如何产生?由谁产生?保存在哪里?
  10. loj 6085.「美团 CodeM 资格赛」优惠券