详解Hadoop2.7.2 编译64位源码
作者:默默走开 发布时间:2023-08-29 13:41:59
一、环境准备
1.CentOS配置
最好是用新克隆的虚拟机 ,虚拟机内存设置大一点(我设置的4G),配置网络,主机名,关闭防火墙,关闭selinux
注意:采用root角色编译,减少文件夹权限出现问题
2.jar包准备(hadoop源码、JDK8、maven、ant 、protobuf)
(1)hadoop-2.7.2-src.tar.gz
(2)jdk-8u144-linux-x64.tar.gz
(3)apache-ant-1.9.9-bin.tar.gz(build工具,打包用的)
(4)apache-maven-3.0.5-bin.tar.gz
(5)protobuf-2.5.0.tar.gz(序列化的框架)
3.jar包安装(注意:所有操作必须在root用户下完成)
JDK
1.解压
tar -zxf jdk-8u141-linux-x64.tar.gz -C /export/compile
2.配置环境变量
vim /etc/profile
export JAVA_HOME=/export/compile/jdk1.8.0_141
export PATH=$PATH:$JAVA_HOME/bin
3.更新profile文件
source /etc/profile
4.验证安装是否成功
验证命令:jps 出现jps进程表示安装配置成功
2.Maven
1.解压&重命名
tar -zxf apache-maven-3.0.5-bin.tar.gz -C /export/compile
mv /export/compile/apache-maven-3.0.5-bin.tar.gz /export/compile/maven
2.修改配置文件
vim /export/compile/maven/conf/settings.xml
添加阿里云镜像地址:
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
3.配置环境变量
vim /etc/profile
export MAVEN_HOME=/export/compile/maven
export PATH=$PATH:$MAVEN_HOME/bin
4.更新profile文件
source /etc/profile
5.验证安装是否成功
验证命令:mvn -version
出现版本信息表示安装成功
3.ant
1.解压&重命名
tar -zxf apache-ant-1.9.9-bin.tar.gz -C /export/compile
mv apache-ant-1.9.9 ant
2.配置环境变量
vim /etc/profile
export ANT_HOME=/export/compile/ant
export PATH=$PATH:$ANT_HOME/bin
3.更新profile文件
source /etc/profile
4.验证安装是否成功
验证命令:ant -version 出现版本信息表示安装成功
4.glibc-headers
yum -y install glibc-headers
yum -y install gcc-c++
5.make和cmake
yum -y install make
yum -y install cmake
6.protobuf
1.解压&重命名&进入protobuf根目录
tar -zxf protobuf-2.5.0.tar.gz -C /export/compile
mv protobuf-2.5.0/ protobuf
cd /export/compile/protobuf
2.依次执行如下命令
1 ./configure
2 make
3 make check
4 make install
5 ldconfig
3.配置环境变量
vim /etc/profile
export LD_LIBRARY_PATH=/export/compile/protobuf
export PATH=$PATH:$LD_LIBRARY_PATH
4.更新profile文件
source /etc/profile
5.验证安装是否成功
验证命令:protoc --version
出现版本信息表示安装成功
7.安装openssl库
yum -y install openssl-devel
8.安装 ncurses-devel库
yum -y install ncurses-devel
二、编译源码
1.解压
tar -zxf hadoop-2.7.2-src.tar.gz -C /export/compile
2.进入hadoop源码主目录
/export/compile/hadoop-2.7.2-src
3.通过maven执行编译命令
mvn package -Pdist,native -DskipTests -Dtar
4.然后就是漫长的等待...(大约等待时间30分钟左右,最终成功是全部SUCCESS,如下图所示)
5.成功的64位hadoop包在/export/compile/hadoop-2.7.2-src/hadoop-dist/target
目录下
三、编译源码过程中常见的问题及解决方案
(1)MAVEN install时候JVM内存溢出
原因以及处理方式:在环境配置文件和maven的执行文件均可调整MAVEN_OPT的heap大小。
(详情查阅MAVEN 编译 JVM调优问题,如:http://outofmemory.cn/code-snippet/12652/maven-outofmemoryerror-method)
(2)编译期间maven报错
原因以及处理方式:可能网络阻塞问题导致依赖库下载不完整导致,多次执行命令(一次通过比较难):
mvn package -Pdist,nativeN -DskipTests -Dtar
(3)报ant、protobuf等错误
原因以及处理方式:插件下载未完整或者插件版本问题,最开始链接有较多特殊情况。
来源:https://blog.csdn.net/qq_43733123/article/details/104534926


猜你喜欢
- 比较好的地方就是js数组的操作,不重复的数组id显示,完美实现。<script language="JavaScript&q
- 1.线性与非线性回归线性回归 Linear Regression:两个变量之间的关系是一次函数关系的—&mdas
- URL 编码是什么东东呢?看看我从网上抄的定义: 引用: url编码是一种浏览器用来打包
- 前言很多开发同学对SQL优化如数家珍,却对MySQL架构一知半解。岂不是只见树叶,不见森林,终将陷入细节中不能自拔。今天就一块学习MySQL
- 简单的‘Hello World!'Python命令行假设你已经安装好了Python, 那么在Linux命令行输入:$python将直
- 方法一:#导入math包import math#定义点的函数class Point: def __init__(self,x=0
- 一、准备工作首先准备两张表用于演示:CREATE TABLE `student_info` ( `id` int NOT NUL
- 在WEB2.0这个词未出现之前,是没有所谓的WEB1.0之说的,那时候的互联网也是没有时代之分的,能上的网站不多,值得上的网站更不多,很多的
- # -*- coding:utf-8 -*-__author__ = 'walkskyer'import osimport
- 一、原理概述Query Cache就是把“查询返回的结果”缓存起来。但是,仅仅只是缓存“查询返回的结果”,其实是不准确的,Query Cac
- 以下是Python基础学习内容的学习笔记的全部内容,非常的详细,如果你对Python语言感兴趣,并且针对性的系统学习一下基础语言知识,下面的
- 在jupyternotebook下导入自己写的模块,有两点需要注意:1.要将自己写的模块编程xxx.py的形式,而不是.ipynb文件2.当
- python的子进程嘛,就是利用python打开一个子进程(当然像是一句废话),但是可能和我们理解的不太一样。一:如何理解?我们可能的理解:
- 一、创建一个进程要创建一个进程,最简单的方式是用一个目标函数实例化一个Process对象,然后与threading一样调用start()函数
- ⛳️ 实战场景本篇博客为大家再次带来 Go 语言的基础知识,这次要学习的内容是 Go 中的文件操作。打开关闭文件在 Go 中操作文件,首先要
- pyquery的使用一、pyquery的介绍使用pyquery需要在Web和了解jQuery的基础上,使用该CSS选择器。二、pyquery
- 前言在微信小程序开发中,navigator 用来实现页面路由功能,比如 A页面 中点击页面打开B页面1 navigator 默认方式打开新的
- 在读取中文的情况下,通常会遇到一些编码的问题,但是首先需要了解目前的编码方式是什么,然后再用decode或者encode去编码和解码,下面是
- OK,今天我们来学习一下 python 中的日志模块,日志模块也是我们日后的开发工作中使用率很高的模块之一,接下来们就看一看今天具体要学习日
- 位置参数这是一个求等差数列和的函数,使用必需要传入一个参数n,这就是位置参数def sum(n): sum=0 &